Peubah Kategorik

Peubah kategorik atau disebut juga peubah kualitatif merupakan peubah yang nilainya ditetapkan menurut kategori tertentu. Peubah kategorik bersifat terputus atau diskret sehingga dapat dipadankan secara tepat satu per satu ke bilangan asli. Skala pengukuran yang termasuk peubah kategorik adalah nominal (penggolongan) dan ordinal (pemeringkatan). Contoh peubah kualitatif antara lain: jenis kelamin (1. Laki-laki dan 2. Perempuan), status perkawinan (1. Belum kawin, 2. Kawin, 3. Cerai Hidup, dan 4. Cerai Mati), dan kelas pendapatan (1. Rendah, 2. Sedang, dan 3. Tinggi).

A. Sajian Tabel Peubah Kategorik

Sajian peubah kategorik dalam bentuk tabel dapat menggunakan tabel kontingensi dan tabel proporsi.

Input Data Eksternal

File data yang tersimpan pada direktori kerja dapat di-input pada R dengan menggunakan salah satu fungsi berikut:

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data1 <- read.table("Data P8.txt", header = TRUE) %>% select(-Responden)
data2 <- readr::read_csv("Data P8.csv") %>% select(-Responden)
## Parsed with column specification:
## cols(
##   Responden = col_double(),
##   J.Kelamin = col_double(),
##   T.Pendidikan = col_double(),
##   T.Pendapatan = col_double()
## )
data3 <- foreign::read.spss("Data P8.sav", to.data.frame = TRUE) %>% select(-Responden)
## re-encoding from UTF-8
data4 <- readxl::read_excel("Data P8.xlsx") %>% select(-Responden)
  • %>%: operator x%>%f dapat diterjemahkan sebagai f(x) dengan library(dplyr)
  • read.table: fungsi untuk membaca data dalam format .txt
  • read_csv: fungsi untuk membaca data dalam format .csv dengan library(readr)
  • read,spss: fungsi untuk membaca data dalam format .sav dengan library(foreign)
  • read_excel: fungsi untuk membaca data dalam format .xlsx dengan library(readxl)

Tabel Kontingensi (Tabel Frekuensi Dua Arah)

Data yang akan digunakan adalah data1.

attach(data1)
data1
##    J.Kelamin T.Pendidikan T.Pendapatan
## 1          1            1            4
## 2          1            3            6
## 3          1            2            4
## 4          1            2            5
## 5          1            4            4
## 6          1            4            1
## 7          1            3            3
## 8          0            4            3
## 9          1            1            5
## 10         1            2            5
## 11         1            2            2
## 12         1            3            5
## 13         0            4            5
## 14         1            4            4
## 15         1            3            3
## 16         1            3            4
## 17         0            4            4
## 18         1            1            6
## 19         1            2            3
## 20         0            4            3
## 21         1            1            6
## 22         1            1            2
## 23         1            3            3
## 24         1            1            5
## 25         1            2            3
## 26         1            2            3
## 27         0            2            5
## 28         1            3            2
## 29         1            1            6
## 30         1            4            2
## 31         1            2            3
## 32         1            1            4
## 33         1            3            2
## 34         1            1            6
## 35         1            3            1
## 36         1            2            4
## 37         1            1            3
## 38         1            4            1
## 39         1            4            5
## 40         0            4            1
## 41         1            4            6
## 42         1            2            4
## 43         0            2            2
## 44         1            1            1
## 45         1            2            4
## 46         0            4            3
## 47         0            2            3
## 48         1            4            5
## 49         1            1            5
## 50         1            1            1
summary(data1)
##    J.Kelamin     T.Pendidikan   T.Pendapatan
##  Min.   :0.00   Min.   :1.00   Min.   :1.0  
##  1st Qu.:1.00   1st Qu.:1.25   1st Qu.:3.0  
##  Median :1.00   Median :2.00   Median :4.0  
##  Mean   :0.82   Mean   :2.48   Mean   :3.6  
##  3rd Qu.:1.00   3rd Qu.:4.00   3rd Qu.:5.0  
##  Max.   :1.00   Max.   :4.00   Max.   :6.0
  • attach: membaca peubah pada dataframe secara global
  • summary: menampilkan ringkasan statistik dari data

Tabel kontingensi yang disajikan adalah tingkat Pendidikan menurut Jenis Kelamin.

table1 <- table(J.Kelamin, T.Pendidikan)
table1
##          T.Pendidikan
## J.Kelamin  1  2  3  4
##         0  0  3  0  6
##         1 13 11  9  8
  • table: membuat tabel frekuensi

Tabel Proporsi

