Penduduk adalah kekayaan nyata suatu bangsa. Kualitas hidup yang dimiliki suatu negara ataupun wilayah, menggambarkan kesejahteraan rakyat dan keberhasilan dari program-program yang dibuat oleh pemerintah untuk meningkatkan derajat kehidupan manusia. Terkait dengan kualitas hidup terdapat unsur angka harapan hidup (AHH) di dalamnya. Angka harapan hidup merupakan salah satu indikator yang digunakan untuk menilai derajat kesehatan penduduk yang menggambarkan kualitas hidup. Banyak hal yang melatarbelakangi angka harapan hidup di suatu negara.

Penelitian ini bertujuan untuk menganalisis dan mengidentifikasi variabel-variabel yang berpengaruh terhadap angka harapan hidup di negara-negara Timur Tengah pada tahun 2011-2015. Metode yang digunakan dalam penelitian ini adalah analisis regresi robust dengan estimasi GS.

Regresi robust merupakan salah satu metode regresi untuk menangani data dimana residunya berdistribusi tidak normal dan terdapat outlier yang dapat berpengaruh pada data. Metode ini tidak dapat menormalkan residu model, tetapi model dibuat lebih resistance terhadap outlier. Terdapat beberapa metode estimasi dalam regresi robust, salah satunya adalah estimasi GS (Generalized Scale). Estimasi GS merupakan penyelesaian minimasi dari estimasi M berdasarkan residu skala berpasangan.

Data yang Digunakan:

library(readxl)
data <- read_excel(path = "D:/KULIAH/KULIAH SEMESTER 4/Sistem Informasi Manajemen/SETELAH UTS/tugas individu RMarkdown/Regresi Robust/data.xlsx", col_names = TRUE)
data
## # A tibble: 70 × 5
##        Y    X1    X2    X3    X4
##    <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  76.5  1.32  27.8    97   7.8
##  2  81.7  2.89  27      94  12.8
##  3  73.7  0.36  28.7    98   9.9
##  4  74.5  0     28.3    98   9.5
##  5  65.8  0.04  23.4    69   2.8
##  6  74.6  0     29.1    99   7  
##  7  76.9  0.45  26.3    99   9.5
##  8  76.4  0.44  26.1    99   8.9
##  9  76.2  1.66  25      99   8.6
## 10  82.1  2.74  27.2    95  13  
## # ℹ 60 more rows

Terdapat 5 variabel pada data ini:
* Life expectancy (Y) : Harapan hidup rata-rata untuk kedua jenis kelamin pada tahun yang berbeda dari 2011 hingga 2015.
* Alcohol consumption (X1) : Konsumsi alkohol yang tercatat dalam liter alkohol murni per kapita dengan usia 15+
* BMI (X2) : Ukuran status gizi pada orang dewasa.
* Polio (X3) : % cakupan imunisasi polio (Pol3) pada anak usia 1 tahun.
* Schooling (X4) : Rata-rata tahun yang dihabiskan orang berusia 25+ tahun dalam pendidikan formal.

Langkah 1: Melakukan Uji Asumsi Klasik

1. Uji Normalitas

  • Hipotesis
    • H0: Sesatan beridstribusi normal
    • H1: Sesatan tidak berdistribusi normal
  • Tingkat signifikansi: \(a\) = 5%
  • Daerah Kritis: H0 ditolak jika p-value < \(a\) = 0.05
  • Statistik uji:
library(car)
library(lmtest)
model.mkt=lm(Y~.,data=data)
residu=resid(model.mkt)
ks.test(residu,"pnorm")
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  residu
## D = 0.17875, p-value = 0.01988
## alternative hypothesis: two-sided
  • Kesimpulan: Karena p-value = 0.01988 < \(a\) = 0.05 maka H0 ditolak yang berarti sesatan tidak berdistribusi normal.

2. Uji Homogenitas

  • Hipotesis:
    • H0: Variansi sesatan homogen
    • H1: Variansi sesatan tidak homogen
  • Tingkat siginifikansi: \(a\) = 0.05
  • Daerah kritis: H0 ditolak jika p-value < \(a\) = 0.05
  • Statistik uji:
library(lmtest)
bptest(model.mkt)
## 
##  studentized Breusch-Pagan test
## 
## data:  model.mkt
## BP = 9.2956, df = 4, p-value = 0.05412
  • Kesimpulan: Karena p-value = 0.05412 > \(a\) = 0.05 maka H0 diterima yang berarti variansi sesatan homogen.

3. Uji Non Autokorelasi

  • Hipotesis:
    • H0: Tidak terdapat autokorelasi
    • H1: Terdapat autokorelasi
  • Tingkat signifikansi: \(a\) = 0.05
  • Daerah kritis: H0 ditolak jika p-value < \(a\) = 0.05
  • Statistik Uji:
dwtest(model.mkt)
## 
##  Durbin-Watson test
## 
## data:  model.mkt
## DW = 2.1815, p-value = 0.7693
## alternative hypothesis: true autocorrelation is greater than 0
  • Kesimpulan: Karena p-value = 0.7693 > \(a\) = 0.05 maka H0 diterima yang berarti tidak terdapat autokorelasi.

4. Uji Non Multikolinearitas

  • Hipotesis
    • H0: Tidak terdapat multikolinearitas antar variabel independen
    • H1: Terdapat multikolinearitas antar variabel independen
  • Tingkat signifikansi: \(a\) = 0.05
  • Daerah kritis: H0 ditolak jika terdapat nilai VIF yang melebihi 10
  • Statistik Uji:
vif(model.mkt)
##       X1       X2       X3       X4 
## 1.822114 1.238578 2.026257 3.411276
  • Kesimpulan: Karena keempat nilai VIF < 10, maka dapat disimpulkan bahwa tidak terdapat multikolinearitas antar variabel independen.

