Tulisan ini memuat panduan regresi linier sederhana dengan menggunakan contoh fiktif. Penting untuk diketahui bahwa regresi linier sederhana digunakan untuk memodelkan hubungan antara dua peubah yang menunjukkan hubungan sebab-akibat sehingga dapat digunakan dalam peramalan atau prediksi. Sebelum melakukan analisa regresi linier sederhana, asumsi harus diperiksa terlebih dahulu. Asumsi tersebut, yaitu kelinieran, kenormalan distribusi residual dan kehomogenan ragam. Masalah kelinieran dapat atasi dengan transformasi data untuk peubah bebas (X) dan terikat (Y). Jika data tidak memenuhi asumsi kenormalan distribusi residual, transformasi dapat dilakukan untuk nilai peubah terikat (Y). Permasalahan kehomogenan ragam dapat diantisipasi dengan transformasi logaritmik untuk peubah terikat (Y) saja.

Panduan untuk analisis ragam dua arah menggunakan empat paket R, yaitu ggpubr, ggfortify, MASS dan car. Jika akan melakukan analisis ini di laptop atau komputer Anda, pastikan bahwa keempat paket tersebut telah terpasang.

PENTING

Untuk menggunakan panduan ini, pertama jalankan program R Studio, lalu klik File - New File - R script. Setelah itu, ketik kode R di tiap blok abu-abu yang tertera di bawah ini. Untuk menjalankan kode di tiap baris, arahkan pointer di awal kode atau di akhir kode kemudian tekan tombol ctrl (control) bersamaan dengan menekan tombol enter. Alternatif lainnya klik Run yang ada di bagian kanan atas panel source.

Hasil operasi dari kode R yang dijalankan akan muncul di bagian panel console (panel di bagian kiri bawah) atau panel fitur (panel di bagian kanan bawah) jika hasil berupa grafik. Jika pekerjaan Anda sudah selesai, klik File dan pilih Save. Simpan hasil pekerjaan Anda di folder yang Anda inginkan.

Memuat paket

library(ggpubr)
## Loading required package: ggplot2
library(ggfortify)
library(MASS)
library(car)
## Loading required package: carData

Menyusun dataset

Dataset dapat disusun langsung di R jika titik data tidak terlalu banyak. Namun, jika tidak demikian maka dataset dibuat terlebih dahulu di program Excel atau program sejenis dan disimpan dalam format .csv.

Dalam panduan ini, dataset dibuat langsung di R dan kemudian ditransformasi ke dalam format csv dengan menggunakan R. Jika Anda sudah memiliki data yang telah disusun di Excel atau program sejenisnya dan disimpan dalam format .csv, maka lewati tahapan “Menyusun dataset” dan langsung mulai dari “Memuat data”. Contoh fiktif yang digunakan untuk analisis regresi linier sederhana ini adalah data umur burung (hari) dan panjang sayapnya (cm).

# Kode untuk menyusun dataset. burung adalah nama dari data yang disusun.
burung = data.frame(umur = c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), sayap = c(1.2, 1.4, 1.9, 2, 2.5, 2.9, 3.2, 3.3, 3.8, 4, 4.4, 4.8, 5, 5.2, 5.3))

# Mengubah dataset ke dalam format .csv dan menyimpannya di salah satu folder di komputer atau laptop
## Di panduan ini, folder penyimpanan dataset adalah Kode R
### folder path dari file .csv adalah C:/DATA/Untan/Lab Ekologi/Pelatihan R/Kode R/
write.csv(burung, "C:/DATA/Untan/Lab Ekologi/Pelatihan R/Kode R/burung.csv")

Memuat data

# Pengaturan direktori/folder kerja
setwd("C:/DATA/Untan/Lab Ekologi/Pelatihan R/Kode R/")

df <- read.csv("C:/DATA/Untan/Lab Ekologi/Pelatihan R/Kode R/burung.csv")

Plot data

Untuk memeriksa hubungan antar peubah, data sebaiknya diplotkan terlebih dahulu dengan ’scatter plot".

plot(sayap ~ umur,
     data=df,
     pch=16,
     xlab = "umur",
     ylab = "sayap") 

Pemeriksaan asumsi

# Model persamaan
## Model dapat disesuaikan dengan data yang lain dengan cara mengganti nama peubah (sayap dan umur)
model = lm(sayap ~ umur, data=df)

# Pemeriksaan kenormalan distribusi data dengan Uji Shapiro-Wilk
# Data terdistribusi normal jika p > 0,05
sresid <- studres(model) 
shapiro.test(sresid)
## 
##  Shapiro-Wilk normality test
## 
## data:  sresid
## W = 0.91878, p-value = 0.1845
# Pemeriksaan kehomogenan ragam
# Kehomogenan ragam terpenuhi jika p > 0,05
ncvTest(model)
## Non-constant Variance Score Test 
## Variance formula: ~ fitted.values 
## Chisquare = 1.368638, Df = 1, p = 0.24205
# Pemeriksaan kelinieran, kenormalan distribusi residual dan kehomogenan ragam dilakukan secara grafis
# Asumsi hubungan linier diperiksa dengan melihat grafik Residuals vs Fitted
# Asumsi kelinieran terpenuhi jika grafik tidak menunjukkan pola tertentu
# Kenormalan data dapat dilihat dari grafik normal Q-Q
# Data normal jika titik data mengikuti pola linier garis putus-putus
# Asumsi kehomogenan ragam diperiksa dengan melihat grafik Scale-Location 
# Kehomogenan ragam terpenuhi jika titik data tersebar hampir sama diantara garis biru
autoplot(model, which = 1:6, ncol = 3, label.size = 3)
## Warning: `arrange_()` is deprecated as of dplyr 0.7.0.
## Please use `arrange()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.

Pengecekan Model

Hasil pemeriksaan menunjukkan variabel umur signifikan dengan nilai R kuadrat 0,99. Persamaan regresi dari model adalah y = 0.607 + 0.310x. Angka yang tertera di persamaan tersebut berasal dari nilai estimate Intercept (0,607) dan umur (0.310) (pembulatan).

summary(model)
## 
## Call:
## lm(formula = sayap ~ umur, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.26083 -0.07226  0.03560  0.08738  0.16809 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.606548   0.074609    8.13 1.87e-06 ***
## umur        0.309643   0.007473   41.43 3.40e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1251 on 13 degrees of freedom
## Multiple R-squared:  0.9925, Adjusted R-squared:  0.9919 
## F-statistic:  1717 on 1 and 13 DF,  p-value: 3.403e-15

Menyusun plot dan membubuhkan persamaan di grafik

Plot disusun dengan paket ggpubr dan dapat dimodifikasi untuk data yang lain dengan mengganti variabel (x dan y), xlab, ylab, dan label pada annotate.

ggscatter(burung, y = "sayap", x = "umur", 
          color = "black", 
          shape = 21, 
          size = 3, 
          add = "reg.line", 
          add.params = list(color = "blue", linetype="dashed"),
          xlab = "Umur (Hari)", 
          ylab="Panjang sayap (cm)") + 
          annotate("text", label= "R-squared = 0.99, p < 0.01", x = 12, y = 0.8) +
          annotate("text", label= "y =  0.607 + 0.310x", x = 12, y = 0.4)+
          font("xlab", size = 12, face = "bold") + 
          font("ylab", size = 12, face = "bold")
## `geom_smooth()` using formula 'y ~ x'