Anda di halaman 1dari 12

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. Membuat dataset body mass index atau bmi

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

2. Menghitung korelasi berat badan (bb) dan tinggi badan (tb)

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

3. Memvisualisasikan korelasi: cara pertama

Visualisasi menggunakan paket ggplot2, khususnya fungsi geom_point().

#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

4. Menghitung korelasi berat badan (bb) dan tinggi badan (tb)

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

5. Visualisasi korelasi: cara kedua

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

6. Visualisasi korelasi: cara ketiga

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.

#instalasi dan aktivasi paket


library(car)
#membuat scatter plot
scatterplot(tb ~ bb, data = bmi,
ellipse = FALSE,
smoother = FALSE,
grid = FALSE,
frame = FALSE)

5
180
170
tb

160
150

40 50 60 70 80 90 100

bb

7. Visualisasi korelasi: cara keempat

Hasil korelasi kita kelompokkan berdasarkan jenis kelamin. Data harus tersimpan dalam bentuk dataframe
atau tibble.

#instalasi dan aktivasi paket


library(car)
#membuat scatter plot
scatterplot(tb ~ bb | jk, data = bmi,
ellipse = FALSE,
grid = FALSE,
frame = FALSE)

6
jk
180
170 Laki − laki Perempuan
tb

160
150

40 50 60 70 80 90 100

bb

8. Visualisasi korelasi: cara kelima

Hasil korelasi kita kelompokkan berdasarkan lokasi tempat tinggal. Data harus tersimpan dalam bentuk
dataframe atau tibble.

#instalasi dan aktivasi paket


library(car)
#membuat scatter plot
scatterplot(tb ~ bb | lokasi, data = bmi,
ellipse = FALSE,
grid = FALSE,
frame = FALSE)

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)

#mengeluarkan objek bb dan tb menjadi ko4


kor4 <- select(bmi, tb, imt)
#menghitung korelasi dan menyimpannya dalam kor5
kor5 <- cor(kor4)
#mencetak hasil perhitungan korelasi
print(kor5)

## tb imt
## tb 1.000000000 0.002196362
## imt 0.002196362 1.000000000

#mencari koefisien korelasi Pearson


kor6 <- cor.test(bmi$tb, bmi$imt)
#mencetak hasil perhitungan korelasi
print(kor6)

##

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

2. Visualisasi koerasi tinggi badan dan indeks massa tubuh (imt)

#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()

Scatter plot tinggi badan dan Indeks Massa Tubuh


35

30
Indeks Massa Tubuh

25

20

15
150 160 170 180
Tinggi badan

3. Visualisasi cara ketiga

9
plot(bmi$tb, bmi$imt)
abline(lm(imt ~ tb, data = bmi), col = "blue")
35
30
bmi$imt

25
20
15

150 160 170 180

bmi$tb

3. Visualisasi dengan paket car

#instalasi dan aktivasi paket


library(car)
#membuat scatter plot
scatterplot(imt ~ tb, data = bmi,
ellipse = FALSE,
grid = FALSE,
frame = FALSE)

10
35
30
imt

25
20
15

150 160 170 180

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.

Korelasi untuk data berbentuk nominal

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().

#membuat objek berbentuk factor


f.jk <-as.factor(bmi$jk)
f.imt_nominal <- as.factor(bmi$imt_nominal)
#memeriksa kategori atau level dalam factor f.jk
levels(f.jk)

## [1] "Laki - laki" "Perempuan"

#memeriksa kategori atau level dalam factor f.imt_nominal


levels(f.imt_nominal)

## [1] "Normal" "Tidak normal"

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.

# Install dan aktivasi paket


library(vcd)

# Buat contoh data nominal


mydf1 <- data.frame(f.jk, f.imt_nominal)

# Hitung korelasi kategori (Cramer's V)


hasil1 <- assocstats(table(mydf1))
cor_cramer_v <- hasil1$cramer
print(cor_cramer_v)

## [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

Anda mungkin juga menyukai