Langkah 2: Identifikasi Outlier

boxplot(data)
Dilihat dari boxplot tersebut dapat disimpulkan terdapat _outlier_ pada data. Setelah dilakukan uji asumsi klasik untuk mengetahui apakah residu dari model memenuhi asumsi sebelum masuk ke analisis regresi _robust_, didapatkan bahwa semua asumsi terpenuhi kecuali normalitas, hal ini disebabkan karena adanya _outlier_ pada data.

Dilihat dari boxplot tersebut dapat disimpulkan terdapat outlier pada data. Setelah dilakukan uji asumsi klasik untuk mengetahui apakah residu dari model memenuhi asumsi sebelum masuk ke analisis regresi robust, didapatkan bahwa semua asumsi terpenuhi kecuali normalitas, hal ini disebabkan karena adanya outlier pada data.

Langkah 3: Mengestimasi Parameter Regresi Menggunakan Estimasi M

Iterasi dilakukan sampai konvergen

library(BBmisc)
#ESTIMASI M
#ITERASI 1
#mencari galatnya
res <- model.mkt$residuals
#Menghitung sig
sig1<- median(abs(res-median(res)))/0.6745
#Menghitung nilai ui
u<- vector()
for(i in 1:length(res)){
  u[i]<- res[i]/sig1
}
#Menghitung Pembobot
w=weights(model.mkt)
for (i in 1:70){
  if((abs(u[i]))>1.345){w[i]=1.345/abs(u[i])}
  else w[i]=1
}
modelM1 <- lm(Y~.,data=data, weights=w)
summary(modelM1)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.81546 -0.89089 -0.02627  1.25387  3.08476 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 53.14513    3.86429  13.753  < 2e-16 ***
## X1           1.79584    0.32399   5.543 5.81e-07 ***
## X2           0.29247    0.14183   2.062  0.04320 *  
## X3           0.06870    0.01997   3.439  0.00102 ** 
## X4           0.73422    0.16368   4.486 3.03e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.689 on 65 degrees of freedom
## Multiple R-squared:  0.831,  Adjusted R-squared:  0.8206 
## F-statistic: 79.91 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res1<- modelM1$residuals

