Modul 7 Analisis Hubungan Korelatif: Korelasi Variabel Nominal dan Ordinal
Setelah mempelajari modul ini, Anda diharapkan dapat:
- mampu menghasilkan koefisien korelasi variabel di tingkat nominal dengan perangkat lunak komputer STP-9.2
- mampu menghasilkan koefisien korelasi variabel di tingkat ordinal dengan perangkat lunak komputer STP-10.2
7.1 Pendahuluan
Analisis korelasi adalah salah satu teknik analisis yang termasuk ke dalam lingkup statistika bivariat, statistika yang analisisnya melibatkan dua variabel sekaligus. Pada praktikum-praktikum sebelumnya kita hanya melibatkan satu variabel saja, misalnya:
-
pada praktikum ke-2, kita mengaplikasikan persentase hanya pada variabel
Jenis.Kelamin,Fakultas,Tingkat.Semester,Uang.Saku, ataujenis.tempat.tinggalsaja, tetapi tidak menghubungkannya satu sama lain,data.ubl |> tbl_summary(include = c(Jenis.Kelamin, Fakultas, Tingkat.Semester, Uang.Saku, jenis.tempat.tinggal)) |> as_flex_table() -
pada praktikum ke-3, kita membuat histogram untuk variabel
Umursajahistogram <- ggplot(data.ubl.cleaned) + geom_histogram(mapping = aes(x = Umur), binwidth = 1, fill = "darkseagreen", color = "white") + labs( title = "Distribusi Umur Mahasiswa", x = "Umur (Tahun)", y = "Frekuensi" ) + theme_minimal() histogram pada praktikum-praktikum tentang analisis statistik inferensial, kita hanya tertarik pada proporsi atau rata-rata suatu variabel saja, yang pastinya tunggal.
Dalam praktikum ini kita akan mempraktikkan analisis korelasi pada dua variabel secara bersamaan. Ketika kita tertarik pada analisis untuk dua variabel secara bersamaan, artinya kita sedang menganalisis sebuah keterkaitan atau sebuah hubungan. Dalam praktikum ini, hubungan itu disebut korelasi.
Korelasi yang akan kita pelajari adalah korelasi pada pasangan variabel dengan tingkat pengukuran nominal dan juga ordinal.
7.2 Pustaka (Libraries) yang Diperlukan
Seperti biasa, kita perlu memuat pustaka (libraries) yang diperlukan dalam pengolahan data kita. Beberapa pustaka baru harus kita siapkan untuk analisis korelasi ini, di antaranya adalah rcompanion, RCPA3, dan vcdExtra. Untuk memuat tabel silang kita akan gunakan pustaka gtsummary kembali seperti pada praktikum ke-2.
library(tidyverse)
library(readr)
library(gtsummary)
library(rcompanion)
library(RCPA3)
library(vcdExtra)
library(DescTools)Untuk mengecek apakah pustaka-pustaka tersebut sudah terpasang, kita bisa menggunakan perintah berikut:
installed.packages("tidyverse")
installed.packages("readr")
installed.packages("gtsummary")
installed.packages("rcompanion")
installed.packages("RCPA3")
installed.packages("vcdExtra")
installed.packages("DescTools")Perhatikan dengan seksama bahwa perintah ini mengandung akhiran “ed” di akhir kata “install”. Perintah ini sangat berbeda dengan install.packages() yang biasa kita gunakan untuk memasang pustaka.
7.3 Memuat Dataset
Kita akan menggunakan dataset keempat kampus di Kota Bandar Lampung dan sekitarnya sebagai bahan. Tulis ulang dan jalankan baris perintah berikut untuk mengolah data keempat kampus
# Membaca data
data_mahasiswa <- read_csv2("datasets/Data Praktikum 06.csv")7.4 Mengatur Faktor untuk Variabel Kategoris
Setelah membaca data, kita perlu mengatur variabel-variabel nominal dan ordinal dengan mengatur nilai-nilainya berupa factor.
Namun sebelum itu, kita akan membuat vektor-vektor untuk kita aplikasikan menjadi factor dengan memanfaatkan group_by dan summarize yang berasal dari pustaka dplyr.
# ---------------------------
# MEMBUAT FAKTOR UNTUK KAMPUS
# ---------------------------
# Meringkas data berdasarkan kolom Kampus PT
faktor_kampus <- data_mahasiswa |>
group_by(kampus = Kampus_PT) |>
summarize(jumlah = n())
# Membuat vektor untuk faktor Kampus PT dari kolom nama Kampus
faktor_kampus <- faktor_kampus$kampus
# ---------------------------
# MEMBUAT FAKTOR UNTUK FAKULTAS
# ---------------------------
# Meringkas data berdasarkan kolom Fakultas
faktor_fakultas <- data_mahasiswa |>
group_by(fakultas = Fakultas) |>
summarize(jumlah = n())
# Membuat vektor untuk faktor Fakultas dari kolom nama fakultas
faktor_fakultas <- faktor_fakultas$fakultas
# ---------------------------
# MEMBUAT FAKTOR UNTUK PROGRAM STUDI
# ---------------------------
# Meringkas data berdasarkan kolom Prodi
faktor_prodi <- data_mahasiswa |>
group_by(prodi = Prodi) |>
summarize(jumlah = n())
# Membuat vektor untuk faktor Prodi dari kolom nama Prodi
faktor_prodi <- faktor_prodi$prodi
# ---------------------------
# MEMBUAT FAKTOR UNTUK JENIS KELAMIN
# ---------------------------
# Meringkas data berdasarkan kolom Jenis Kelamin
faktor_jk <- data_mahasiswa |>
group_by(jk = `Jenis Kelamin`) |>
summarize(jumlah = n())
# Membuat vektor untuk faktor Jenis Kelamin dari kolom nama Jenis Kelamin
faktor_jk <- faktor_jk$jk
# ---------------------------
# MEMBUAT FAKTOR UNTUK TINGKAT SEMESTER
# ---------------------------
# Meringkas data berdasarkan kolom Tingkat Semester
faktor_semester <- data_mahasiswa |>
group_by(semester = `Tingkat Semester`) |>
summarize(jumlah = n())
# Membuat vektor faktor Tingkat Semester dari kolom Tingkat Semester
faktor_semester <- faktor_semester$semester
# ---------------------------
# MEMBUAT FAKTOR UNTUK UANG SAKU
# ---------------------------
# Meringkas data berdasarkan kolom Uang Saku
faktor_uang_saku <- data_mahasiswa |>
group_by(uang = `Uang Saku`) |>
summarize(jumlah = n())
# Memperbaiki urutan uang saku
# Menukar urutan level 1 dengan level 4 pada faktor uang saku
faktor_uang_saku$uang[c(1, 4)] <- faktor_uang_saku$uang[c(4, 1)]
faktor_uang_saku$jumlah[c(1, 4)] <- faktor_uang_saku$jumlah[c(4, 1)]
# Menukar urutan level 2 dengan level 4 pada faktor uang saku
faktor_uang_saku$uang[c(2, 4)] <- faktor_uang_saku$uang[c(4, 2)]
faktor_uang_saku$jumlah[c(2, 4)] <- faktor_uang_saku$jumlah[c(4, 2)]
# Menukar urutan level 3 dengan level 4 pada faktor uang saku
faktor_uang_saku$uang[c(3, 4)] <- faktor_uang_saku$uang[c(4, 3)]
faktor_uang_saku$jumlah[c(3, 4)] <- faktor_uang_saku$jumlah[c(4, 3)]
# Membuat vektor faktor Tingkat Uang Saku dari kolom Uang Saku
faktor_uang_saku <- faktor_uang_saku$uang
# ---------------------------
# MEMBUAT FAKTOR UNTUK KENDARAAN UTAMA
# ---------------------------
# Meringkas data berdasarkan kolom Kendaraan Utama
faktor_kendaraan_utama <- data_mahasiswa |>
group_by(kendaraan = `kendaraan utama`) |>
summarize(jumlah = n())
# Membuat vektpr faktor untuk kendaraan utama dari kolom 'kendaraan'
faktor_kendaraan_utama <- faktor_kendaraan_utama$kendaraan
# ---------------------------
# MEMBUAT FAKTOR JENIS TEMPAT TINGGAL
# ---------------------------
# Meringkas data berdasarkan kolom Jenis Tempat Tinggal
faktor_jenis_tempat_tinggal <- data_mahasiswa |>
group_by(tempat_tinggal = `jenis tempat tinggal`) |>
summarize(jumlah = n())
# Membuat vektor faktor untuk jenis tempat tinggal berdasarkan kolom Jenis Tempat Tinggal
faktor_jenis_tempat_tinggal <- faktor_jenis_tempat_tinggal$tempat_tinggalSetelah vektor-vektor variabel kategoris tersebut selesai, barulah selanjutnya kita bisa mengatur factor untuk setiap variabel kategoris.
data_mahasiswa <- data_mahasiswa |>
mutate(
Kampus_PT = factor(Kampus_PT, levels = faktor_kampus),
`Jenis Kelamin` = factor(`Jenis Kelamin`, levels = faktor_jk),
Fakultas = factor(Fakultas, levels = faktor_fakultas),
Prodi = factor(Prodi, levels = faktor_prodi),
`Tingkat Semester` = factor(`Tingkat Semester`,
levels = faktor_semester,
ordered = TRUE
), # Variabel ordinal
`Uang Saku` = factor(`Uang Saku`,
levels = faktor_uang_saku,
ordered = TRUE
), # Variabel ordinal
`kendaraan utama` = factor(`kendaraan utama`,
levels = faktor_kendaraan_utama
),
`jenis tempat tinggal` = factor(`jenis tempat tinggal`,
levels = faktor_jenis_tempat_tinggal
)
)Kita dapat memeriksa hasil pekerjaan kita dengan perintah glimpse.
# Memeriksa hasil pengaturan factor
glimpse(data_mahasiswa)## Rows: 1,557
## Columns: 22
## $ Kampus_PT <fct> ITERA, ITERA, ITERA, ITERA, ITERA, ITERA, IT…
## $ `Nomor urut` <dbl> 17, 211, 342, 42, 56, 254, 267, 289, 330, 25…
## $ `Jenis Kelamin` <fct> Perempuan, Perempuan, Perempuan, Perempuan, …
## $ Umur <dbl> 20, 20, 22, 21, 22, 22, 21, 21, 20, 23, 19, …
## $ Fakultas <fct> FTIK, FTIK, FTI, FTIK, FTIK, FTIK, FTIK, FTI…
## $ Prodi <fct> Perencanaan Wilayah dan Kota, Perencanaan Wi…
## $ `Tingkat Semester` <ord> Semester 3-4, Semester 5-6, Semester 7-8, Se…
## $ `Uang Saku` <ord> "1 - 2 Jt", "2,1 - 3 Jt", "2,1 - 3 Jt", "2,1…
## $ `jumlah mobil` <dbl> 1, 0, 3, 3, 1, 3, 3, 3, 3, 2, 1, 0, 3, 2, 2,…
## $ `jumlah motor` <dbl> 0, 1, 2, 3, 0, 2, 2, 3, 2, 2, 0, 1, 1, 2, 1,…
## $ `jumlah sepeda` <dbl> 1, 1, 3, 3, 0, 2, 3, 4, 2, 2, 1, 0, 1, 2, 1,…
## $ `kendaraan utama` <fct> Sepeda motor pribadi, Mobil pribadi, Mobil p…
## $ `jenis tempat tinggal` <fct> Kos sendiri, Rumah pribadi, Rumah pribadi, R…
## $ jarak <dbl> 3.47, 4.88, 3.09, 5.46, 3.70, 6.18, 4.87, 5.…
## $ `biaya sepekan` <dbl> 400, 280, 225, 200, 200, 200, 200, 200, 200,…
## $ `Jumlah Perjalanan Senin` <dbl> 2, 4, 2, 0, 4, 0, 3, 4, 2, 0, 1, 4, 2, 0, 3,…
## $ `Jumlah Perjalanan Selasa` <dbl> 3, 4, 2, 3, 3, 0, 4, 4, 2, 2, 1, 3, 2, 2, 2,…
## $ `Jumlah Perjalanan Rabu` <dbl> 3, 5, 0, 4, 3, 3, 4, 4, 0, 2, 1, 2, 2, 2, 4,…
## $ `Jumlah Perjalanan Kamis` <dbl> 0, 4, 2, 3, 2, 0, 4, 4, 2, 2, 1, 2, 2, 2, 2,…
## $ `Jumlah Perjalanan Jumat` <dbl> 0, 5, 0, 3, 2, 2, 4, 5, 2, 2, 1, 3, 3, 4, 4,…
## $ `Jumlah Perjalanan Sabtu` <dbl> 2, 0, 3, 0, 3, 3, 0, 2, 2, 0, 1, 2, 2, 0, 0,…
## $ `Jumlah Perjalanan Ahad` <dbl> 4, 3, 0, 2, 2, 0, 3, 2, 2, 0, 1, 2, 0, 0, 2,…
7.5 Pembuatan Tabel Silang
Setelah kita memastikan data kita bersih, kita siap untuk menganalisis korelasi antarvariabel kategoris.
Korelasi antarvariabel kategoris memerlukan “bahan baku” berupa tabel silang atau cross table. Kebanyakan literatur juga menggunakan istilah contingency table. Tabel silang adalah tabel dua arah, yakni yang baik baris maupun kolomnya adalah nilai-nilai dari dua variabel yang disilangkan.
Chunk berikut memperlihatkan bagaimana membuat tabel silang antara variabel jenis tempat tinggal dengan kendaraan utama menggunakan tbl_cross() dari pustaka gtsummary.
library(gtsummary)
library(flextable)
# Menghasilkan tabel silang antara variabel kendaraan utama dan jenis tempat tinggal
# untuk keperluan presentasi
data_mahasiswa |>
tbl_cross(
row = `kendaraan utama`,
col = `jenis tempat tinggal`,
label = list(
`kendaraan utama` = "Jenis Kendaraan Utama",
`jenis tempat tinggal` = "Jenis Tempat Tinggal"
),
percent = "none"
) |>
as_flex_table()
|
Jenis Tempat Tinggal |
|
||||||
|---|---|---|---|---|---|---|---|---|
Asrama |
Kos bersama-sama |
Kos sendiri |
Rumah mengontrak bersama |
Rumah mengontrak pribadi |
Rumah pribadi |
Rumah saudara |
Total |
|
Jenis Kendaraan Utama |
||||||||
Berjalan kaki |
23 |
20 |
39 |
17 |
11 |
0 |
1 |
111 |
Layanan online |
0 |
19 |
86 |
28 |
6 |
37 |
12 |
188 |
Menumpang dengan teman/keluarga |
0 |
18 |
24 |
40 |
0 |
11 |
4 |
97 |
Mobil pribadi |
0 |
6 |
15 |
5 |
3 |
110 |
13 |
152 |
Sepeda |
0 |
0 |
8 |
8 |
0 |
1 |
1 |
18 |
Sepeda motor pribadi |
2 |
57 |
296 |
125 |
23 |
394 |
94 |
991 |
Total |
25 |
120 |
468 |
223 |
43 |
553 |
125 |
1,557 |
Tabel silang yang merupakan hasil dari script di atas adalah seperti berikut.
- Baris menunjukkan kategori dalam variabel
kendaraan utama(row = `kendaraan utama`) - Kolom menunjukkan kategori dalam variabel
jenis tempat tinggal(col = `jenis tempat tinggal`) - Nilai-nilai dalam sel-selnya adalah frekuensi/jumlah data yang termasuk ke dalam kondisi berupa kategori kedua variabel.
Sementara itu, maksud perintah yang dituliskan di dalam chunk di atas adalah:
-
percent = "none"digunakan untuk menghilangkan persentase dari tabel silang. -
label = list(...)digunakan untuk mengubah nama variabel yang akan ditampilkan di tabel silang.
Perhatikan cara menginterpretasi informasi dari tabel tersebut:
jumlah pengguna layanan online yang tinggal di kos bersama-sama adalah 19 orang, yang setara dengan 16%.
tidak ada pengguna sepeda yang tinggal di Asrama, Kos bersama-sama, atau mengontrak rumah secara pribadi. Keberadaannya juga langka pada kalangan mahasiswa yang tinggal di rumah pribadi atau di saudaranya.
Selain dengan tbl_cross() (atau tbl_summary() yang kita gunakan di praktikum sebelumnya) yang gunanya cenderung untuk presentasi, kita dapat menggunakan perintah table() untuk menghasilkan tabel silang yang siap dioperasikan ke dalam perhitungan koefisien korelasi di tahap selanjutnya. Perintah table() mengambil dua masukan, yakni vektor variabel-variabel yang kita akan analisis, dipisahkan dengan tanda koma (,).
# vektor variabel-variabel ini kita akses dari dataset menggunakan operator '$'
table(
data_mahasiswa$`jenis tempat tinggal`,
data_mahasiswa$`kendaraan utama`
)
##
## Berjalan kaki Layanan online
## Asrama 23 0
## Kos bersama-sama 20 19
## Kos sendiri 39 86
## Rumah mengontrak bersama 17 28
## Rumah mengontrak pribadi 11 6
## Rumah pribadi 0 37
## Rumah saudara 1 12
##
## Menumpang dengan teman/keluarga Mobil pribadi Sepeda
## Asrama 0 0 0
## Kos bersama-sama 18 6 0
## Kos sendiri 24 15 8
## Rumah mengontrak bersama 40 5 8
## Rumah mengontrak pribadi 0 3 0
## Rumah pribadi 11 110 1
## Rumah saudara 4 13 1
##
## Sepeda motor pribadi
## Asrama 2
## Kos bersama-sama 57
## Kos sendiri 296
## Rumah mengontrak bersama 125
## Rumah mengontrak pribadi 23
## Rumah pribadi 394
## Rumah saudara 94Aktivitas Mandiri 1
- Buatlah dataset subset dari
data_mahasiswauntuk mahasiswa kampus ITERA saja dengan menggunakan perintahfilter()! Simpan ke dalam variabeldata_itera. - Buatlah tabel silang antara variabel
Tingkat SemesterdanUang Sakudari dataset subset yang telah dibuat pada poin 1, baik dengantbl_cross()maupun dengantable()!
7.6 Analisis Korelasi Antarvariabel Nominal
Dalam analisis korelasi variabel nominal, kita mengukur keberadaan dan juga kekuatan hubungan. Ukuran yang kita pakai untuk menyatakan hal tersebut adalah koefisien korelasi variabel nominal, yang di antaranya adalah koefisien \(\phi\) (phi), V Cramer dan koefisien C. Ketiga koefisien tersebut dihitung dari nilai \(\chi^2\) (“chi kuadrat”).
Selain itu, terdapat juga \(\lambda\) (lambda) yang merupakan koefisien korelasi variabel nominal berbasis error, atau disebut juga PRE (proportional reduction of error).
Ukuran dari keempat koefisien tersebut adalah besarnya yang berkisar antara 0 dan 1 dengan 0 berarti tidak ada hubungan sama sekali dan 1 berarti hubungan yang ada sangat kuat.
7.6.1 Koefisien Korelasi Variabel Nominal Berbasis \(\chi^2\)
Perhitungan koefisien korelasi variabel nominal berbasis nilai \(\chi^2\) pada praktikum ini kita lakukan dengan cara semi-manual seperti pada buku dan langsung menggunakan koefisien korelasi yang sudah tersedia pada paket-paket tambahan yang pada bagian pertama kita muat.
7.6.1.1 Cara Semi-Manual
Cara semi-manual ini dilakukan dengan terlebih dahulu menghitung nilai \(\chi^2\) antara dua variabel kita. Kemudian, dari nilai \(\chi^2\) tersebut, kita menghitung koefisien korelasi variabel nominal yang kita inginkan.
Untuk menghitung \(\chi^2\) kita menggunakan dua perintah utama dalam R, yakni table() dan chisq.test(). Perintah table() berfungsi membuat tabel silang yang berguna sebagai “bahan baku” perhitungan \(\chi^2\) kita, kemudian perintah chisq.test() menghitung nilai \(\chi^2\) tersebut.
# Menyimpan tabel
tempat_tinggal_kend <- table(
data_mahasiswa$`kendaraan utama`,
data_mahasiswa$`jenis tempat tinggal`
)
# Menyimpan hasil chi-square test
chisq_tempat_tinggal_kend <-
tempat_tinggal_kend |>
chisq.test()Seperti yang bisa kita lihat, hasil perhitungan berupa variabel R chisq_tempat_tinggal_kend berada di bagian data, dan jika kita perluas, maka di dalamnya terdapat banyak variabel-variabel lain. Variabel-variabel lain tersebut menyimpan berbagai nilai yang menjadi bagian dari hasil perhitungan. Nilai-nilai yang penting untuk
.$statisticmenyimpan nilai \(\chi^2\) dari tabel. Ini digunakan untuk menghitung kekuatan korelasi.$parametermenyimpan nilai degree of freedom (df).$p.valuemenyimpan nilai probabilitas untuk menerima \(H_0\) yang berarti tidak ada hubungan antara dua variabel yang dianalisis.$expectedmenyimpan tabel frekuensi yang diharapkan dari data kita
Tampilkan seluruh nilai tersebut
# Menampilkan nilai chi-square
cat("Nilai Chi-square: ")
chisq_tempat_tinggal_kend$statistic
# Menampilkan nilai degree of freedom
cat("Nilai Degree of Freedom: ")
chisq_tempat_tinggal_kend$parameter
# Menampilkan nilai probabilitas
cat("Nilai Probabilitas: ")
chisq_tempat_tinggal_kend$p.value
# Menampilkan tabel frekuensi yang diharapkan
cat("Tabel Frekuensi yang Diharapkan: ")
chisq_tempat_tinggal_kend$expected
## Nilai Chi-square: X-squared
## 600.8622
## Nilai Degree of Freedom: df
## 30
## Nilai Probabilitas: [1] 1.963807e-107
## Tabel Frekuensi yang Diharapkan:
## Asrama Kos bersama-sama Kos sendiri
## Berjalan kaki 1.7822736 8.554913 33.364162
## Layanan online 3.0186256 14.489403 56.508671
## Menumpang dengan teman/keluarga 1.5574823 7.475915 29.156069
## Mobil pribadi 2.4405909 11.714836 45.687861
## Sepeda 0.2890173 1.387283 5.410405
## Sepeda motor pribadi 15.9120103 76.377649 297.872832
##
## Rumah mengontrak bersama
## Berjalan kaki 15.897881
## Layanan online 26.926140
## Menumpang dengan teman/keluarga 13.892742
## Mobil pribadi 21.770071
## Sepeda 2.578035
## Sepeda motor pribadi 141.935132
##
## Rumah mengontrak pribadi Rumah pribadi
## Berjalan kaki 3.0655106 39.423892
## Layanan online 5.1920360 66.771997
## Menumpang dengan teman/keluarga 2.6788696 34.451509
## Mobil pribadi 4.1978163 53.985870
## Sepeda 0.4971098 6.393064
## Sepeda motor pribadi 27.3686577 351.973667
##
## Rumah saudara
## Berjalan kaki 8.911368
## Layanan online 15.093128
## Menumpang dengan teman/keluarga 7.787412
## Mobil pribadi 12.202954
## Sepeda 1.445087
## Sepeda motor pribadi 79.560051Kita akan menghitung nilai koefisien V Cramer untuk menyatakan korelasi antara jenis kendaraan yang digunakan sebagai moda ke kampus dan jenis tempat tinggal mahasiswa menggunakan rumus berikut dan berdasarkan nilai \(\chi^2\) yang kita dapatkan dari tes sebelumnya.
\[ V = \sqrt{\frac{\chi^2}{n \times min(c−1,r−1)}} \]
# Menyimpan nilai Chi-squared menggunakan metode "as.numeric"
chisq_tempat_tinggal_kend <- as.numeric(chisq_tempat_tinggal_kend$statistic)
# Menghitung jumlah data
n <- data_mahasiswa |>
summarize(jumlah = n())
n <- n$jumlah
# Menghitung jumlah kategori dari 'jenis tempat tinggal' sebagai jumlah kolom
kolom <- data_mahasiswa |>
group_by(jenis = `jenis tempat tinggal`) |>
summarize(jumlah = n())
kolom <- length(kolom$jenis)
# Menghitung jumlah kategori dari 'kendaraan utama' sebagai jumlah baris
baris <- data_mahasiswa |>
group_by(kend = `kendaraan utama`) |>
summarize(jumlah = (n))
baris <- length(baris$kend)
# Menghitung koefisien V
v_tempat_tinggal_kend <- sqrt(chisq_tempat_tinggal_kend / (n * min(kolom - 1, baris - 1)))
v_tempat_tinggal_kend## [1] 0.2778166
Koefisien V dipilih karena tabel silang kita terdiri atas banyak kategori dan juga berdimensi persegi panjang (6x7 kategori).
Kesimpulan: Hasil dari perhitungan koefisien V adalah 0.2778166. Angka ini menunjukkan hubungan yang sedikit lemah, karena berada di bawah nilai tengah-tengah yaitu 0,5. Artinya, hubungan antara jenis tempat tinggal dengan jenis kendaraan yang sering digunakan ke kampus tidak begitu kuat.
7.6.1.2 Cara Langsung dengan Pustaka rcompanion
kita dapat menggunakan pustaka rcompanion untuk menghitung koefisien V Cramer, yaitu dengan perintah cramerV(). Perintah ini mengambil langsung vektor kolom variabel yang kita akan analisis, sehingga menggunakan notasi $ untuk mengakses kolom `jenis tempat tinggal` dan `kendaraan utama`.
Untuk menggunakan koefisien \(\phi\) kita dapat menggunakan perintah phi(). Sementara itu, untuk koefisien kontingensi \(C\) kita dapat menggunakan perintah ContCoeff() yang membutuhkan pustaka DescTools.
v_tempat_tinggal_kend <- cramerV(
data_mahasiswa$`jenis tempat tinggal`, data_mahasiswa$`kendaraan utama`
)
cat(
"Nilai V Cramer variabel jenis tempat tinggal",
"dengan kendaraan utama: ",
v_tempat_tinggal_kend
)
## Nilai V Cramer variabel jenis tempat tinggal dengan kendaraan utama: 0.2778Bandingkan dengan nilai V dari perhitungan semi-manual, apakah hasilnya sama?
Aktivitas Mandiri 2
Analisislah korelasi antara variabel jenis tempat tinggal dengan kendaraan utama dari dataset data_itera menggunakan koefisien korelasi berbasis \(\chi^2\) dan simpan ke dalam variabel v_itera_tempat_tinggal_kendaraan.
7.6.2 Koefisien Korelasi Variabel Nominal Berbasis Error
Untuk analisis korelasi variabel nominal berbasis error yang menggunakan koefisien \(\lambda\) kita dapat menggunakan perintah lambda() yang ada di dalam pustaka RCPA3. Perintah lambda() mengambil masukan berupa tabel silang seperti yang kita buat pada perhitungan \(\chi^2\), yakni perintah table(). Karena koefisien \(\lambda\) merupakan koefisien korelasi variabel nominal yang memperhitungkan variabel independen, penentuan variabel yang menjadi independen dilakukan sejak kita memformat tabel silang, yakni variabel dependen ditempatkan pada baris dan independen pada kolom. Untuk memastikan, mari kita muat ulang tabel silang kita dengan memanggil kembali nama variabelnya.
print(tempat_tinggal_kend)
##
## Asrama Kos bersama-sama Kos sendiri
## Berjalan kaki 23 20 39
## Layanan online 0 19 86
## Menumpang dengan teman/keluarga 0 18 24
## Mobil pribadi 0 6 15
## Sepeda 0 0 8
## Sepeda motor pribadi 2 57 296
##
## Rumah mengontrak bersama
## Berjalan kaki 17
## Layanan online 28
## Menumpang dengan teman/keluarga 40
## Mobil pribadi 5
## Sepeda 8
## Sepeda motor pribadi 125
##
## Rumah mengontrak pribadi Rumah pribadi
## Berjalan kaki 11 0
## Layanan online 6 37
## Menumpang dengan teman/keluarga 0 11
## Mobil pribadi 3 110
## Sepeda 0 1
## Sepeda motor pribadi 23 394
##
## Rumah saudara
## Berjalan kaki 1
## Layanan online 12
## Menumpang dengan teman/keluarga 4
## Mobil pribadi 13
## Sepeda 1
## Sepeda motor pribadi 94Ternyata kita sudah mengatur sedemikian rupa agar variabel independen kita, jenis tempat tinggal, berada di kolom. Artinya, urutan kita menempatkan variabel di argumen table() sangat berpengaruh: variabel pertama akan menempati baris, sementara yang kedua menempati kolom. Karena susunan ini sudah sesuai dengan perintah lambda(), kita bisa melanjutkan analisis kita.
# Menghitung koefisien lambda
lambda_tempat_tinggal_kend <- lambda(
tempat_tinggal_kend,
# digits menandakan berapa desimal angka yang kita hasilkan
digits = 3,
# detailed menandakan apakah kita memperlihatkan nilai-nilai error yang dihitung
detailed = TRUE
)
lambda_tempat_tinggal_kend## Naive Errors Prediction Errors Lambda
## 1 566 545 0.037
Nilai 566, 545, 0.037 ini menunjukkan bahwa dengan mempertimbangkan variabel independen berupa jenis tempat tinggal, error dalam memprediksi variabel dependen berupa kendaraan utama berkurang sebesar 5.66^{4}, 5.45^{4}, 3.7%, yang mana bukan angka yang signifikan besarnya. Artinya, hubungan antara jenis kendaraan dengan jenis tempat tinggal yang kita analisis sangat-sangat lemah.
7.7 Analisis Korelasi Antarvariabel Ordinal
Dalam analisis korelasi variabel ordinal, kita tidak hanya dapat mengukur keberadaan dan juga kekuatan hubungan, tetapi juga arah hubungan. Yang dimaksud dengan ‘arah hubungan’ adalah searah atau berlawanan. Hubungan searah berarti semakin tinggi nilai variabel #1, maka semakin tinggi juga nilai variabel #2, begitu pula sebaliknya. Akan tetapi, jika arah hubungan berlawanan, semakin tinggi nilai variabel #1 maka semakin rendah nilai variabel #2, begitu pula sebaliknya.
Arah hubungan ditunjukkan oleh tanda koefisien dan kekuatannya ditunjukkan oleh besar angka koefisien. Oleh karena itu, nilai korelasi pada variabel ordinal berkisar antara \(-1\) hingga \(+1\) dengan tanda \(-\) untuk menandakan hubungan berlawanan dan \(+\) untuk hubungan searah.
Kita akan mempelajari penggunaan perintah dalam R untuk menghitung koefisien korelasi Gamma (\(\gamma\)) dan Somer’s d.
7.7.1 Koefisien Gamma (\(\gamma\))
Kita dapat menggunakan perintah GKgamma() dari pustaka vcdExtra untuk mengukur koefisien (\(\gamma\)). Perintah GKgamma() mengambil masukan yang sama seperti chisq.test(), yakni tabel silang yang dihasilkan dari perintah table().
Dalam praktikum ini, kita akan menganalisis kekuatan dan arah hubungan antara variabel Uang Saku dan Tingkat Semester. Apakah mahasiswa dengan tingkat semester makin tinggi uang sakunya makin tinggi pula, atau sebaliknya?
# Membuat variabel table() sebagai masukan
uang_saku_tingkat_semester <- table(
data_mahasiswa$`Uang Saku`,
data_mahasiswa$`Tingkat Semester`
)
# Menghitung nilai Gamma dari variabel table() yang sudah dibuat
gamma_uang_saku_tingkat_semester <- GKgamma(uang_saku_tingkat_semester)
# Menampilkan nilai Gamma
gamma_uang_saku_tingkat_semester
## gamma : -0.009
## std. error : 0.033
## CI : -0.073 0.056Nilai \(\gamma\) sebesar -0.008545 menunjukkan bahwa kekuatan hubungan antara uang saku dengan tingkat semester adalah sangat-sangat lemah.
Seperti halnya nilai variabel hasil perhitungan chisq.test(), hasil perhitungan GKgamma() juga terdiri atas banyak variabel. Nilai gamma sendiri dapat kita akses dengan .$gamma. Walaupun ada tanda negatif pada nilai tersebut yang artinya adalah ada hubungan berlawanan arah antara tingkat uang saku dengan tingkat semester. Semakin tinggi semester, semakin rendah uang saku yang diterima mahasiswa. Akan tetapi, pernyataan itu tidak bisa dijadikan pegangan karena besar nilai koefisiennya yang sangat kecil.
# Mengakses nilai gamma
gamma_uang_saku_tingkat_semester$gamma
## [1] -0.008545005Nilai lain yang penting bagi kita adalah nilai .$C dan .$D . Nilai-nilai tersebut adalah nilai operasi dalam sel tabel silang yang merupakan penyusun dalam perhitungan koefisien tersebut mengikuti rumus berikut:
\[ G = \frac{C-D}{C+D} \]
# Menampilkan nilai C dan D
print(gamma_uang_saku_tingkat_semester$C)
print(gamma_uang_saku_tingkat_semester$D)## [1] 283397
## [1] 288282
7.7.2 Koefisien Somer’s d
Koefisien Somer’s d menghitung korelasi dengan mempertimbangkan salah satunya sebagai variabel independen. Oleh karena itu, kita perlu menentukan variabel mana yang menjadi independen dan mana yang menjadi dependen. Dalam praktikum ini, kita akan menganalisis hubungan antara variabel Uang Saku dan Tingkat Semester. Kita akan menentukan bahwa Tingkat Semester sebagai variabel independen dan Uang Saku sebagai variabel dependen karena lebih masuk akal bahwa tingkat semester mempengaruhi uang saku, bukan sebaliknya.
# Menetapkan variabel dependen dan independen
# Variabel dependen kita sebut 'y', independen kita sebut 'x'
x <- data_mahasiswa$`Tingkat Semester`
y <- data_mahasiswa$`Uang Saku`
# Menghitung koefisien d Somer
somerd_uang_saku_tingkat_semester <- SomersDelta(
x, y, direction = "column"
)
somerd_uang_saku_tingkat_semester
## [1] -0.005806946Perintah tersebut menghitung koefisien d Somer dengan variabel independen yang berada pada kolom (direction = "column"). Secara bawaan, fungsi SomersDelta() menganggap variabel independen berada pada baris (direction = "row"). Jika kita mendefinisikan variabel x dan y secara bersamaan, kita harus mendefinisikan direction = "column" secara eksplisit.
Nilai koefisien d Somer tersebut juga menunjukkan kesimpulan yang sama dengan koefisien \(\gamma\).