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:

  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 riri vs ri−1ri−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.

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:

  1. Membentuk model linier dari variabel dataset: fit <- lm(y~(variabel prediktor)).

  2. Menghitung error absolut (abse <- abs(resid(fit))) dan nilai *fitted value dari model (yhat <- fitted(fit).

  3. Membentuk kembali model menggunakan data residual absolut (efit <- lm(abse~poly(yhat,2))) dan menghitung residual fitted value (shat <- fitted(efit)).

  4. 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 :

  1. https://bookdown.org/moh_rosidi2610/Metode_Numerik/datamod.html

  2. Akritas, M. 2016. PROBABILITY & STATISTICS WITH R FOR ENGINEERS AND SCIENTISTS. Pearson.

  3. Bloomfield, V.A. 2014. Using R for Numerical Analysis in Science and Engineering. CRC Press.

  4. James, G., Witten, D., Hastie, T., Tibshirani, R. 2013. An Introduction to Statistical Learning. Springer.

  5. 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.

  6. Lee, A., Ihaka, R., Triggs, C. 2012. ADVANCED STATISTICAL MODELLING.

  7. Primartha, R. 2018. Belajar Machine Learning Teori dan Praktik. Penerbit Informatika : Bandung.

  8. Rosadi,D. 2016. Analisis Statistika dengan R. Gadjah Mada University Press: Yogyakarta.

  9. STHDA. <(http://www.sthda.com/english/>