Halaman ini digunakan untuk menunjukkan aplikasi kode program yang saya buat dan saya lampirkan dalam artikel berjudul Metode Cepat Tapi Tak Lengkap.

Bagian Pertama

Berikut ini adalah kode-program yang ada dalam file yang saya lampirkan dalam halaman tersebut di atas. Kita perlu me-run kode tersebut terlebih dulu sebelum dapat menggunakannya. Untuk me-run kode tersebut pembaca tinggal mencopy-paste kode tersebut dalam console R dan menekan “Enter”.

#################################
#Bab 5: Metode Cepat Tak Lengkap#
#################################
#     Urutan Peringkat          #
#################################

urut.peringkat=function(x,g,dikotomi=T){
  x=as.matrix(x)
  n=dim(x)[1]
  ni=dim(x)[2]
  if(is.null(g)|length(g)!=n){stop("Ada kekeliruan dalam input variabel kelompok")}
  if(length(unique(g))!=2){stop("Variabel kelompok tidak memiliki dua nilai")}
  if(min(g)!=0|max(g)!=1){warning("Kode angka kelompok bukan 0 dan 1.
Kelompok dengan kode angka terkecil dianggap focal group,
kode angka terbesar dianggap reference group")}
  g[g==min(g)]=0
  g[g==max(g)]=1
  if(dikotomi==T){
    p.r=colMeans(x[g==1,])
    p.f=colMeans(x[g==0,])
    res=cbind(p.r,rank(p.r),p.f,rank(p.f))
    dimnames(res)=list(1:ni,c("p Reference Group","Urutan p Reference Group","p Focal Group","Urutan p Focal Group"))
  }else{
    kat=sort(unique(c(x)))
    nk=length(kat)
    p.r=matrix(NA,nrow=ni,ncol=nk)
    p.f=matrix(NA,nrow=ni,ncol=nk)
    for(i in 1:ni){
      for(j in 1:nk){
        p.r[i,j]=length(which(x[g==1,i]==kat[j]))
        p.f[i,j]=length(which(x[g==0,i]==kat[j]))
      }
    }
    p.r=cbind(p.r/rowSums(p.r),colMeans(x[g==1,]),rank(colMeans(x[g==1,])))
    dimnames(p.r)=list(1:ni,c(kat,"Mean Referensi","Urutan Mean Referensi"))
    p.f=cbind(p.f/rowSums(p.f),colMeans(x[g==0,]),rank(colMeans(x[g==0,])))
    dimnames(p.f)=list(1:ni,c(kat,"Mean Fokal","Urutan Mean Fokal"))
    res=cbind(p.r,p.f)
  }
  return(res)
  }

############################
#  Metode Kelompok Skor    #
############################

klp.skor=function(x,g,ga=5){
  x=as.matrix(x)
  tot=rowSums(x)
  p=seq(1/ga,1,1/ga)
  q.r=q.f=c(min(tot),quantile(tot,probs=p))
  ni=dim(x)[2]
  n=dim(x)[1]

  kat=sort(unique(c(x)))
  nk=length(kat)
  g.skor=function(xit,tot,kat,nk){
    p.r=matrix(NA,ncol=ga,nrow=nk)
    p.f=matrix(NA,ncol=ga,nrow=nk)
    for(i in 1:ga){
      for(j in 1:nk){
        p.r[j,i]=length(xit[g==1&tot>q.r[i]&tot<=q.r[i+1]&xit==kat[j]])
        p.f[j,i]=length(xit[g==0&tot>q.f[i]&tot<=q.f[i+1]&xit==kat[j]])
      }
    }
    p.r=p.r/rep(colSums(p.r),each=nk)
    dimnames(p.r)=list(kat,p)
    p.f=p.f/rep(colSums(p.f),each=nk)
    dimnames(p.f)=list(kat,p)
    p.rf=rbind(p.f,p.r)
    p.rf[is.nan(p.rf)]=0
    return(p.rf)
  }
  p.all=array(NA,dim=c(nk*2,ga,ni))
  for(i in 1:ni){
    p.all[,,i]=g.skor(x[,i],tot,kat,nk)
  }
  dimnames(p.all)=list(c(paste('fokal',kat),paste('referensi',kat)),round(p,2),paste("item",1:ni))
  list("Jumlah kelompok"=ga,"Jumlah Kategori"=nk,"Hasil"=p.all)
}

plot.klp.skor=function(h,no.item=1){
  ni=dim(h$Hasil)[3]
  ga=dim(h$Hasil)[2]
  nk=dim(h$Hasil)[1]/2
  kat=dimnames(h$Hasil)[[1]]
  plot(1:h$'Jumlah kelompok',seq(0,1,length.out=h$`Jumlah kelompok`),type='n',
       xaxt='n',xlab="Kelompok",ylab="Tingkat Kesulitan",main=paste("Item",no.item),
       xlim=c(1,h$`Jumlah kelompok`+.5),ylim=c(0,1.2))
  for(i in 1:(nk*2)){
  lines(1:h$'Jumlah kelompok',h$Hasil[i,,no.item],type='b',
        pch=ceiling(i/2),cex=1.2,col=2*(ceiling(i/2)),lwd=2)
  text(h$`Jumlah kelompok`+0.25,h$Hasil[i,h$`Jumlah kelompok`,no.item],labels=paste("skor=",kat[i]),
       col=2*ceiling(i/2),cex=0.8)
  }
  legend('topleft',legend=c("Kelompok Fokal","Kelompok Referensi"),pch=c(1,2),col=c(2,4),cex=0.8,
         lwd=c(2,2))
  axis(1,at=1:ga)
}

Bagian Kedua

Setelah program di-run, kita memanggil data yang akan dianalisis dan menyimpannya dalam objek bernama hasiltes.

hasiltes=read.table(file.choose(),header=T)

Dalam file yang digunakan, kolom 1 hingga 10 merupakan data hasil tes sementara kolom 11 merupakan informasi mengenai dua kelompok yang akan dibandingkan. Oleh karena itu kita perlu menuliskan baris program berikut untuk memilah keduanya.

kelompok=hasiltes[,11]
skortes=hasiltes[,1:10]

Kemudian kita melakukan analisis Urutan Peringkat Item dengan mengetikkan:

urut.peringkat(skortes,kelompok)
##    p Reference Group Urutan p Reference Group p Focal Group
## 1               0.04                      1.0          0.10
## 2               0.08                      2.0          0.20
## 3               0.24                      4.0          0.26
## 4               0.22                      3.0          0.28
## 5               0.34                      5.0          0.40
## 6               0.48                      6.0          0.42
## 7               0.50                      7.0          0.48
## 8               0.58                      8.5          0.56
## 9               0.58                      8.5          0.64
## 10              0.70                     10.0          0.62
##    Urutan p Focal Group
## 1                     1
## 2                     2
## 3                     3
## 4                     4
## 5                     5
## 6                     6
## 7                     7
## 8                     8
## 9                    10
## 10                    9

Untuk melakukan analisis dengen Metode Kelompok Skor, kita mengetikkan:

hasil=klp.skor(skortes,kelompok,ga=4)

Perlu dicatat bahwa dalam perintah di atas, hasil analisis disimpan dalam objek bernama hasil agar dapat digunakan untuk menampilkan grafik. Perintah ga=4 merupakan perintah untuk membagi subjek secara keseluruhan menjadi 4 kelompok skor.

Untuk menampilkan hasil analisis kita cukup mengetikkan nama objek hasil tadi.

hasil
## $`Jumlah kelompok`
## [1] 4
## 
## $`Jumlah Kategori`
## [1] 2
## 
## $Hasil
## , , item 1
## 
##                   0.25        0.5      0.75   1
## fokal 0     1.00000000 0.95454545 0.6666667 0.8
## fokal 1     0.00000000 0.04545455 0.3333333 0.2
## referensi 0 0.95652174 1.00000000 0.9000000 1.0
## referensi 1 0.04347826 0.00000000 0.1000000 0.0
## 
## , , item 2
## 
##                   0.25       0.5      0.75   1
## fokal 0     0.92307692 0.7727273 0.7777778 0.6
## fokal 1     0.07692308 0.2272727 0.2222222 0.4
## referensi 0 0.91304348 0.8181818 1.0000000 1.0
## referensi 1 0.08695652 0.1818182 0.0000000 0.0
## 
## , , item 3
## 
##                   0.25       0.5      0.75   1
## fokal 0     0.84615385 0.6818182 0.5555556 1.0
## fokal 1     0.15384615 0.3181818 0.4444444 0.0
## referensi 0 0.95652174 0.7272727 0.5000000 0.4
## referensi 1 0.04347826 0.2727273 0.5000000 0.6
## 
## , , item 4
## 
##                   0.25        0.5      0.75   1
## fokal 0     0.92307692 0.68181818 0.5555556 0.6
## fokal 1     0.07692308 0.31818182 0.4444444 0.4
## referensi 0 0.78260870 0.90909091 0.7000000 0.6
## referensi 1 0.21739130 0.09090909 0.3000000 0.4
## 
## , , item 5
## 
##                  0.25       0.5      0.75   1
## fokal 0     0.5384615 0.7727273 0.6666667 0.0
## fokal 1     0.4615385 0.2272727 0.3333333 1.0
## referensi 0 0.8260870 0.7272727 0.3000000 0.4
## referensi 1 0.1739130 0.2727273 0.7000000 0.6
## 
## , , item 6
## 
##                  0.25       0.5      0.75   1
## fokal 0     0.7692308 0.5000000 0.5555556 0.4
## fokal 1     0.2307692 0.5000000 0.4444444 0.6
## referensi 0 0.7391304 0.5454545 0.2000000 0.0
## referensi 1 0.2608696 0.4545455 0.8000000 1.0
## 
## , , item 7
## 
##                  0.25       0.5      0.75   1
## fokal 0     0.6923077 0.5454545 0.4444444 0.0
## fokal 1     0.3076923 0.4545455 0.5555556 1.0
## referensi 0 0.6086957 0.3636364 0.5000000 0.2
## referensi 1 0.3913043 0.6363636 0.5000000 0.8
## 
## , , item 8
## 
##                  0.25       0.5      0.75   1
## fokal 0     0.6923077 0.3181818 0.3333333 0.4
## fokal 1     0.3076923 0.6818182 0.6666667 0.6
## referensi 0 0.5217391 0.2727273 0.6000000 0.0
## referensi 1 0.4782609 0.7272727 0.4000000 1.0
## 
## , , item 9
## 
##                  0.25       0.5      0.75   1
## fokal 0     0.6153846 0.2727273 0.2222222 0.2
## fokal 1     0.3846154 0.7272727 0.7777778 0.8
## referensi 0 0.4782609 0.4545455 0.3000000 0.2
## referensi 1 0.5217391 0.5454545 0.7000000 0.8
## 
## , , item 10
## 
##                  0.25       0.5      0.75   1
## fokal 0     0.3846154 0.5000000 0.2222222 0.0
## fokal 1     0.6153846 0.5000000 0.7777778 1.0
## referensi 0 0.4782609 0.1818182 0.0000000 0.2
## referensi 1 0.5217391 0.8181818 1.0000000 0.8

Untuk menampilkan grafik yang menggambarkan proporsi subjek dengan skor tertentu untuk suatu item (dalam contoh misalnya item nomor 1) dalam tiap kelompok, kita mengetikkan:

plot.klp.skor(hasil,no.item=1)