Pemodelan Data

kita akan membahas cara membentuk model statistik menggunakan R. Terdapat 2 buah jenis model yang akan dibahas pada Chapter ini, yaitu: regresi dan klasifikasi. Untuk informasi terkait cara untuk melakukan inferensi berdasarkan hasil yang diperoleh dan cara untuk melakukan prediksi menggunakan model yang terbentuk tidak akan dijelaskan dalam buku ini. Pembaca dapat membaca lebih lanjut pada referensi berikut: • Introduction to Probability and Statistics Using R

• STHDA

• An Introduction to Statistical Learning

Regresi Linier

Regresi linier merupakan model sederhana yang paling sering dibahas dalam buku-buku statistika. Modelnya cukup sederhana dimana kita berusaha membentuk model dengan pendekatan garis linier dengan prinsip meminimalkan jumlah kuadrat residual pada data. Model yang tebentuk akan menghasilkan dua buah nilai yaitu nilai konstanta (titik potong sumbu y) dan nilai slope kurva. Model yang terbentuk secara umum haruslah memenuhi asumsi dasar model linier berikut: 1. Asumsi liniearitas: kurva relasi yang terbentuk antara variabel independen terhadap variabel dependen harus linier. Asumsi ini dapat dipelajari melalui plot residual terhadap nilai fitted value. Jika asumsi liniearitas terpenuhi, maka titik-titik residual yang di plotkan akan membentuk pola acak. Jika pada plot yang dihasilkan terbentuk pola tidak linear maka transformasi data pada variabel prediktor atau independen diperlukan.

2. Error atau residu berdristribusi normal: normalitas error di cek menggunakan qq-plot atau uji normalitas yang telah dibahas pada Chapter 11.4. 3. Outlier dan high influence point: kedua pengamatan tersebut dideteksi melalui qq-plot, plot residual terhadap nilai fitted value, dan plot residuals vs leverage. Jika outlier terjadi akibat adanya error selama pengukuran maka outlier dapat dihilangkan.

4. Error bersifat independen: independensi residual dapat dideteksi melaui plot korelasi serial dengan mengeplotkan ri vs ri−1.

5. Varians bersifat konstan: Varians bersifat konstan dicek melalui plot square root standardize residual vs fitted value. Pada kasus dimana varians tidak bersifat konstan, kita dapat memberikan bobot pada model yang akan kita bentuk (weighted least square), dimana bobot yang diberikan proporsional dengan invers varians.

_6. multikolinearitas: tidak ada variabel dependen yang saling berfkorelasi. Multikolinearitas dapat dideteksi melalui plot matriks korelasi. Pada model adanya kolinearitas ditunjukkan dari nilai variance inflation factor (VIF) yang tinggi. Secara umum nilai VIF terkecil sebesar 1 dan jika kolinearitas terjadi nilainya dapat lebih besar dari 5 atau 10. Untuk mengatasi kolinearitas pada model dapat dilakukan dengan dua cara, yaitu:

mengeluarkan variabel dengan nilai VIF yang tinggi pada model atau menggabungkan dua variabel prediktor yang saling berkorelasi menjadi satu variabel baru.

Pembentukan model linier pada R dilakukan dengan menggunakan fungsi lm(). Format umum fungsi tersebut adalah sebagai berikut:

lm(formula, data, subset, weights)

Catatan:

• formula : formula model yang hendak dibentuk.

• data: data yang digunakan untuk membentuk model.

• subset : subset data yang akan digunakan dalam pembentukan model.

• weight : nilai pembobotan dalam pembentukan model.

#Regrasi Linier Sederhana (Simple Linear Regression)

Pada Chapter 12.1.1 akan diberikan contoh pembentukan model linier sederhana menggunakan dataset Boston dari library MASS dengan jumlah observasi sebesar 506 observasi. Pada contoh kali ini kita akan mencoba membentuk

model dengan variabel dependen berupa medv (median harga rumah) dan variabel independen berupa lstat (persen rumah tangga dengan status ekonomi menengah ke bawah). Berikut adalh sintaks untuk membentuk model tersebut:

library(MASS) lm.fit <- lm(medv~lstat, data=Boston) anova(lm.fit)

##Analysis of Variance Table

##Response: medv

##Df Sum Sq Mean Sq F value Pr(>F)

##lstat 1 23244 23244 602 <2e-16 ***

##Residuals 504 19472 39

##—

##Signif. codes:

##0 ‘’ 0.001 ’’ 0.01 ’’ 0.05 ‘.’ 0.1 ’ ’ 1