Tabel proporsi yang disajikan adalah tingkat Pendidikan menurut Jenis Kelamin.

table2 <- prop.table(table1) 
table2
##          T.Pendidikan
## J.Kelamin    1    2    3    4
##         0 0.00 0.06 0.00 0.12
##         1 0.26 0.22 0.18 0.16
prop.table(table1, 1) %>% round(2) 
##          T.Pendidikan
## J.Kelamin    1    2    3    4
##         0 0.00 0.33 0.00 0.67
##         1 0.32 0.27 0.22 0.20
prop.table(table1, 2) %>% round(2) 
##          T.Pendidikan
## J.Kelamin    1    2    3    4
##         0 0.00 0.21 0.00 0.43
##         1 1.00 0.79 1.00 0.57
  • prop.table(table1, 1): membuat tabel proporsi dari tabel kontingensi table1 menurut baris
  • prop.table(table1, 2): membuat tabel proporsi dari tabel kontingensi table1 menurut kolom
  • round: menentukan banyaknya angka desimal di belakang koma

Tabel Frekuensi Tiga Arah (3-Way Frequency Table)

table3 <- ftable(J.Kelamin, T.Pendidikan, T.Pendapatan)
table3
##                        T.Pendapatan 1 2 3 4 5 6
## J.Kelamin T.Pendidikan                         
## 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
  • ftable: membuat tabel kontingensi yang memuat setiap kombinasi dari level yang ada pada peubah

B. Sajian Grafik Peubah Kategorik

Sajian grafis peubah kategorik yang dapat digunakan adalah sebagai berikut: • The Grouped Dot Chart • The Grouped Dot Whisker Chart • The Two Way Dot Chart • The Side by Side Bar Chart • The Side by Side Bar Whisker Chart • The Side by Side Stacked Bar Chart • The Mosaic Chart

Ilustrasi Sajian Grafik Peubah Kategorik

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.

Input Data

survei<- matrix(data=c(30,3,44,
                       41,9,62,
                       34,4,74,
                       48,10,48,
                       23,6,14),
              nrow=3,ncol=5,
              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

The Grouped Dot Chart

# Pengelompokan Menurut Pekerjaan
dotchart(survei,xlab="Frequency",xlim=c(0,100))

# Pengelompokan Menurut Kemampuan Pengelolaan Keuangan
dotchart(t(survei),xlab="Frequency",xlim=c(0,100))

# Sajian Proporsi untuk Pengelompokan Menurut Pekerjaan
n <- sum(survei)
propsurvei<- survei/n
dotchart(propsurvei,xlab="Relative Frequency", xlim=c(0,0.20))

# Sajian Proporsi Dihitung dari Pekerjaan untuk Pengelompokan Menurut Pekerjaan
jumkerja <- colSums(survei)
proppekerjaan <- survei/rbind(jumkerja,jumkerja,jumkerja)
dotchart(proppekerjaan,xlab="Conditional Relative Frequency",xlim=c(0,0.8))

# Sajian Proporsi Dihitung dari Kemampuan Pengelolaan Keuangan untuk Pengelompokan Menurut Kemampuan Pengelolaan Keuangan
jumrkeu <- rowSums(survei)
proprkeu <- t(survei)/rbind(jumrkeu,jumrkeu,jumrkeu,jumrkeu,jumrkeu)
dotchart(proprkeu,xlab="Conditional Relative Frequency",xlim=c(0,0.4))

The Grouped Dot Whisker Chart

Sajian grafik untuk inferensia lebih tepat menggunakan proporsi yang didampingi dengan margin of error.

n <- sum(survei)
propsurvei <- survei/n

dotchart(propsurvei,xlab="Proportion",lcolor="white",xlim=c(0,0.25))

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,])

The Two Way Dot Chart

Alternatif sajian Dot Chart tidak secara tersarang melainkan bersilang.

library(lattice)
dotplot(survei,xlab="Frequency",ylab="Eye Color",as.table=TRUE,groups=FALSE, stack=FALSE,layout=c(1,5),scales=list(alternating=3))

dotplot(survei,xlab="Frequency",ylab="Eye Color",as.table=TRUE, groups=FALSE,stack=FALSE,layout=c(5,1),scales=list(alternating=3))

The Side by Side Stacked Bar Chart

barplot(survei,horiz=TRUE,xlab="Frequency",ylab="Pekerjaan",legend = rownames(survei),beside=FALSE,cex.names=0.6,xlim=c(0,150),col=c(2,5,8))

The Mosaic Chart

mosaicplot(t(survei),main=" ", las=1,cex=0.75,color=c(2,5,8))

c. Peubah Acak

Sebaran Bernoulli

