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)