summary(lm.fit)

##Call:

##lm(formula = medv ~ lstat, data = Boston)

##Residuals:

##Min 1Q Median 3Q Max

##-15.17 -3.99 -1.32 2.03 24.50

##Coefficients:

##Estimate Std. Error t value Pr(>|t|)

##(Intercept) 34.5538 0.5626 61.4 <2e-16 ***

##lstat -0.9500 0.0387 -24.5 <2e-16 ***

##—

##Signif. codes:

##0 ‘’ 0.001 ’’ 0.01 ’’ 0.05 ‘.’ 0.1 ’ ’ 1

##Residual standard error: 6.22 on 504 degrees of freedom

##Multiple R-squared: 0.544, Adjusted R-squared: 0.543

##F-statistic: 602 on 1 and 504 DF, p-value: <2e-16

Berdasarkan hasil plot dapat dilihat bahwa seluruh asumsi model linier tidak terpenuhi. Selain melalui plot residual, uji asumsi model linier dapat juga dilakukan secara matematis. Berikut adalah sintaks yang digunakan:

# error berdistribusi normal
# (data tidak berdistribusi normal)
shapiro.test(residuals(lm.fit))

##Shapiro-Wilk normality test

##data: residuals(lm.fit)

##W = 0.88, p-value <2e-16

# varians bersifat konstan
# (varians tidak konstan)
library(lmtest)
bptest(lm.fit)

##studentized Breusch-Pagan test ## ##data: lm.fit ##BP = 15, df = 1, p-value = 8e-05

# error bersifat independen
# (error tidak bersifat independen)
dwtest(lm.fit, alternative = "two.sided")

Regresi Linier Berganda (Multiple Linier Regression)

kita akan membuat tiga buah model regresi linier. Model pertama akan menambahkan variabel age (usia bangunan) pada model sebelumnya, model kedua akan menggunakan seluruh ariabel yang ada, dan model ketiga akan melakukan pembaharuan dengan mengeluarkan variabel dengan VIF paling tinggi dari model kedua. Berikut adalah sintaks untuk membentuk ketiag model tersebut:

library(car)
# Model pertama
lm.fit1 <- lm(medv ~ lstat+age, data=Boston)
anova(lm.fit1)
vif(lm.fit1)

##lstat age

##1.569 1.569

Berdasarkan hasil perhitungan diketahui nilai VIF dari model < 10, sehingga asumsi multikolinearitas terpenuhi. Untuk asumsi lainnya dapat dicek pada plot residual yang ditampilkan pada…

kita akan mencoba untuk melakukan pembaharuan pada model kedua dengan melakukan drop variabel dengan vif yang paling tinggi. Pada hasil perhitungan sebelumnya, variabel tax (pajak) memiliki nilai VIF yang paling tinggi, sehingga pada model ketiga variabel tersebut tidak disertakan. Terdapat dua cara untuk melakukannya berikut adalah sintaks yang digunakan:

#Model 3 (cara 1)

lm.fit3 <- lm(medv~.-tax, data=Boston)

#Model 3 (cara 2)

lm.fit3 <- update(lm.fit2, ~.-tax) anova(lm.fit3)

##Analysis of Variance Table

##Response: medv

##Df Sum Sq Mean Sq F value Pr(>F)

##crim 1 6441 6441 280.48 < 2e-16 ***

##zn 1 3554 3554 154.78 < 2e-16 ***

##indus 1 2551 2551 111.10 < 2e-16 ***

##chas 1 1530 1530 66.62 2.8e-15 ***

Model Linier dengan Interaksi Antar Variabel

Prediktor Interaksi antar variabel pada model linier dapat dengan mudah dimasukkan kedalam fungsi lm(). Terdapat dua buah cara untuk melakukannya. Cara pertama dengan menggunakan tanda : pada formula (contoh: y1 x1+x2+x1 : x2).

Tanda : menyatakan formula persamaan linier memasukkan interaksi antar variabel prediktor di dalamnya. Cara kedua adalah dengan menggunakan tanda *. Cara ini lebih sederhana, dimana fungsi lm() akan secara otomatis menerjemahkannya sebagai serangkaian variabel tunggal dan interaksinya. Berikut adalah contoh penerapannya menggunakan kedua cara tersebut:

# cara 1
lm.inter <- lm(medv~lstat+age+lstat:age, data=Boston)
anova(lm.inter)
# Cara 2
lm.inter <- lm(medv~lstat*age, data=Boston)
anova(lm.inter)