HELLO!
Teknik Informatika UIN MAULANA MALIK IBRAHIM MALANG|| Lalu Egiq Fahalik Anggara_220605110066 |kelas C
KALKULUS by Prof. Dr. Suhartono, M.Kom
PEMODELAN DATA
12.1Regresi 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:
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.
Error atau residu berdristribusi normal: normalitas error di cek menggunakan qq-plot atau uji normalitas yang telah dibahas pada Chapter 11.4.
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.
Error bersifat independen: independensi residual dapat dideteksi melaui plot korelasi serial dengan mengeplotkan riri vs ri−1ri−1.
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.
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.
12.1.1 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)
## Warning: package 'MASS' was built under R version 4.2.2
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 23243.9 601.62 < 2.2e-16 ***
## Residuals 504 19472 38.6
## ---
## 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.168 -3.990 -1.318 2.034 24.500
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 34.55384 0.56263 61.41 <2e-16 ***
## lstat -0.95005 0.03873 -24.53 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.216 on 504 degrees of freedom
## Multiple R-squared: 0.5441, Adjusted R-squared: 0.5432
## F-statistic: 601.6 on 1 and 504 DF, p-value: < 2.2e-16
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/slr-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
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.87857, p-value < 2.2e-16
# varians bersifat konstan
# (varians tidak konstan)
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(lm.fit)
##
## studentized Breusch-Pagan test
##
## data: lm.fit
## BP = 15.497, df = 1, p-value = 8.262e-05
# error bersifat independen
# (error tidak bersifat independen)
dwtest(lm.fit, alternative = "two.sided")
##
## Durbin-Watson test
##
## data: lm.fit
## DW = 0.8915, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is not 0
# deteksi outlier (stdres > 2)
sres <- rstandard(lm.fit)
sres[which(abs(sres)>2)] # nomor observasi outlier
## 99 142 162 163 164 167 181 187
## 2.038479 2.037877 2.758553 2.787466 3.000496 3.058318 2.002509 3.172448
## 196 204 205 215 225 226 229 234
## 2.947239 2.833127 2.933544 2.788670 2.286679 3.199842 2.559571 2.822187
## 257 258 262 263 268 281 283 284
## 2.000582 3.274417 2.488441 3.201252 3.627671 2.325519 2.307994 2.976149
## 369 370 371 372 373 375 413 506
## 2.991366 3.062883 2.945717 3.946264 3.847133 2.498416 2.600516 -2.443658
# influential observation
# observasi > percentil 50
# tidak ada observasi dengan jarak cook yang extrim
cooksD <- cooks.distance(lm.fit)
p50 <- qf(0.5, df1=2, df2=560-2)
any(cooksD>p50)
## [1] FALSE
12.1.2 Regresi Linier Berganda (Multiple Linier Regression)
Pada Chapter 12.1.2, 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)
## Warning: package 'car' was built under R version 4.2.2
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.2.2
# Model pertama
lm.fit1 <- lm(medv ~ lstat+age, data=Boston)
anova(lm.fit1)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## lstat 1 23243.9 23243.9 609.955 < 2.2e-16 ***
## age 1 304.3 304.3 7.984 0.004907 **
## Residuals 503 19168.1 38.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.fit1)
##
## Call:
## lm(formula = medv ~ lstat + age, data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.981 -3.978 -1.283 1.968 23.158
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 33.22276 0.73085 45.458 < 2e-16 ***
## lstat -1.03207 0.04819 -21.416 < 2e-16 ***
## age 0.03454 0.01223 2.826 0.00491 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.173 on 503 degrees of freedom
## Multiple R-squared: 0.5513, Adjusted R-squared: 0.5495
## F-statistic: 309 on 2 and 503 DF, p-value: < 2.2e-16
vif(lm.fit1)
## lstat age
## 1.569395 1.569395
Berdasarkan hasil perhitungan diketahui nilai VIF dari model < 10, sehingga asumsi multikolinearitas terpenuhi. Untuk asumsi lainnya dapat dicek pada plot residual yang ditampilkan
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/mlr1-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
# Model 2
lm.fit2 <- lm(medv~., data=Boston)
anova(lm.fit2)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## crim 1 6440.8 6440.8 286.0300 < 2.2e-16 ***
## zn 1 3554.3 3554.3 157.8452 < 2.2e-16 ***
## indus 1 2551.2 2551.2 113.2984 < 2.2e-16 ***
## chas 1 1529.8 1529.8 67.9393 1.543e-15 ***
## nox 1 76.2 76.2 3.3861 0.0663505 .
## rm 1 10938.1 10938.1 485.7530 < 2.2e-16 ***
## age 1 90.3 90.3 4.0087 0.0458137 *
## dis 1 1779.5 1779.5 79.0262 < 2.2e-16 ***
## rad 1 34.1 34.1 1.5159 0.2188325
## tax 1 329.6 329.6 14.6352 0.0001472 ***
## ptratio 1 1309.3 1309.3 58.1454 1.266e-13 ***
## black 1 593.3 593.3 26.3496 4.109e-07 ***
## lstat 1 2410.8 2410.8 107.0634 < 2.2e-16 ***
## Residuals 492 11078.8 22.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.fit2)
##
## Call:
## lm(formula = medv ~ ., data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.595 -2.730 -0.518 1.777 26.199
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.646e+01 5.103e+00 7.144 3.28e-12 ***
## crim -1.080e-01 3.286e-02 -3.287 0.001087 **
## zn 4.642e-02 1.373e-02 3.382 0.000778 ***
## indus 2.056e-02 6.150e-02 0.334 0.738288
## chas 2.687e+00 8.616e-01 3.118 0.001925 **
## nox -1.777e+01 3.820e+00 -4.651 4.25e-06 ***
## rm 3.810e+00 4.179e-01 9.116 < 2e-16 ***
## age 6.922e-04 1.321e-02 0.052 0.958229
## dis -1.476e+00 1.995e-01 -7.398 6.01e-13 ***
## rad 3.060e-01 6.635e-02 4.613 5.07e-06 ***
## tax -1.233e-02 3.760e-03 -3.280 0.001112 **
## ptratio -9.527e-01 1.308e-01 -7.283 1.31e-12 ***
## black 9.312e-03 2.686e-03 3.467 0.000573 ***
## lstat -5.248e-01 5.072e-02 -10.347 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.745 on 492 degrees of freedom
## Multiple R-squared: 0.7406, Adjusted R-squared: 0.7338
## F-statistic: 108.1 on 13 and 492 DF, p-value: < 2.2e-16
vif(lm.fit2)
## crim zn indus chas nox rm age dis
## 1.792192 2.298758 3.991596 1.073995 4.393720 1.933744 3.100826 3.955945
## rad tax ptratio black lstat
## 7.484496 9.008554 1.799084 1.348521 2.941491
Berdasarkan hasil perhitungan diperoleh nilai VIF untuk seluruh varaibel prediktor dalam model < 10, sehingga asumsi multikolinearitas terpenuhi. Untuk asumsi lainnya dapat dicek pada plot residual yang ditampilkan
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/mlr2-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
Pada model ketiga, 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 6440.8 6440.8 280.4782 < 2.2e-16 ***
## zn 1 3554.3 3554.3 154.7815 < 2.2e-16 ***
## indus 1 2551.2 2551.2 111.0993 < 2.2e-16 ***
## chas 1 1529.8 1529.8 66.6206 2.768e-15 ***
## nox 1 76.2 76.2 3.3204 0.06903 .
## rm 1 10938.1 10938.1 476.3247 < 2.2e-16 ***
## age 1 90.3 90.3 3.9309 0.04796 *
## dis 1 1779.5 1779.5 77.4923 < 2.2e-16 ***
## rad 1 34.1 34.1 1.4865 0.22335
## ptratio 1 1401.2 1401.2 61.0172 3.434e-14 ***
## black 1 611.6 611.6 26.6323 3.574e-07 ***
## lstat 1 2388.0 2388.0 103.9924 < 2.2e-16 ***
## Residuals 493 11321.0 23.0
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.fit3)
##
## Call:
## lm(formula = medv ~ crim + zn + indus + chas + nox + rm + age +
## dis + rad + ptratio + black + lstat, data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.1449 -2.9143 -0.5661 1.7438 26.3113
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.463e+01 5.123e+00 6.760 3.92e-11 ***
## crim -1.067e-01 3.319e-02 -3.216 0.001384 **
## zn 3.637e-02 1.351e-02 2.692 0.007354 **
## indus -6.778e-02 5.583e-02 -1.214 0.225317
## chas 3.029e+00 8.637e-01 3.507 0.000494 ***
## nox -1.870e+01 3.847e+00 -4.862 1.57e-06 ***
## rm 3.912e+00 4.209e-01 9.294 < 2e-16 ***
## age -6.054e-04 1.333e-02 -0.045 0.963804
## dis -1.488e+00 2.014e-01 -7.390 6.31e-13 ***
## rad 1.346e-01 4.125e-02 3.262 0.001182 **
## ptratio -9.851e-01 1.317e-01 -7.478 3.48e-13 ***
## black 9.546e-03 2.711e-03 3.521 0.000470 ***
## lstat -5.222e-01 5.121e-02 -10.198 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.792 on 493 degrees of freedom
## Multiple R-squared: 0.735, Adjusted R-squared: 0.7285
## F-statistic: 113.9 on 12 and 493 DF, p-value: < 2.2e-16
vif(lm.fit3)
## crim zn indus chas nox rm age dis
## 1.791940 2.184240 3.226015 1.058220 4.369271 1.923075 3.098044 3.954446
## rad ptratio black lstat
## 2.837494 1.788839 1.347564 2.940800
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/mlr3-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
12.1.3 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:x2y1 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)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## lstat 1 23243.9 23243.9 614.8498 < 2.2e-16 ***
## age 1 304.3 304.3 8.0481 0.004739 **
## lstat:age 1 190.4 190.4 5.0368 0.025249 *
## Residuals 502 18977.7 37.8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.inter)
##
## Call:
## lm(formula = medv ~ lstat + age + lstat:age, data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.806 -4.045 -1.333 2.085 27.552
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 36.0885359 1.4698355 24.553 < 2e-16 ***
## lstat -1.3921168 0.1674555 -8.313 8.78e-16 ***
## age -0.0007209 0.0198792 -0.036 0.9711
## lstat:age 0.0041560 0.0018518 2.244 0.0252 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.149 on 502 degrees of freedom
## Multiple R-squared: 0.5557, Adjusted R-squared: 0.5531
## F-statistic: 209.3 on 3 and 502 DF, p-value: < 2.2e-16
# Cara 2
lm.inter <- lm(medv~lstat*age, data=Boston)
anova(lm.inter)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## lstat 1 23243.9 23243.9 614.8498 < 2.2e-16 ***
## age 1 304.3 304.3 8.0481 0.004739 **
## lstat:age 1 190.4 190.4 5.0368 0.025249 *
## Residuals 502 18977.7 37.8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.inter)
##
## Call:
## lm(formula = medv ~ lstat * age, data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.806 -4.045 -1.333 2.085 27.552
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 36.0885359 1.4698355 24.553 < 2e-16 ***
## lstat -1.3921168 0.1674555 -8.313 8.78e-16 ***
## age -0.0007209 0.0198792 -0.036 0.9711
## lstat:age 0.0041560 0.0018518 2.244 0.0252 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.149 on 502 degrees of freedom
## Multiple R-squared: 0.5557, Adjusted R-squared: 0.5531
## F-statistic: 209.3 on 3 and 502 DF, p-value: < 2.2e-16
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/lminter-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
12.1.4 Transformasi Non-linier Pada Prediktor
Fungsi lm() juga dapat melibatkan transformasi non-linier prediktor pada argumen formula-nya. Transformasi non-linier dilakukan dengan menambahkan fungsi identitas I(). Sebagai contoh model berikut melibatkan transformasi kuadrat pada variabel lstat:
lm.trans <- lm(medv~lstat+I(lstat^2), data=Boston)
anova(lm.trans)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## lstat 1 23243.9 23243.9 761.81 < 2.2e-16 ***
## I(lstat^2) 1 4125.1 4125.1 135.20 < 2.2e-16 ***
## Residuals 503 15347.2 30.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.trans)
##
## Call:
## lm(formula = medv ~ lstat + I(lstat^2), data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.2834 -3.8313 -0.5295 2.3095 25.4148
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 42.862007 0.872084 49.15 <2e-16 ***
## lstat -2.332821 0.123803 -18.84 <2e-16 ***
## I(lstat^2) 0.043547 0.003745 11.63 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.524 on 503 degrees of freedom
## Multiple R-squared: 0.6407, Adjusted R-squared: 0.6393
## F-statistic: 448.5 on 2 and 503 DF, p-value: < 2.2e-16
Cara yang lebih sederhana untuk melibatkan tranformasi polinomial kedalam model linier adalah dengan menggunakan fungsi poly(). Berikut adalah contoh penerapannya:
lm.trans <- lm(medv~poly(lstat,2), data=Boston)
anova(lm.trans)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## poly(lstat, 2) 2 27369 13684.5 448.51 < 2.2e-16 ***
## Residuals 503 15347 30.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm.trans)
##
## Call:
## lm(formula = medv ~ poly(lstat, 2), data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.2834 -3.8313 -0.5295 2.3095 25.4148
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 22.5328 0.2456 91.76 <2e-16 ***
## poly(lstat, 2)1 -152.4595 5.5237 -27.60 <2e-16 ***
## poly(lstat, 2)2 64.2272 5.5237 11.63 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.524 on 503 degrees of freedom
## Multiple R-squared: 0.6407, Adjusted R-squared: 0.6393
## F-statistic: 448.5 on 2 and 503 DF, p-value: < 2.2e-16
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/lmtrans-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
FUngsi trasnformasi lainnya juga dapat digunakan pada pembentukan model linier. Berikut adalah contoh penerapan transformasi logaritmik dan eksponensial pada model linier:
summary(lm(medv~log(lstat), data=Boston))
##
## Call:
## lm(formula = medv ~ log(lstat), data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.4599 -3.5006 -0.6686 2.1688 26.0129
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 52.1248 0.9652 54.00 <2e-16 ***
## log(lstat) -12.4810 0.3946 -31.63 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.329 on 504 degrees of freedom
## Multiple R-squared: 0.6649, Adjusted R-squared: 0.6643
## F-statistic: 1000 on 1 and 504 DF, p-value: < 2.2e-16
summary(lm(medv~exp(lstat), data=Boston))
##
## Call:
## lm(formula = medv ~ exp(lstat), data = Boston)
##
## Residuals:
## Min 1Q Median 3Q Max
## -17.573 -5.473 -1.373 2.427 27.427
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.257e+01 4.090e-01 55.187 <2e-16 ***
## exp(lstat) -4.436e-16 2.785e-16 -1.592 0.112
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.183 on 504 degrees of freedom
## Multiple R-squared: 0.005006, Adjusted R-squared: 0.003032
## F-statistic: 2.536 on 1 and 504 DF, p-value: 0.1119
12.1.5 Regresi linier dengan Pembobotan
Pada pembahasan sebelumnya kita telah menyaksikan bahwa sebagian model yang telah terbentuk tidak memenuhi asumsi varians yang konstan. Untuk mengatasi hal tersebut, kita dapat membentuk regresi dengan memberikan bobot sebesar invers variansnya. Untuk melakukannya diperlukan beberapa tahapan, antara lain:
Membentuk model linier dari variabel dataset: fit <- lm(y~(variabel prediktor)).
Menghitung error absolut (abse <- abs(resid(fit))) dan nilai *fitted value dari model (yhat <- fitted(fit).
Membentuk kembali model menggunakan data residual absolut (efit <- lm(abse~poly(yhat,2))) dan menghitung residual fitted value (shat <- fitted(efit)).
Gunakan nilai bobot w <- 1/shat^2 untuk membentuk model regresi dengan pembobotan (fitw <-lm(y~(variabel prediktor), weights=w)).
Kita akan membentuk kembali model menggunakan dataset Boston dengan menggunakan seluruh variabel, namun pada model kali ini kita akan memberikan bobot pada model yang terbentuk. Berikut adalah sintaks yang digunakan:
# langkah 1
fit <- lm(medv~., data=Boston)
# langkah 2
abse <- abs(resid(fit))
yhat <- fitted(fit)
# langkah 3
efit <- lm(abse~poly(yhat,2))
shat <- fitted(efit)
# langkah 4
fitw <- lm(medv~., data = Boston, weights = 1/(shat^2))
anova(fitw)
## Analysis of Variance Table
##
## Response: medv
## Df Sum Sq Mean Sq F value Pr(>F)
## crim 1 367.13 367.13 188.5179 < 2.2e-16 ***
## zn 1 148.25 148.25 76.1235 < 2.2e-16 ***
## indus 1 124.51 124.51 63.9328 9.264e-15 ***
## chas 1 41.31 41.31 21.2115 5.244e-06 ***
## nox 1 38.33 38.33 19.6841 1.128e-05 ***
## rm 1 363.47 363.47 186.6396 < 2.2e-16 ***
## age 1 30.37 30.37 15.5945 8.994e-05 ***
## dis 1 105.70 105.70 54.2755 7.407e-13 ***
## rad 1 0.00 0.00 0.0003 0.9854
## tax 1 30.01 30.01 15.4080 9.897e-05 ***
## ptratio 1 73.76 73.76 37.8761 1.565e-09 ***
## black 1 64.38 64.38 33.0607 1.570e-08 ***
## lstat 1 334.30 334.30 171.6631 < 2.2e-16 ***
## Residuals 492 958.14 1.95
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(fitw)
##
## Call:
## lm(formula = medv ~ ., data = Boston, weights = 1/(shat^2))
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -4.2522 -0.7946 -0.0367 0.6976 9.2986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 39.158445 4.474180 8.752 < 2e-16 ***
## crim -0.137382 0.032536 -4.222 2.88e-05 ***
## zn 0.039751 0.013668 2.908 0.003797 **
## indus 0.031072 0.052112 0.596 0.551285
## chas 2.886787 0.816335 3.536 0.000444 ***
## nox -15.844212 3.221769 -4.918 1.19e-06 ***
## rm 2.322467 0.414237 5.607 3.44e-08 ***
## age 0.005865 0.011469 0.511 0.609298
## dis -1.137778 0.177740 -6.401 3.60e-10 ***
## rad 0.302548 0.058053 5.212 2.76e-07 ***
## tax -0.011376 0.003277 -3.471 0.000564 ***
## ptratio -0.721781 0.115976 -6.224 1.04e-09 ***
## black 0.008784 0.002342 3.751 0.000197 ***
## lstat -0.621847 0.047462 -13.102 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.396 on 492 degrees of freedom
## Multiple R-squared: 0.6424, Adjusted R-squared: 0.633
## F-statistic: 68 on 13 and 492 DF, p-value: < 2.2e-16
library(EBImage)
Image <- readImage("https://bookdown.org/moh_rosidi2610/Metode_Numerik/Metode_Numerik_files/figure-html/lmw-1.png")
Image1 <- Image + 0.2
par(mfrow= c(1,2))
plot(Image1)
12.2 Regresi Logistik
Pada Chapter 12.2, kita telah membahas cara untuk membangun model dengan output berupa variabel dengan nilai numerik. Pada Chapter 12.2, kita akan belajar cara membentuk model regresi dengan 2 respons (0 dan 1). Pada regresi ini pembentukan model didasarkan oleh kurva logistik, dimana melalui kurva tersebut nilai yang dihasilkan akan memiliki rentang dari 0 sampai 1. Karena model yang dibuat bertujuan untuk memprediksi dua buah kemungkinan (0 atau 1), maka diperlukan suatu nilai ambang (y<0,5 = 0 dan y >= 0,5 = 1).
Fungsi glm() dapat digunakan untuk membentuk model regresi logistik. Format umum fungsi tersebut adalah sebagai berikut:
glm(formula, family = gaussian, data, weights, subset,)
Catatan: • formula : formula model yang hendak dibentuk. • family : distribusi yang digunakan. Untuk regresi logistik digunakan argumen family=binomial • data: data yang digunakan untuk membentuk model. • subset : subset data yang akan digunakan dalam pembentukan model. • weight : nilai pembobotan dalam pembentukan model.
refrensi :
https://bookdown.org/moh_rosidi2610/Metode_Numerik/datamod.html
Akritas, M. 2016. PROBABILITY & STATISTICS WITH R FOR ENGINEERS AND SCIENTISTS. Pearson.
Bloomfield, V.A. 2014. Using R for Numerical Analysis in Science and Engineering. CRC Press.
James, G., Witten, D., Hastie, T., Tibshirani, R. 2013. An Introduction to Statistical Learning. Springer.
Kerns, G.J., 2018. Introduction to Probability and Statistics Using R. Course notes for University of Auckland Paper STATS 330. http://ipsur.r-forge.r-project.org/book/download/IPSUR.pdf.
Lee, A., Ihaka, R., Triggs, C. 2012. ADVANCED STATISTICAL MODELLING.
Primartha, R. 2018. Belajar Machine Learning Teori dan Praktik. Penerbit Informatika : Bandung.
Rosadi,D. 2016. Analisis Statistika dengan R. Gadjah Mada University Press: Yogyakarta.
STHDA. <(http://www.sthda.com/english/>