#ITERASI 2
#Menghitung sig
sig2<- median(abs(res1-median(res1)))/0.6745
#Menghitung nilai ui
u2<- vector()
for(i in 1:length(res1)){
  u2[i]<- res1[i]/sig2
}
#Menghitung Pembobot
w1=weights(modelM1)
for (i in 1:70){
  if((abs(u2[i]))>1.345){w1[i]=1.345/abs(u2[i])}
  else w1[i]=1
}
modelM2 <- lm(Y~.,data=data, weights=w1)
summary(modelM2)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w1)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.66277 -0.83960  0.01062  1.24233  2.87202 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 53.00594    3.71396  14.272  < 2e-16 ***
## X1           1.73997    0.31228   5.572 5.20e-07 ***
## X2           0.29163    0.13635   2.139 0.036219 *  
## X3           0.06986    0.01916   3.646 0.000531 ***
## X4           0.74508    0.15710   4.743 1.19e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.616 on 65 degrees of freedom
## Multiple R-squared:  0.8419, Adjusted R-squared:  0.8322 
## F-statistic: 86.54 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res2<- modelM2$residuals
#ITERASI 3
#Menghitung sig
sig3<- median(abs(res2-median(res2)))/0.6745
#Menghitung nilai ui
u3<- vector()
for(i in 1:length(res2)){
  u3[i]<- res2[i]/sig3
}
#Menghitung Pembobot
w2=weights(modelM2)
for (i in 1:70){
  if((abs(u3[i]))>1.345){w2[i]=1.345/abs(u3[i])}
  else w2[i]=1
}
modelM3 <- lm(Y~.,data=data, weights=w2)
summary(modelM3)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w2)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.60875 -0.82205  0.00565  1.22841  2.79565 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.91866    3.65276  14.487  < 2e-16 ***
## X1           1.71654    0.30747   5.583 4.98e-07 ***
## X2           0.29326    0.13413   2.186 0.032393 *  
## X3           0.07006    0.01882   3.723 0.000413 ***
## X4           0.75048    0.15437   4.861 7.71e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.586 on 65 degrees of freedom
## Multiple R-squared:  0.8463, Adjusted R-squared:  0.8368 
## F-statistic: 89.46 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res3<- modelM3$residuals
#ITERASI 4
#Menghitung sig
sig4<- median(abs(res3-median(res3)))/0.6745
#Menghitung nilai ui
u4<- vector()
for(i in 1:length(res3)){
  u4[i]<- res3[i]/sig4
}
#Menghitung Pembobot
w3=weights(modelM3)
for (i in 1:70){
  if((abs(u4[i]))>1.345){w3[i]=1.345/abs(u4[i])}
  else w3[i]=1
}
modelM4 <- lm(Y~.,data=data, weights=w3)
summary(modelM4)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w3)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.57929 -0.82938  0.00333  1.21812  2.75952 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.85941    3.62118  14.597  < 2e-16 ***
## X1           1.70578    0.30500   5.593 4.79e-07 ***
## X2           0.29493    0.13299   2.218 0.030077 *  
## X3           0.07011    0.01864   3.761 0.000365 ***
## X4           0.75301    0.15295   4.923 6.14e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.57 on 65 degrees of freedom
## Multiple R-squared:  0.8485, Adjusted R-squared:  0.8392 
## F-statistic:    91 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res4<- modelM4$residuals
#ITERASI 5
#Menghitung sig
sig5<- median(abs(res4-median(res4)))/0.6745
#Menghitung nilai ui
u5<- vector()
for(i in 1:length(res4)){
  u5[i]<- res4[i]/sig5
}
#Menghitung Pembobot
w4=weights(modelM4)
for (i in 1:70){
  if((abs(u5[i]))>1.345){w4[i]=1.345/abs(u5[i])}
  else w4[i]=1
}
modelM5 <- lm(Y~.,data=data, weights=w4)
summary(modelM5)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w4)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.57024 -0.83621  0.00241  1.21314  2.74874 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.83047    3.61126  14.629  < 2e-16 ***
## X1           1.70216    0.30425   5.595 4.75e-07 ***
## X2           0.29586    0.13263   2.231 0.029158 *  
## X3           0.07012    0.01859   3.773 0.000351 ***
## X4           0.75391    0.15252   4.943 5.70e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.565 on 65 degrees of freedom
## Multiple R-squared:  0.8492, Adjusted R-squared:  0.8399 
## F-statistic:  91.5 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res5<- modelM5$residuals
#ITERASI 6
#Menghitung sig
sig6<- median(abs(res5-median(res5)))/0.6745
#Menghitung nilai ui
u6<- vector()
for(i in 1:length(res5)){
  u6[i]<- res5[i]/sig6
}
#Menghitung Pembobot
w5=weights(modelM5)
for (i in 1:70){
  if((abs(u6[i]))>1.345){w5[i]=1.345/abs(u6[i])}
  else w5[i]=1
}
modelM6 <- lm(Y~.,data=data, weights=w5)
summary(modelM6)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w5)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56648 -0.83917  0.00204  1.21075  2.74453 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.81622    3.60723  14.642  < 2e-16 ***
## X1           1.70083    0.30395   5.596 4.73e-07 ***
## X2           0.29634    0.13249   2.237 0.028736 *  
## X3           0.07013    0.01856   3.778 0.000346 ***
## X4           0.75425    0.15235   4.951 5.53e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.563 on 65 degrees of freedom
## Multiple R-squared:  0.8495, Adjusted R-squared:  0.8402 
## F-statistic:  91.7 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res6<- modelM6$residuals
#ITERASI 7
#Menghitung sig
sig7<- median(abs(res6-median(res6)))/0.6745
#Menghitung nilai ui
u7<- vector()
for(i in 1:length(res6)){
  u7[i]<- res6[i]/sig7
}
#Menghitung Pembobot
w6=weights(modelM6)
for (i in 1:70){
  if((abs(u7[i]))>1.345){w6[i]=1.345/abs(u7[i])}
  else w6[i]=1
}
modelM7 <- lm(Y~.,data=data, weights=w6)
summary(modelM7)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w6)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56464 -0.84058  0.00187  1.20958  2.74253 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80909    3.60529  14.648  < 2e-16 ***
## X1           1.70024    0.30381   5.596 4.72e-07 ***
## X2           0.29659    0.13242   2.240 0.028528 *  
## X3           0.07013    0.01855   3.780 0.000343 ***
## X4           0.75440    0.15226   4.955 5.46e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.562 on 65 degrees of freedom
## Multiple R-squared:  0.8496, Adjusted R-squared:  0.8404 
## F-statistic:  91.8 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res7<- modelM7$residuals
#ITERASI 8
#Menghitung sig
sig8<- median(abs(res7-median(res7)))/0.6745
#Menghitung nilai ui
u8<- vector()
for(i in 1:length(res7)){
  u8[i]<- res7[i]/sig8
}
#Menghitung Pembobot
w7=weights(modelM7)
for (i in 1:70){
  if((abs(u8[i]))>1.345){w7[i]=1.345/abs(u8[i])}
  else w7[i]=1
}
modelM8 <- lm(Y~.,data=data, weights=w7)
summary(modelM8)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w7)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56373 -0.84127  0.00179  1.20900  2.74155 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80553    3.60434  14.651  < 2e-16 ***
## X1           1.69996    0.30374   5.597 4.71e-07 ***
## X2           0.29671    0.13238   2.241 0.028425 *  
## X3           0.07013    0.01855   3.781 0.000342 ***
## X4           0.75447    0.15222   4.956 5.42e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.562 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8404 
## F-statistic: 91.85 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res8<- modelM8$residuals
#ITERASI 9
#Menghitung sig
sig9<- median(abs(res8-median(res8)))/0.6745
#Menghitung nilai ui
u9<- vector()
for(i in 1:length(res8)){
  u9[i]<- res8[i]/sig9
}
#Menghitung Pembobot
w8=weights(modelM8)
for (i in 1:70){
  if((abs(u9[i]))>1.345){w8[i]=1.345/abs(u9[i])}
  else w8[i]=1
}
modelM9 <- lm(Y~.,data=data, weights=w8)
summary(modelM9)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w8)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56327 -0.84161  0.00175  1.20871  2.74106 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80375    3.60387  14.652  < 2e-16 ***
## X1           1.69983    0.30370   5.597 4.71e-07 ***
## X2           0.29678    0.13237   2.242 0.028374 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75451    0.15220   4.957 5.40e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.87 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res9<- modelM9$residuals
#ITERASI 10
#Menghitung sig
sig10<- median(abs(res9-median(res9)))/0.6745
#Menghitung nilai ui
u10<- vector()
for(i in 1:length(res9)){
  u10[i]<- res9[i]/sig10
}
#Menghitung Pembobot
w9=weights(modelM9)
for (i in 1:70){
  if((abs(u10[i]))>1.345){w9[i]=1.345/abs(u10[i])}
  else w9[i]=1
}
modelM10 <- lm(Y~.,data=data, weights=w9)
summary(modelM10)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w9)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56304 -0.84178  0.00172  1.20856  2.74082 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80286    3.60363  14.653  < 2e-16 ***
## X1           1.69976    0.30369   5.597 4.71e-07 ***
## X2           0.29681    0.13236   2.242 0.028348 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75453    0.15219   4.958 5.39e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.88 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res10<- modelM10$residuals
#ITERASI 11
#Menghitung sig
sig11<- median(abs(res10-median(res10)))/0.6745
#Menghitung nilai ui
u11<- vector()
for(i in 1:length(res10)){
  u11[i]<- res10[i]/sig11
}
#Menghitung Pembobot
w10=weights(modelM10)
for (i in 1:70){
  if((abs(u11[i]))>1.345){w10[i]=1.345/abs(u11[i])}
  else w10[i]=1
}
modelM11 <- lm(Y~.,data=data, weights=w10)
summary(modelM11)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w10)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56293 -0.84187  0.00171  1.20849  2.74070 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80242    3.60351  14.653  < 2e-16 ***
## X1           1.69973    0.30368   5.597 4.71e-07 ***
## X2           0.29682    0.13235   2.243 0.028336 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.39e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.89 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res11<- modelM11$residuals
#ITERASI 12
#Menghitung sig
sig12<- median(abs(res11-median(res11)))/0.6745
#Menghitung nilai ui
u12<- vector()
for(i in 1:length(res11)){
  u12[i]<- res11[i]/sig12
}
#Menghitung Pembobot
w11=weights(modelM11)
for (i in 1:70){
  if((abs(u12[i]))>1.345){w11[i]=1.345/abs(u12[i])}
  else w11[i]=1
}
modelM12 <- lm(Y~.,data=data, weights=w11)
summary(modelM12)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w11)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56288 -0.84191  0.00171  1.20846  2.74064 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80220    3.60345  14.653  < 2e-16 ***
## X1           1.69971    0.30367   5.597 4.71e-07 ***
## X2           0.29683    0.13235   2.243 0.028329 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.39e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.89 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res12<- modelM12$residuals
#ITERASI 13
#Menghitung sig
sig13<- median(abs(res12-median(res12)))/0.6745
#Menghitung nilai ui
u13<- vector()
for(i in 1:length(res12)){
  u13[i]<- res12[i]/sig13
}
#Menghitung Pembobot
w12=weights(modelM12)
for (i in 1:70){
  if((abs(u13[i]))>1.345){w12[i]=1.345/abs(u13[i])}
  else w12[i]=1
}
modelM13 <- lm(Y~.,data=data, weights=w12)
summary(modelM13)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w12)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56285 -0.84193  0.00171  1.20844  2.74061 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80209    3.60343  14.653  < 2e-16 ***
## X1           1.69970    0.30367   5.597 4.71e-07 ***
## X2           0.29683    0.13235   2.243 0.028326 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.38e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.89 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res13<- modelM13$residuals
#ITERASI 14
#Menghitung sig
sig14<- median(abs(res13-median(res13)))/0.6745
#Menghitung nilai ui
u14<- vector()
for(i in 1:length(res13)){
  u14[i]<- res13[i]/sig14
}
#Menghitung Pembobot
w13=weights(modelM13)
for (i in 1:70){
  if((abs(u14[i]))>1.345){w13[i]=1.345/abs(u14[i])}
  else w13[i]=1
}
modelM14 <- lm(Y~.,data=data, weights=w13)
summary(modelM14)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w13)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56283 -0.84194  0.00171  1.20843  2.74060 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80204    3.60341  14.653  < 2e-16 ***
## X1           1.69970    0.30367   5.597 4.71e-07 ***
## X2           0.29683    0.13235   2.243 0.028325 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.38e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.89 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res14<- modelM14$residuals
#ITERASI 15
#Menghitung sig
sig15<- median(abs(res14-median(res14)))/0.6745
#Menghitung nilai ui
u15<- vector()
for(i in 1:length(res14)){
  u15[i]<- res14[i]/sig15
}
#Menghitung Pembobot
w14=weights(modelM14)
for (i in 1:70){
  if((abs(u15[i]))>1.345){w14[i]=1.345/abs(u15[i])}
  else w14[i]=1
}
modelM15 <- lm(Y~.,data=data, weights=w14)
summary(modelM15)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w14)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56283 -0.84195  0.00171  1.20843  2.74059 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80201    3.60340  14.653  < 2e-16 ***
## X1           1.69969    0.30367   5.597 4.71e-07 ***
## X2           0.29684    0.13235   2.243 0.028324 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.38e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic: 91.89 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res15<- modelM15$residuals
#ITERASI 16
#Menghitung sig
sig16<- median(abs(res15-median(res15)))/0.6745
#Menghitung nilai ui
u16<- vector()
for(i in 1:length(res15)){
  u16[i]<- res15[i]/sig16
}
#Menghitung Pembobot
w15=weights(modelM15)
for (i in 1:70){
  if((abs(u16[i]))>1.345){w15[i]=1.345/abs(u16[i])}
  else w15[i]=1
}
modelM16 <- lm(Y~.,data=data, weights=w15)
summary(modelM16)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w15)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.56282 -0.84195  0.00171  1.20842  2.74058 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80200    3.60340  14.653  < 2e-16 ***
## X1           1.69969    0.30367   5.597 4.71e-07 ***
## X2           0.29684    0.13235   2.243 0.028323 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.38e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic:  91.9 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res16<- modelM16$residuals
#ITERASI 17
#Menghitung sig
sig17<- median(abs(res16-median(res16)))/0.6745
#Menghitung nilai ui
u17<- vector()
for(i in 1:length(res16)){
  u17[i]<- res16[i]/sig17
}
#Menghitung Pembobot
w16=weights(modelM16)
for (i in 1:70){
  if((abs(u17[i]))>1.345){w16[i]=1.345/abs(u17[i])}
  else w16[i]=1
}
modelM17 <- lm(Y~.,data=data, weights=w16)
summary(modelM17)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w16)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5628 -0.8419  0.0017  1.2084  2.7406 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80199    3.60340  14.653  < 2e-16 ***
## X1           1.69969    0.30367   5.597 4.71e-07 ***
## X2           0.29684    0.13235   2.243 0.028323 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.38e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic:  91.9 on 4 and 65 DF,  p-value: < 2.2e-16
#Menghitung nilai residu
res17<- modelM17$residuals
#ITERASI 18
#Menghitung sig
sig18<- median(abs(res17-median(res17)))/0.6745
#Menghitung nilai ui
u18<- vector()
for(i in 1:length(res17)){
  u18[i]<- res17[i]/sig18
}
#Menghitung Pembobot
w17=weights(modelM17)
for (i in 1:70){
  if((abs(u18[i]))>1.345){w17[i]=1.345/abs(u18[i])}
  else w17[i]=1
}
modelM18 <- lm(Y~.,data=data, weights=w17)
summary(modelM18)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w17)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5628 -0.8419  0.0017  1.2084  2.7406 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 52.80199    3.60340  14.653  < 2e-16 ***
## X1           1.69969    0.30367   5.597 4.71e-07 ***
## X2           0.29684    0.13235   2.243 0.028323 *  
## X3           0.07013    0.01854   3.782 0.000341 ***
## X4           0.75454    0.15218   4.958 5.38e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.561 on 65 degrees of freedom
## Multiple R-squared:  0.8497, Adjusted R-squared:  0.8405 
## F-statistic:  91.9 on 4 and 65 DF,  p-value: < 2.2e-16

