Korelasi
Korelasi
Adji Alamsyah
2024-02-25
Pengertian
Korelasi adalah ukuran statistik yang mengukur sejauh mana dua variabel berkaitan atau berhubungan satu
sama lain. Korelasi positif, negatif, atau tidak ada hubungan sama sekali. Korelasi biasanya diukur dalam
rentang antara -1 hingga 1. Korelasi sempurna atau sangat kuat biasanya sama dengan 1 atau -1. Jika
di bawah 1 atau -1, kolerasinya dianggat sebagai kuat, lemah, atau tidak ada korelasi. Beberapa peneliti
memiliki pandangan berbeda soal kategoriasi ini. Para mahasiswa bebas memilih untuk mengacu ke kategori
yang dibuat para peneliti.
Korelasi tidak menunjukkan sebab-akibat antara variabel tersebut, hanya menunjukkan tingkat hubungan
antara keduanya. Tetapi, jika dua variabel memiliki korelasi yang kuat, maka besar kemungkinan ada kausal-
itas di antara keduanya. Artinya, korelasi bisa dijadikan titik tolak untuk menganalisis adanya hubungan
sebab-akibat antar dua variabel.
Impor data Excel R
#aktivasi paket
library(readxl)
#impor data Excel ke R Studio
rstat24i <- read_excel(
"/Users/alamsyah/Documents/statsos24/rstat24i.xlsx",
col_types = c("numeric", "text", "numeric","numeric",
"numeric", "text", "text", "text", "text",
"text", "text", "text", "text", "text",
"text", "text", "text","text", "text", "text",
"numeric","numeric", "numeric", "numeric",
"numeric", "text", "text",
"text","text", "text", "text", "text",
"text", "text", "text", "text", "text", "text","text",
"text", "text", "text","text", "text", "text", "text",
"text", "text", "text", "text", "text",
"text", "text", "text", "text", "text",
"text", "text", "text", "text",
"text", "text", "text",
"text", "text", "numeric","text", "text"))
Korelasi positif
Korelasi positif terjadi ketika dua variabel bergerak ke arah yang sama. Artinya, ketika satu variabel
meningkat, kemungkinan besar variabel lainnya juga akan meningkat, dan sebaliknya.
1
library(dplyr) #aktivasi paket
#mengeluarkan variabel idres
idres <- rstat24i$idres
#mengeluarkan variabel berat badan (weight)
bb <- rstat24i$weight
#mengeluarkan variabel tinggi badan (height)
tb <- rstat24i$height
#mengeluarkan variabel asal kampus (campus)
kampus <-rstat24i$campus
#mengeluarkan variabel jenis kelamin (sex)
jk <- rstat24i$sex
#mengeluarkan variabel lokasi domisili (loc)
lokasi <- rstat24i$loc
#membuat dataframe BMI berbentuk tibble
bmi <- tibble(idres, tb, bb, kampus, jk, lokasi)
#membuat kolom baru (tinggi badan dalam meter)
bmi <- bmi %>%
mutate(tb1 = tb/100)
#membuat kolom imt dengan isi data numerik
bmi <- bmi %>%
mutate(imt = bb/(tb1ˆ2))
head(bmi)
## # A tibble: 6 x 8
## idres tb bb kampus jk lokasi tb1 imt
## <dbl> <dbl> <dbl> <chr> <chr> <chr> <dbl> <dbl>
## 1 1 160 54 Kampus Indralaya Perempuan Kota 1.6 21.1
## 2 2 157 44 Kampus Indralaya Perempuan Kota 1.57 17.9
## 3 3 166 51 Kampus Indralaya Perempuan Kota 1.66 18.5
## 4 4 152 80 Kampus Indralaya Perempuan Kota 1.52 34.6
## 5 5 157 41 Kampus Indralaya Perempuan Kota 1.57 16.6
## 6 6 163 70 Kampus Indralaya Perempuan Kota 1.63 26.3
Data yang tersimpan dalam bentuk dataframe dikeluarkan dengan fungsi select() yang ada di paket
dataframe, lalu dihitung dengan fungsi cor().
library(dplyr)
#mengeluarkan objek bb dan tb
kor1 <- select(bmi, tb, bb)
#menghitung korelasi dan menyimpannya dalam kor2
kor2 <- cor(kor1)
#mencetak hasil perhitungan korelasi
print(kor2)
## tb bb
## tb 1.0000000 0.4263527
## bb 0.4263527 1.0000000
2
#menghitung koefisien korelasi Pearson
kor2a <- cor.test(bmi$tb, bmi$bb)
#mencetak koefisien korelasi Pearson
print(kor2a)
##
## Pearson’s product-moment correlation
##
## data: bmi$tb and bmi$bb
## t = 5.2061, df = 122, p-value = 7.92e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2703599 0.5605324
## sample estimates:
## cor
## 0.4263527
#aktivasi paket
library(ggplot2)
#membuat scatter plot
ggplot(bmi, aes(x = bb, y = tb)) +
geom_point() +
labs(x = "Berat badan",
y = "Tinggi badan",
title = "Scatter plot tinggi badan dan berat badan") +
theme_minimal()
3
Scatter plot tinggi badan dan berat badan
180
170
Tinggi badan
160
150
40 60 80 100
Berat badan
Data tidak tersimpan dalam dataframe atau tibble tetapi objek yang berdiri sendiri di panel Environment.
#menghitung korelasi
kor3 <- cor.test(bb,tb)
print(kor3)
##
## Pearson’s product-moment correlation
##
## data: bb and tb
## t = 5.2061, df = 122, p-value = 7.92e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2703599 0.5605324
## sample estimates:
## cor
## 0.4263527
Visualisasi menggunakan fungsi plot dan fungsi abline yang tersimpan dalam paket base.
4
plot(bb, tb)
abline(lm(tb ~ bb, data = bmi), col = "blue")
180
170
tb
160
150
40 50 60 70 80 90 100
bb
Visualisasi menggunakan paket car(). CAR = Companion Applied Regression. Informasi lengkap tentang
paket ini bisa dipelajari di dokumentasinya. Data harus tersimpan dalam bentuk dataframe atau tibble.
5
180
170
tb
160
150
40 50 60 70 80 90 100
bb
Hasil korelasi kita kelompokkan berdasarkan jenis kelamin. Data harus tersimpan dalam bentuk dataframe
atau tibble.
6
jk
180
170 Laki − laki Perempuan
tb
160
150
40 50 60 70 80 90 100
bb
Hasil korelasi kita kelompokkan berdasarkan lokasi tempat tinggal. Data harus tersimpan dalam bentuk
dataframe atau tibble.
7
lokasi
180
170 Kabupaten Kota
tb
160
150
40 50 60 70 80 90 100
bb
Korelasi nol
Kolerasi nol artinya tidak ada hubungan antara dua variabel. Jika tinggi badan dan skor indeks massa tubuh
dicari skor korelasinya, maka skor korelasinya sama dengan 0.002. Jadi, tidak ada korelasi atau hubungan
apa pun antara tinggi badan dan indeks massa tubuh. Jika divisualisasikan, garisnya berbentuk horisontal
atau vertikal, bukan diagonal.
1. Menghitung korelasi tinggi badan (tb) dengan skor indeks massa tubuh (imt)
## tb imt
## tb 1.000000000 0.002196362
## imt 0.002196362 1.000000000
##
8
## Pearson’s product-moment correlation
##
## data: bmi$tb and bmi$imt
## t = 0.02426, df = 122, p-value = 0.9807
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1741877 0.1784439
## sample estimates:
## cor
## 0.002196362
#aktivasi paket
library(ggplot2)
#membuat scatter plot
ggplot(bmi, aes(x = tb, y = imt)) +
geom_point() +
labs(x = "Tinggi badan",
y = "Indeks Massa Tubuh",
title = "Scatter plot tinggi badan dan Indeks Massa Tubuh") +
theme_minimal()
30
Indeks Massa Tubuh
25
20
15
150 160 170 180
Tinggi badan
9
plot(bmi$tb, bmi$imt)
abline(lm(imt ~ tb, data = bmi), col = "blue")
35
30
bmi$imt
25
20
15
bmi$tb
10
35
30
imt
25
20
15
tb
Korelasi negatif
Korelasi negatif tidak bisa divisualisasikan dengan variabel-variabel yang tersimpan dalam dataframe bmi.
Intinya, grafik korelasi negatif merupakan kebalikan dari korelasi positif.
Dataframe bmi akan kita tambah satu kolom lagi, yakni imt_nominal (skor imt diubah menjadi dua kategori:
normal dan tidak normal).
#membuat kolom imt_nominal berbentuk nominal/dua kategori (normal dan tidak normal)
bmi <- bmi %>%
mutate(imt_nominal = case_when(
imt < 18.5 ~ "Tidak normal",
between(imt, 18.5, 24.9) ~ "Normal",
between(imt, 25, 29.9) ~ "Tidak normal",
between(imt, 30, 34.9) ~ "Tidak normal",
between(imt, 35, 39.9) ~ "Tidak normal",
imt > 40 ~ "Tidak normal")
)
head(bmi)
## # A tibble: 6 x 9
## idres tb bb kampus jk lokasi tb1 imt imt_nominal
## <dbl> <dbl> <dbl> <chr> <chr> <chr> <dbl> <dbl> <chr>
## 1 1 160 54 Kampus Indralaya Perempuan Kota 1.6 21.1 Normal
## 2 2 157 44 Kampus Indralaya Perempuan Kota 1.57 17.9 Tidak normal
## 3 3 166 51 Kampus Indralaya Perempuan Kota 1.66 18.5 Normal
11
## 4 4 152 80 Kampus Indralaya Perempuan Kota 1.52 34.6 Tidak normal
## 5 5 157 41 Kampus Indralaya Perempuan Kota 1.57 16.6 Tidak normal
## 6 6 163 70 Kampus Indralaya Perempuan Kota 1.63 26.3 Tidak normal
Lalu, kita ingin melihat apakah ada korelasi antara jk dan imt_nominal. Kedua variabel ini kita keluarkan
dari dataframe bmi dan diubah menjadi factor().
Menghitung korelasi variabel berbentuk nominal dengan paket vcd dan uji Cramer's V. Sebelumnya, f.jk
dan f.imt_nominal digabungkan menjadi satu ke dalam satu dataframe bernama mydf1.
## [1] 0.09959234
Tugas individu
Ubahlah tinggi badan dan berat badan menjadi variabel berbentuk ordinal yang memiliki tiga kategori:
kurus, normal, gemuk (untuk berat badan) dan pendek, normal, tinggi (untuk berat badan). Ujilah dua
variabel ordinal dengan teknik korelasi Kendall dalam fungsi cor(). Visualisasikan hasil pekerjaan Anda
dengan paket ggplot(). Tunggu dikumpul minggu depan!
12