par(mfrow=c(1,2))

x <- rbinom(100,1,0.2)
barplot(table(x),main="p=0.2")

y <- rbinom(100,1,0.5)
barplot(table(y),main="p=0.5")

Sebaran Binomial

par(mfrow=c(1,2))
x <- rbinom(100,8,0.5)
barplot(table(x),main="n=100")
y <- rbinom(1000,8,0.5)
barplot(table(y),main="n=1000")

Sebaran Binomial

par(mfrow=c(1,2))
x <- rbinom(100,8,0.5)
barplot(table(x),main="n=100")
y <- rbinom(1000,8,0.5)
barplot(table(y),main="n=1000")

Ilustrasi Binomial:

Misalkan terdapat 12 nasabah asuransi di suatu tempat. Diketahui bahwa proporsi nasabah telat bayar polis ialah 1/6. Jika antarnasabah saling bebas tentukanlah peluang bahwa terdapat 7 sampai 9 nasabah yang telat bayar polis?

Jawaban: • X banyaknya nasabah asuransi yang telat membayar • X ~ binomial(n=12, p=1/6)

P(7≤X≤9)

pbinom (9, size=12, prob =1/6) - pbinom (6, size=12, prob =1/6)
## [1] 0.001291758

Sebaran Poisson

par(mfrow=c(1,3))
x <- rpois(1000,1)
barplot(table(x), main="Poisson (1)")
y <- rpois(1000,3)
barplot(table(y),main="Poisson (3)")
z <- rpois(1000,6)
barplot(table(z),main="Poisson (6)")

Ilustrasi Poisson:

Misalkan di suatu kota secara rata-rata terdapat 2 mesin ATM yang rusak dalam 1 tahun. a. Berapakah peluang tidak mesin ATM rusak dalam 1 tahun ke depan? b. Berapakah peluang terdapat 2 mesin ATM rusak dalam 2 tahun ke depan?

Jawaban: a. • Misalkan: X= banyaknya mesin atm yang rusak dalam waktu 1 tahun • maka X ~ Poisson(λ=1)

P(X=0)

ppois(0,lambda=1)
## [1] 0.3678794
  1. • Misalkan: Y=banyaknya mesin ATM rusak dalam waktu 2 tahun • maka Y ~ Poisson(λ=2)

P(Y=2)

diff (ppois(c(1,2),lambda=2))
## [1] 0.2706706

Sebaran Geometrik

par(mfrow=c(1,3))
x <- rgeom(1000,0.2)
barplot(table(x), main="Geometrik (0.2)")
y <- rgeom(1000,0.5)
barplot(table(y),main="Geometrik (0.5)")
z <- rgeom(1000,0.8)
barplot(table(z),main="Geometrik (0.8)")

Ilustrasi Geometrik:

Misalkan suatu bank melakukan pengambilan undian berhadiah untuk setiap bulan Pak Yus adalah nasabah bank tersebut Jika peluang keberhasilan Pak Yus memperoleh hadiah undian tersebut ialah 0.45.

  1. Berapakah peluang Pak Yus mendapatkan hadiah undian pada bulan ke-3
  2. Berapakah peluang Pak Yus mendapatkan hadian undian minimal pada bulan ke-5

Jawaban: • Misalkan X= Banyaknya bulan yang dilalui sampai Pak Yus menang undian • Maka X ~ Geometrik (p=0.45)

  1. P(X=3)
diff (pgeom(c(2,3),prob=0.45))
## [1] 0.07486875
  1. P(X≥5) = P(X>4)
pgeom(4,prob=0.45,lower.tail = FALSE)
## [1] 0.05032844

Sebaran Hipergeometrik

par(mfrow=c(1,2))
x <- rhyper(1000,50,50,10)
barplot(table(x), main="Hypergeometrik (1000,50,10)")
y <- rhyper(1000,20,80,10)
barplot(table(y),main="Hypergeometrik (1000,20,10)")

Ilustrasi Hipergeometrik:

Misalkan terdapat 100 orang nasabah pada suatu bank dengan 2 kategori yaitu kategori A dan B dengan masing masing berisi 60 dan 40 orang nasabah.Pada bank tersebut akan dilakukan pemilihan 20 nasabah secara acak untuk dijadikan responden suatu survei evaluasi. Berapakah peluang bahwa terpilih 10 orang nasabah kategori A dan 10 orang nasabah kategori B?

Jawaban: • Misalkan X= Banyaknya nasabah kategori A yang terpilih • Maka X ~ Hypergeometrik (N=100,K=60,n=20)

P(X=10)

dhyper(10,m=60,n=40,k=20)
## [1] 0.1192361