Dapat dilihat nilai estimasi pada iterasi 17 dan 18 nilainya sudah sama, yang berarti sudah konvergen.

Langkah 4: Mengestimasi parameter regresi robust dengan menggunakan estimasi GS

Iterasi dilakukan sampai konvergen

#ITERASI 1
#menghitung selisih antar galat
res1 <- modelM18$residuals
a <- vector()
for(i in 1:(length(res1)-1)){
  a[i] <- res1[i]-res1[i+1]
}
#menghitung sigma_GS
sig_gs1 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u1 <- vector()
for(i in 1:length(res1)){
  u1[i] <- res1[i]/sig_gs1
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w1 <- vector()
for(i in 1:length(u1)){
  if(abs(u1[i]) <= c){
    w1[i] = (1-(u1[i]/0.9958)^2)^2
  }
  else w1[i] = 0
}
modelGS1 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w1)
summary(modelGS1)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w1)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1464 -0.3800  0.0000  0.3705  0.9552 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 50.292232   1.813329  27.735  < 2e-16 ***
## X1           1.494602   0.143222  10.436 9.53e-15 ***
## X2           0.384607   0.067105   5.731 4.14e-07 ***
## X3           0.067959   0.008529   7.968 8.73e-11 ***
## X4           0.825132   0.069494  11.873  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6338 on 56 degrees of freedom
## Multiple R-squared:  0.9684, Adjusted R-squared:  0.9661 
## F-statistic: 429.1 on 4 and 56 DF,  p-value: < 2.2e-16
#ITERASI 2
#menghitung selisih antar galat
res2 <- modelGS1$residuals
a <- vector()
for(i in 1:(length(res2)-1)){
  a[i] <- res2[i]-res2[i+1]
}
#menghitung sigma_GS
sig_gs2 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u2 <- vector()
for(i in 1:length(res2)){
  u2[i] <- res2[i]/sig_gs2
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w2 <- vector()
for(i in 1:length(u2)){
  if(abs(u2[i]) <= c){
    w2[i] = (1-(u2[i]/0.9958)^2)^2
  }
  else w2[i] = 0
}
modelGS2 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w2)
summary(modelGS2)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w2)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1515 -0.2021  0.0000  0.2537  0.8661 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 48.437000   1.639494  29.544  < 2e-16 ***
## X1           1.427576   0.138109  10.337 6.63e-14 ***
## X2           0.453972   0.061242   7.413 1.53e-09 ***
## X3           0.068790   0.007843   8.771 1.30e-11 ***
## X4           0.836745   0.064540  12.965  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6008 on 49 degrees of freedom
## Multiple R-squared:  0.9767, Adjusted R-squared:  0.9748 
## F-statistic: 513.2 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 3
#menghitung selisih antar galat
res3 <- modelGS2$residuals
a <- vector()
for(i in 1:(length(res3)-1)){
  a[i] <- res3[i]-res3[i+1]
}
#menghitung sigma_GS
sig_gs3 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u3 <- vector()
for(i in 1:length(res3)){
  u3[i] <- res3[i]/sig_gs3
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w3 <- vector()
for(i in 1:length(u3)){
  if(abs(u3[i]) <= c){
    w3[i] = (1-(u3[i]/0.9958)^2)^2
  }
  else w3[i] = 0
}
modelGS3 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w3)
summary(modelGS3)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w3)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1160 -0.1917  0.0000  0.1796  0.8371 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 47.243138   1.512476  31.236  < 2e-16 ***
## X1           1.363363   0.134563  10.132 1.65e-13 ***
## X2           0.495481   0.056599   8.754 1.64e-11 ***
## X3           0.070254   0.007335   9.578 1.02e-12 ***
## X4           0.849377   0.061399  13.834  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5761 on 48 degrees of freedom
## Multiple R-squared:  0.9797, Adjusted R-squared:  0.978 
## F-statistic: 579.4 on 4 and 48 DF,  p-value: < 2.2e-16
#ITERASI 4
#menghitung selisih antar galat
res4 <- modelGS3$residuals
a <- vector()
for(i in 1:(length(res4)-1)){
  a[i] <- res4[i]-res4[i+1]
}
#menghitung sigma_GS
sig_gs4 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u4 <- vector()
for(i in 1:length(res4)){
  u4[i] <- res4[i]/sig_gs4
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w4 <- vector()
for(i in 1:length(u4)){
  if(abs(u4[i]) <= c){
    w4[i] = (1-(u4[i]/0.9958)^2)^2
  }
  else w4[i] = 0
}
modelGS4 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w4)
summary(modelGS4)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w4)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0886 -0.2180  0.0000  0.1458  0.8708 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 46.551545   1.420143  32.779  < 2e-16 ***
## X1           1.299273   0.130701   9.941 3.08e-13 ***
## X2           0.517661   0.053151   9.740 5.97e-13 ***
## X3           0.071137   0.006959  10.222 1.23e-13 ***
## X4           0.866793   0.058877  14.722  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5519 on 48 degrees of freedom
## Multiple R-squared:  0.9818, Adjusted R-squared:  0.9803 
## F-statistic: 646.9 on 4 and 48 DF,  p-value: < 2.2e-16
#ITERASI 5
#menghitung selisih antar galat
res5 <- modelGS4$residuals
a <- vector()
for(i in 1:(length(res5)-1)){
  a[i] <- res5[i]-res5[i+1]
}
#menghitung sigma_GS
sig_gs5 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u5 <- vector()
for(i in 1:length(res5)){
  u5[i] <- res5[i]/sig_gs5
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w5 <- vector()
for(i in 1:length(u5)){
  if(abs(u5[i]) <= c){
    w5[i] = (1-(u5[i]/0.9958)^2)^2
  }
  else w5[i] = 0
}
modelGS5 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w5)
summary(modelGS5)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w5)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0377 -0.2115  0.0000  0.1520  0.9062 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 46.174345   1.364229  33.846  < 2e-16 ***
## X1           1.250264   0.127987   9.769 4.35e-13 ***
## X2           0.528982   0.051046  10.363 6.08e-14 ***
## X3           0.071595   0.006724  10.647 2.41e-14 ***
## X4           0.881254   0.057272  15.387  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5356 on 49 degrees of freedom
## Multiple R-squared:  0.9828, Adjusted R-squared:  0.9813 
## F-statistic:   698 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 6
#menghitung selisih antar galat
res6 <- modelGS5$residuals
a <- vector()
for(i in 1:(length(res6)-1)){
  a[i] <- res6[i]-res6[i+1]
}
#menghitung sigma_GS
sig_gs6 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u6 <- vector()
for(i in 1:length(res6)){
  u6[i] <- res6[i]/sig_gs6
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w6 <- vector()
for(i in 1:length(u6)){
  if(abs(u6[i]) <= c){
    w6[i] = (1-(u6[i]/0.9958)^2)^2
  }
  else w6[i] = 0
}
modelGS6 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w6)
summary(modelGS6)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w6)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0263 -0.2308  0.0000  0.1282  0.9387 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 46.001506   1.394587  32.986  < 2e-16 ***
## X1           1.229710   0.131894   9.323 1.95e-12 ***
## X2           0.534199   0.052170  10.240 9.12e-14 ***
## X3           0.071849   0.006902  10.409 5.23e-14 ***
## X4           0.887154   0.058936  15.053  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5516 on 49 degrees of freedom
## Multiple R-squared:  0.9819, Adjusted R-squared:  0.9805 
## F-statistic: 665.6 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 7
#menghitung selisih antar galat
res7 <- modelGS6$residuals
a <- vector()
for(i in 1:(length(res7)-1)){
  a[i] <- res7[i]-res7[i+1]
}
#menghitung sigma_GS
sig_gs7 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u7 <- vector()
for(i in 1:length(res7)){
  u7[i] <- res7[i]/sig_gs7
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w7 <- vector()
for(i in 1:length(u7)){
  if(abs(u7[i]) <= c){
    w7[i] = (1-(u7[i]/0.9958)^2)^2
  }
  else w7[i] = 0
}
modelGS7 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w7)
summary(modelGS7)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w7)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0359 -0.2854  0.0000  0.1210  0.9882 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.946139   1.433941  32.042  < 2e-16 ***
## X1           1.226427   0.135895   9.025 5.41e-12 ***
## X2           0.535970   0.053634   9.993 2.06e-13 ***
## X3           0.071979   0.007114  10.118 1.36e-13 ***
## X4           0.887740   0.060760  14.611  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5695 on 49 degrees of freedom
## Multiple R-squared:  0.9809, Adjusted R-squared:  0.9793 
## F-statistic:   628 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 8
#menghitung selisih antar galat
res8 <- modelGS7$residuals
a <- vector()
for(i in 1:(length(res8)-1)){
  a[i] <- res8[i]-res8[i+1]
}
#menghitung sigma_GS
sig_gs8 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u8 <- vector()
for(i in 1:length(res8)){
  u8[i] <- res8[i]/sig_gs8
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w8 <- vector()
for(i in 1:length(u8)){
  if(abs(u8[i]) <= c){
    w8[i] = (1-(u8[i]/0.9958)^2)^2
  }
  else w8[i] = 0
}
modelGS8 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w8)
summary(modelGS8)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w8)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0398 -0.3069  0.0000  0.1192  1.0126 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.931140   1.445702  31.771  < 2e-16 ***
## X1           1.226575   0.137063   8.949 7.02e-12 ***
## X2           0.536487   0.054070   9.922 2.61e-13 ***
## X3           0.072022   0.007177  10.035 1.79e-13 ***
## X4           0.887542   0.061301  14.479  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5747 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.979 
## F-statistic: 617.4 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 9
#menghitung selisih antar galat
res9 <- modelGS8$residuals
a <- vector()
for(i in 1:(length(res9)-1)){
  a[i] <- res9[i]-res9[i+1]
}
#menghitung sigma_GS
sig_gs9 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u9 <- vector()
for(i in 1:length(res9)){
  u9[i] <- res9[i]/sig_gs9
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w9 <- vector()
for(i in 1:length(u9)){
  if(abs(u9[i]) <= c){
    w9[i] = (1-(u9[i]/0.9958)^2)^2
  }
  else w9[i] = 0
}
modelGS9 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w9)
summary(modelGS9)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w9)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0412 -0.3109  0.0000  0.1188  1.0179 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927728   1.448570  31.706  < 2e-16 ***
## X1           1.226988   0.137339   8.934 7.40e-12 ***
## X2           0.536619   0.054177   9.905 2.76e-13 ***
## X3           0.072034   0.007192  10.016 1.91e-13 ***
## X4           0.887375   0.061431  14.445  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.576 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.9 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 10
#menghitung selisih antar galat
res10 <- modelGS9$residuals
a <- vector()
for(i in 1:(length(res10)-1)){
  a[i] <- res10[i]-res10[i+1]
}
#menghitung sigma_GS
sig_gs10 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u10 <- vector()
for(i in 1:length(res10)){
  u10[i] <- res10[i]/sig_gs10
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w10 <- vector()
for(i in 1:length(u10)){
  if(abs(u10[i]) <= c){
    w10[i] = (1-(u10[i]/0.9958)^2)^2
  }
  else w10[i] = 0
}
modelGS10 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w10)
summary(modelGS10)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w10)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0416 -0.3112  0.0000  0.1188  1.0188 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927131   1.449119  31.693  < 2e-16 ***
## X1           1.227219   0.137389   8.932 7.44e-12 ***
## X2           0.536648   0.054197   9.902 2.79e-13 ***
## X3           0.072036   0.007195  10.012 1.94e-13 ***
## X4           0.887297   0.061455  14.438  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.4 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 11
#menghitung selisih antar galat
res11 <- modelGS10$residuals
a <- vector()
for(i in 1:(length(res11)-1)){
  a[i] <- res11[i]-res11[i+1]
}
#menghitung sigma_GS
sig_gs11 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u11 <- vector()
for(i in 1:length(res11)){
  u11[i] <- res11[i]/sig_gs11
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w11 <- vector()
for(i in 1:length(u11)){
  if(abs(u11[i]) <= c){
    w11[i] = (1-(u11[i]/0.9958)^2)^2
  }
  else w11[i] = 0
}
modelGS11 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w11)
summary(modelGS11)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w11)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3110  0.0000  0.1188  1.0188 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927096   1.449172  31.692  < 2e-16 ***
## X1           1.227317   0.137392   8.933 7.42e-12 ***
## X2           0.536653   0.054199   9.901 2.79e-13 ***
## X3           0.072037   0.007195  10.011 1.94e-13 ***
## X4           0.887266   0.061457  14.437  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9804, Adjusted R-squared:  0.9789 
## F-statistic: 614.3 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 12
#menghitung selisih antar galat
res12 <- modelGS11$residuals
a <- vector()
for(i in 1:(length(res12)-1)){
  a[i] <- res12[i]-res12[i+1]
}
#menghitung sigma_GS
sig_gs12 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u12 <- vector()
for(i in 1:length(res12)){
  u12[i] <- res12[i]/sig_gs12
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w12 <- vector()
for(i in 1:length(u12)){
  if(abs(u12[i]) <= c){
    w12[i] = (1-(u12[i]/0.9958)^2)^2
  }
  else w12[i] = 0
}
modelGS12 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w12)
summary(modelGS12)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w12)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3108  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927131   1.449153  31.692  < 2e-16 ***
## X1           1.227353   0.137389   8.933 7.41e-12 ***
## X2           0.536653   0.054199   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887256   0.061456  14.437  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9804, Adjusted R-squared:  0.9789 
## F-statistic: 614.3 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 13
#menghitung selisih antar galat
res13 <- modelGS12$residuals
a <- vector()
for(i in 1:(length(res13)-1)){
  a[i] <- res13[i]-res13[i+1]
}
#menghitung sigma_GS
sig_gs13 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u13 <- vector()
for(i in 1:length(res13)){
  u13[i] <- res13[i]/sig_gs13
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w13 <- vector()
for(i in 1:length(u13)){
  if(abs(u13[i]) <= c){
    w13[i] = (1-(u13[i]/0.9958)^2)^2
  }
  else w13[i] = 0
}
modelGS13 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w13)
summary(modelGS13)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w13)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3107  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927155   1.449137  31.693  < 2e-16 ***
## X1           1.227365   0.137387   8.934 7.41e-12 ***
## X2           0.536653   0.054198   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887252   0.061455  14.437  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9804, Adjusted R-squared:  0.9789 
## F-statistic: 614.3 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 14
#menghitung selisih antar galat
res14 <- modelGS13$residuals
a <- vector()
for(i in 1:(length(res14)-1)){
  a[i] <- res14[i]-res14[i+1]
}
#menghitung sigma_GS
sig_gs14 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u14 <- vector()
for(i in 1:length(res14)){
  u14[i] <- res14[i]/sig_gs14
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w14 <- vector()
for(i in 1:length(u14)){
  if(abs(u14[i]) <= c){
    w14[i] = (1-(u14[i]/0.9958)^2)^2
  }
  else w14[i] = 0
}
modelGS14 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w14)
summary(modelGS14)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w14)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3107  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927165   1.449129  31.693  < 2e-16 ***
## X1           1.227369   0.137386   8.934 7.40e-12 ***
## X2           0.536653   0.054198   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887251   0.061455  14.438  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.4 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 15
#menghitung selisih antar galat
res15 <- modelGS14$residuals
a <- vector()
for(i in 1:(length(res15)-1)){
  a[i] <- res15[i]-res15[i+1]
}
#menghitung sigma_GS
sig_gs15 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u15 <- vector()
for(i in 1:length(res15)){
  u15[i] <- res15[i]/sig_gs15
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w15 <- vector()
for(i in 1:length(u15)){
  if(abs(u15[i]) <= c){
    w15[i] = (1-(u15[i]/0.9958)^2)^2
  }
  else w15[i] = 0
}
modelGS15 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w15)
summary(modelGS15)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w15)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3107  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927169   1.449126  31.693  < 2e-16 ***
## X1           1.227370   0.137386   8.934 7.40e-12 ***
## X2           0.536652   0.054198   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887251   0.061454  14.438  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.4 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 16
#menghitung selisih antar galat
res16 <- modelGS15$residuals
a <- vector()
for(i in 1:(length(res16)-1)){
  a[i] <- res16[i]-res16[i+1]
}
#menghitung sigma_GS
sig_gs16 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u16 <- vector()
for(i in 1:length(res16)){
  u16[i] <- res16[i]/sig_gs16
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w16 <- vector()
for(i in 1:length(u16)){
  if(abs(u16[i]) <= c){
    w16[i] = (1-(u16[i]/0.9958)^2)^2
  }
  else w16[i] = 0
}
modelGS16 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w16)
summary(modelGS16)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w16)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3107  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927171   1.449125  31.693  < 2e-16 ***
## X1           1.227370   0.137386   8.934 7.40e-12 ***
## X2           0.536652   0.054198   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887251   0.061454  14.438  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.4 on 4 and 49 DF,  p-value: < 2.2e-16
#ITERASI 17
#menghitung selisih antar galat
res17 <- modelGS16$residuals
a <- vector()
for(i in 1:(length(res17)-1)){
  a[i] <- res17[i]-res17[i+1]
}
#menghitung sigma_GS
sig_gs17 <- median(abs(a-median(a)))/0.6745
#menghitung ui
u17 <- vector()
for(i in 1:length(res17)){
  u17[i] <- res17[i]/sig_gs17
}
#pembobotan tukey bisquare
c <- 0.9958 #berdasarkan saran dari Croux et al
w17 <- vector()
for(i in 1:length(u17)){
  if(abs(u17[i]) <= c){
    w17[i] = (1-(u17[i]/0.9958)^2)^2
  }
  else w17[i] = 0
}
modelGS17 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w17)
summary(modelGS17)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w17)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3107  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927171   1.449125  31.693  < 2e-16 ***
## X1           1.227370   0.137386   8.934 7.40e-12 ***
## X2           0.536652   0.054198   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887251   0.061454  14.438  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.4 on 4 and 49 DF,  p-value: < 2.2e-16

