Responsi 1 STA543 Analisis Data Kategorik
Penyajian Data Kategorik dalam Grafik dan Peubah Acak Diskret (Data Kategorik)
A. Penyajian Data Kategorik dalam Grafik
Dalam analisis data kategorik, analisis yang menarik dilakukan adalah analisis tabulasi silang/tabel kontingensi. Dalam software R tabulasi silang bisa disusun dari data raw (data individu) atau bisa diinput secara langsung tabulasi silang tersebut. Cara pertama yaitu membentuk tabulasi silang dari data raw yang diilustrasikan dengan file Data1 sebagai berikut:
setwd("D:\\Kuliah S2 IPB\\Bahan Kuliah\\Semester 2 SSD 2020\\STA543 ADK\\Responsi\\R\\UTS\\")
Data1 <- read.csv("Data P8.csv",sep=";",header=TRUE)
summary(Data1)## Responden J.Kelamin T.Pendidikan T.Pendapatan
## Min. : 1.00 Min. :0.00 Min. :1.00 Min. :1.0
## 1st Qu.:13.25 1st Qu.:1.00 1st Qu.:1.25 1st Qu.:3.0
## Median :25.50 Median :1.00 Median :2.00 Median :4.0
## Mean :25.50 Mean :0.82 Mean :2.48 Mean :3.6
## 3rd Qu.:37.75 3rd Qu.:1.00 3rd Qu.:4.00 3rd Qu.:5.0
## Max. :50.00 Max. :1.00 Max. :4.00 Max. :6.0
##deskripsi melalui tabel dan grafik
#membuat tabel kontingensi dari data
table1<-table(Data1$J.Kelamin,Data1$T.Pendidikan)
table1##
## 1 2 3 4
## 0 0 3 0 6
## 1 13 11 9 8
rowSums(table1)## 0 1
## 9 41
colSums(table1)## 1 2 3 4
## 13 14 9 14
#membuat tabel proporsi dari data
table2<-prop.table(table(Data1$J.Kelamin,Data1$T.Pendidikan))
table2##
## 1 2 3 4
## 0 0.00 0.06 0.00 0.12
## 1 0.26 0.22 0.18 0.16
#membuat tabel 3 dimensi atau lebih
table3<-ftable(Data1$J.Kelamin,Data1$T.Pendidikan,Data1$T.Pendapatan)
table3## 1 2 3 4 5 6
##
## 0 1 0 0 0 0 0 0
## 2 0 1 1 0 1 0
## 3 0 0 0 0 0 0
## 4 1 0 3 1 1 0
## 1 1 2 1 1 2 3 4
## 2 0 1 4 4 2 0
## 3 1 2 3 1 1 1
## 4 2 1 0 2 2 1
Comment: Tabel 1 dan Tabel 2 merupakan tabel kontingensi 2 arah sedangkan Tabel 3 merupakan tabel 3 arah.
Cara kedua membuat tabulasi silang/tabel kontingensi adalah dengan menginput secara langsung dalam bentuk matriks. Yaitu sebagai berikut:
Data Contoh:
Suatu survei dilakukan terhadap pengguna dan bukan pengguna jasa keuangan. Berikut ini tersaji tabulasi silang antara pekerjaan responden dengan skor tingkat kemampuannya dalam pengelolaan keuangan. Bagaimanakah hubungan antar kedua peubah ini?
ilustrasi memasukkan data
survei<-matrix(data=c(30,3,44,41,9,62,34,4,74,48,10,48,23,6,14),ncol=5,nrow=3,byrow=FALSE,dimnames=list(c("Rendah","Sedang","Tinggi"),c("Pertanian","PNS","Business owner","Profesional","Lainnya")))
survei## Pertanian PNS Business owner Profesional Lainnya
## Rendah 30 41 34 48 23
## Sedang 3 9 4 10 6
## Tinggi 44 62 74 48 14
Tabulasi silang/tabel kontingensi yang telah diinput dapat disajikan dalam bentuk grafik.
Ada beberapa bentuk grafik yang bisa disajikan dari tabulasi silang/tabel kontingensi:
Grouped Dot Chart
Dot chart merupakan grafik titik yang menunjukkan nilai frekuensi atau proporsi dari suatu kriteria kategorik dari tabulasi silang atau tabel kontingensi.
Dalam membuat Dot Chart harus ditentukan kriteria/peubah apa yang menjadi dasar pengelompokan dan apakah disajikan dalam bentuk nilai frekuensi atau proporsi. Berikut disajikan beberapa alternatif penyajian Dot Chart dengan menggunakan data Survei yang merupakan tabel dua arah antara peubah jenis pekerjaan dan kemampuan pengelolaan keuangan:
#pengelompokan berdasarkan pekerjaan
dotchart(survei,xlab="Frequency",xlim=c(0,100))#pengelompokkan berdasarkan kemampuan pengelolaan keuangan
dotchart(t(survei),xlab="Frequency",xlim=c(0,100))#dot chart proporsi
n<-sum(survei)
propsurvei<-survei/n
dotchart(propsurvei,xlab="Relative Frequency", xlim=c(0,0.3))#dot chart proporsi
n<-sum(survei)
propsurvei<-survei/n
dotchart(propsurvei,xlab="Relative Frequency", xlim=c(0,0.3))#dotchart proporsi per jenis pekerjaan
jumkerja <-colSums(survei)
proppekerjaan<-survei/rbind(jumkerja,jumkerja,jumkerja)
dotchart(proppekerjaan,xlab="Conditional Relative Frequency",xlim=c(0,1))Grouped Dot Whisker Chart
Grouped Dot Whisker Chart merupakan pengembangan dari Group Dot Chart dengan nilai proporsi dari data tabulasi silang. Pada Grouped Dot Whisker Chart data proporsi ditambahkan dengan informasi selang kepercayaan dari proporsi yaitu nilai proporsi ditambahkan dengan informasi margin of error. Dimana margin of error merupakan perkalian antara standar deviasi dari proporsi dengan rumus Var=PQ/n (Sd merupakan akar dari Var) dengan nilai Z alpha/2 dimana alpha ditentukan 5 persen sehingga Z alpha/2 sama dengan Z 0.025.
Rumus Selang Kepercayaan:
P +/- Margin of error
P +/- Z 0.025 * Sd
#group dot whisker chart
n<-sum(survei)
propsurvei<-survei/n
dotchart(propsurvei,xlab="Proportion",lcolor="white",xlim=c(0,0.3))
sd<-sqrt((1.-propsurvei)*propsurvei/n)
sd<-sd*qnorm(0.975)
hlo<-propsurvei-sd
hhi<-propsurvei+sd
titik<-c(propsurvei[,5],propsurvei[,4],propsurvei[,3],propsurvei[,2],propsurvei[,1])
kiri <-c(hlo[,5],hlo[,4],hlo[,3],hlo[,2],hlo[,1])
kanan<-c(hhi[,5],hhi[,4],hhi[,3],hhi[,2],hhi[,1])
dlx<-cbind(kiri,titik,kanan)
ys<-c(1:3,6:8,11:13,16:18,21:23)
dly<-cbind(ys,ys,ys)
ldl<-length(survei)
for (i in 1:ldl) lines(dlx[i,],dly[i,])Two Way Dot Chart
Pada penyajian Grouped Dot Chart pada no 1 dilakukan secara bersarang dan alternatif lain penyajian Grouped Dot Chart adalah dilakukan secara bersilang.
library(lattice)
#penyajian bersarang
dotplot(survei,xlab="Frequency",as.table=TRUE,groups=FALSE,stack=FALSE,layout=c(1,5),scales=list(alternating=3))#penyajian bersilang
dotplot(survei,xlab="Frequency",as.table=TRUE,groups=FALSE,stack=FALSE,layout=c(5,1),scales=list(alternating=3))Side by side Bar Chart
Side by side bar chart merupakan grafik batang yang menunjukkan nilai frekuensi untuk kriteria tertentu dalam tabulasi silang atau tabel kontingensi. Kategori tersebut disajikan dalam grafik batang dengan penggolongan kriteria suatu peubah ke samping.
#bar plot frekuensi
barplot(survei,horiz=TRUE,xlab="Frequency",ylab="Pekerjaan",beside=TRUE,cex.names=0.6,xlim=c(0,100),col=c(6,7,4))
legend("topright", legend= rownames(survei), fill=c(6,7,4),ncol = 2,cex = 0.5)#bar plot proporsi
barplot(propsurvei,horiz=TRUE,xlab="Relative Frequency",ylab="Pekerjaan",beside=TRUE,cex.names=0.6,xlim=c(0,0.3),col=c(5,10,15))
legend("topright", legend= rownames(propsurvei), fill=c(5,10,15),ncol = 2,cex = 0.5)Side by side Stacked Bar Chart
Side by side stacked bar chart merupakan salah satu bentuk penyajian data kategorik tabulasi silang atau tabel kontingensi. Sejalan dengan grafik batang pada no 4 namun kriteria kategori disajikan bertumpuk (stacked).
barplot(survei,horiz=TRUE,xlab="Frequency",ylab="Pekerjaan",beside=FALSE,cex.names=0.6,xlim=c(0,150),col=c(3,4,6))
legend("topright", legend= rownames(survei), fill=c(3,4,6),ncol = 2,cex = 0.5)Mosaic Chart
Mosaic chart merupakan grafik untuk menampilkan data kategorik dalam tabulasi silang/tabel kontingensi yang sejenis dengan side by side stacked bar chart. Perbedaan antara side by side stacked bar chart dengan mosaic chart adalah jika pada stacked bar chart total frekuensi jika mosaic chart totalnya adalah 100 persen. Atau mosaic chart merupakan stacked bar chart untuk proporsi terhadap total kategori suatu peubah. Misal pada contoh adalah proporsi terhadap total jenis pekerjaan.
mosaicplot(t(survei),main=" ", las=1,cex=0.75,color=c(2,4,7))B. Peubah Acak Data Diskret (Data Kategorik)
Sebaran Bernoulli
Karakteristik dari sebaran Bernoulli adalah:
Terdiri dari sekali percobaan. Dimana hasil dari percobaan tersebut terdapat dua kemungkinan hasil yaitu sukses dan gagal.
Peluang sukses P (0<P<1)
y=1 jika sukses dan y=0 jika gagal
Bernoulli merupakan kasus khusus dari Binomial dengan besarnya percobaan hanya satu (n=1).
Berikut merupakan sintaks untuk membangkitkan data dari populasi mengikuti sebaran Bernoulli dengan peluang tertentu:
#membangkitkan 100 data dari populasi Bernoulli P=0.2
x <- rbinom(100,1,0.2)
barplot(table(x))#membangkitkan 100 data dari populasi Bernoulli P=0.5
y <- rbinom(100,1,0.5)
barplot(table(y))Comments: Terlihat bahwa data bangkitan antara P=0.2 dan P=0.5 terlihat berbeda dan pada P=0.5 cenderung seimbang antara y=1 dan y=0. Nilai P pada sebaran Bernoulli merupakan parameter dari sebaran tersebut yang menentukan sebaran dari data.
Sebaran Binomial
Sebaran Binomial merupakan sebaran dari beberapa kejadian Bernoulli yang saling bebas. Adapun karakteristik dari Sebaran Binomial adalah sebagai berikut:
Terdiri dari beberapa percobaan sejenis
Tiap percobaan terdiri dari dua kemungkinan hasil: sukses dan gagal
Tiap percobaan saling bebas
Peluang sukses (P) sama untuk semua percobaan
Peubah acak y, merupakan jumlah sukses dari beberapa percobaan yang mengikuti sebaran Binomial dengan parameter n dan p
y dapat bernilai y=0,1,…,n
Berikut merupakan sintaks untuk membangkitkan data dari sebaran Binomial:
#membangkitkan 100 data dari populasi Binomial dengan n=8 dan P=0.5
x <-rbinom(100,8,0.5)
barplot(table(x))#membangkitkan 1000 data dari populasi Binomial dengan n=8 dan P=0.5
x <-rbinom(1000,8,0.5)
barplot(table(x))Comments: Berdasarkan diagram garis di atas diperoleh informasi bahwa semakin besar data yang dibangkitkan maka akan cenderung membentuk grafik yang simetris (cenderung membentuk bentuk lonceng/ kurva normal)
Dengan fungsi pada R pbinom akan menghasilkan nilai peluang kumulatif dari sebaran Binomial. Berikut merupakan contoh kasus dan penyelesaian dengan pbinom:
Misalkan terdapat 12 nasabah asuransi di suatu tempat. Diketahui bahwa proporsi nasabah telat bayar polis ialah 1/6. Jika antar nasabah saling bebas tentukanlah peluang bahwa terdapat 7 sampai 9 nasabah yang telat bayar polis!
X~banyaknya nasabah asuransi yang telat membayar
X~binomial(n=12 p=1/6)
P(7<=X<=9) = P(X<=9)- P(X<=6)
pbinom (9, size=12, prob =1/6)-pbinom (6, size=12, prob =1/6)## [1] 0.001291758
sum(dbinom(7:9,12,1/6))## [1] 0.001291758
Sebaran Poisson
Sebaran Poisson merupakan sebaran yang menggambarkan karakteristik data pada kejadian yang jarang terjadi pada suatu waktu tertentu atau suatu tempat tertentu. Contohnya jumlah kesalahan ketik pada suatu halaman, kedatangan bus jurusan kota A pada waktu tertentu.
Berikut merupakan sintaks untuk membangkitkan data dari sebaran Poisson dengan parameter tertentu(lamda):
#membangkitkan 1000 data dari populasi Poisson dengan lamda=1
x <- rpois(1000,1)
barplot(table(x))#membangkitkan 1000 data dari populasi Poisson dengan lamda=3
x <- rpois(1000,3)
barplot(table(x))#membangkitkan 1000 data dari populasi Poisson dengan lamda=6
x <- rpois(1000,6)
barplot(table(x))Comments: Besaran parameter Lamda menentukan kemencengan dari grafik data. Semakin kecil lamda maka akan semakin menceng ke kanan.
Dengan fungsi pada R ppois akan menghasilkan nilai peluang kumulatif dari sebaran Poisson. Berikut merupakan contoh kasus dan penyelesaian dengan ppois:
Misalkan di suatu kota secara rata rata terdapat 2 mesin ATM yang rusak dalam 1 tahun:
Berapakah peluang tidak ada mesin ATM rusak dalam 1 tahun ke depan
Berapakah peluang terdapat 2 mesin ATM rusak dalam 2 tahun ke depan
Solusi:
Misal X banyaknya mesin ATM yang rusak pada waktu 1 tahun
X~poisson (lamda=1)
- P(X=0)
#kumulatif dari sebaran poisson pada X=0 sama dengan pmf dari X=0
ppois(0,lambda=1)## [1] 0.3678794
dpois(0,1)## [1] 0.3678794
- Misal Y banyaknya mesin ATM yang rusak dalam waktu 2 tahun maka Y~poisson (lamda=2)
#selisih dari kumulatif sebaran Poisson pada x=2 dan x=1
diff(ppois(c(1,2),lambda=2))## [1] 0.2706706
dpois(1,2)## [1] 0.2706706
Sebaran Geometrik
Sebaran geometrik merupakan percobaan Bernoulli yang diperlukan hingga muncul Sukses pertama (P(S)=p).
Berikut sintaks untuk membangkitkan data dari populasi yang mengikuti sebaran geometrik dengan parameter P tertentu.
#membangkitkan 1000 data dari populasi Geometrik dengan P=0.2
x <- rgeom(1000,0.2)
barplot(table(x))#membangkitkan 1000 data dari populasi Geometrik dengan P=0.5
x <- rgeom(1000,0.5)
barplot(table(x))#membangkitkan 1000 data dari populasi Geometrik dengan P=0.8
x <- rgeom(1000,0.8)
barplot(table(x))Comments: Perbedaan pada nilai parameter dari sebaran geometrik berpengaruh pada lebar nilai x yang keluar. Semakin besar nilai P maka nilai x akan semakin sempit atau semakin sedikit nilai x yang muncul. Namun secara grafik terlihat bahwa bangkitan data dari sebaran geometrik selalu menceng ke kanan.
Untuk menghitung peluang dari suatu peubah acak yang mengikuti sebaran Geometrik digunakan fungsi pgeom untuk mendapatkan nilai kumulatif dari sebaran geometrik. Berikut merupakan contoh kasus dari sebaran geometrik:
Misalkan X banyaknya bulan yang dilalui sampai Pak Yus menang undian.
X~geometrik (p=0.45)
- P(X=3)
diff(pgeom(c(2,3),prob=0.45))## [1] 0.07486875
dgeom(3,0.45)## [1] 0.07486875
- P(X>4)
pgeom(4,prob=0.45,lower.tail = FALSE)## [1] 0.05032844
sum(dgeom(5:12,0.45))## [1] 0.04990702
Sebaran Hipergeometrik
Jika pada sebaran Binomial, nilai P setiap pengulangan diasumsikan sama. Pada sebaran Hipergeometrik nilai P tidak sama dan biasa terjadi pada percontohan tanpa pengembalian (sampling without replacement) dari populasi terhingga (finite).
Berikut adalah sintaks untuk membangkitkan data dari populasi yang berdistribusi hipergeometrik dengan parameter m, n, dan k. Parameter m merupakan banyaknya karakteristik A, n banyaknya karakteristik B, dan k banyaknya yang diambil.
#membangkitkan 1000 data dari populasi Hypergeometrik dengan m=50, n=50, k=10
x <- rhyper(1000,50,50,10)
barplot(table(x))#membangkitkan 1000 data dari populasi Hypergeometrik dengan m=20, n=80, k=10
x <- rhyper(1000,20,80,10)
barplot(table(x))Comments: Besaran parameter menentukan sebaran dari data bangkitan, semakin besar m dan n akan menentukan kemencengan dari data bangkitan. Jika nilai m dan n cenderung seimbang maka data dari bangkitan cenderung simetris.
Untuk menghitung peluang dari sebaran Hypergeometrik menggunakan fungsi dhyper(fungsi massa peluang). Berikut adalah contoh kasus dari hypergeometrik:
Misalkan X banyaknya nasabah kategori A yang terpilih.
Maka X~hipergeometrik(N=100,m=60,n=20)
P(X=10)
dhyper(10,m=60,n=40,k=20)## [1] 0.1192361
Mahasiswa Pascasarjana Statistika dan Sains Data, IPB University, reniamelia@apps.ipb.ac.id↩︎