Dapat dilihat nilai estimasi pada iterasi 16 dan 17 nilainya sudah sama, yang berarti sudah konvergen.
Hasil model regresi robust estimasi GS yang konvergen pada iterasi ke-17 sebagai berikut:

\(Ŷ\) = 45.927171 + 1.22737X1 + 0.536652X2 + 0.072037X3 + 0.887251X4

Dengan \(R^2\) adjusted sebesar 97.89% yang artinya bahwa variabel Alcohol consumption (X1), BMI (X2), Polio (X3), dan Schooling (X4) berpengaruh terhadap angka harapan hidup sebesar 97.89% dan 2.11% dipengaruhi oleh faktor yang lainnya.

Langkah 5: Uji Signifikansi Parameter

modelGS17 <- lm(Y~ X1+X2+X3+X4, data=data, weights=w17)
summary(modelGS17)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data, weights = w17)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.0417 -0.3107  0.0000  0.1188  1.0187 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.927171   1.449125  31.693  < 2e-16 ***
## X1           1.227370   0.137386   8.934 7.40e-12 ***
## X2           0.536652   0.054198   9.902 2.79e-13 ***
## X3           0.072037   0.007195  10.012 1.94e-13 ***
## X4           0.887251   0.061454  14.438  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5762 on 49 degrees of freedom
## Multiple R-squared:  0.9805, Adjusted R-squared:  0.9789 
## F-statistic: 614.4 on 4 and 49 DF,  p-value: < 2.2e-16

Uji Simultan

Berdasarkan hasil analisis uji simultan diperoleh nilai p-value = < 2.2e-16 < \(a\) = 0.05 yang berarti bahwa paling tidak terdapat satu dari variabel Alcohol consumption (X1), BMI (X2), Polio (X3), dan Schooling (X4) berpengaruh signifikan terhadap angka harapan hidup.

Uji Parsial

Berdasarkan hasil analisis uji parsial diperoleh nilai p-value dari masing-masing variabel sebagai berikut:
* Variabel X1 : 7.40e-12
* Vaiabel X2 : 2.79e-13
* Variabel X3 : 1.94e-13
* Variabel X4 : < 2e-16
Nilai p-value dari keempat variabel independen < \(a\) = 0.05 sehingga dapat disimpulkan bahwa Alcohol consumption, BMI, Polio, dan Schooling berpengaruh signifikan terhadap angka harapan hidup.