Salah satu asumsi utama regresi linier adalah bahwa residu terdistribusi dengan varian yang sama di setiap tingkat variabel prediktor. Asumsi ini dikenal dengan istilah homoskedastisitas. Jika asumsi ini dilanggar, maka dikatakan terdapat heteroskedastisitas pada residu. Jika hal ini terjadi, hasil regresi menjadi tidak dapat diandalkan.
Salah satu cara untuk mengatasi masalah ini adalah dengan menggunakan weighted least square, yang memberi bobot pada observasi sedemikian rupa sehingga observasi dengan varian kesalahan kecil diberi bobot lebih karena berisi lebih banyak informasi dibandingkan dengan observasi dengan varian kesalahan lebih besar.
Misalkan terdapat model:
\[Y_{i}=\beta_{1}+\beta_{2}X_{2i}+\beta_{3}X_{3i}+u_{i}\] Dengan bentuk ragam yang tidak konstan:
\[var(u_{i})=\sigma^2z^2_{i} \] Jika dilakukan hal berikut pada galat:
\[v_{i}=\frac{u_{i}}{z_i}\] sehingga, ragam galat menjadi konstan
\[v_{i}=(\frac{u_{i}}{z_i})=\frac{1}{z^2_{i}}var(u_i)=\sigma^2\]
Bentuk tersebut adalah bentuk transformasi yang dapat diterapkan pada seluruh variabel model sebagai berikut:
\[\frac{Y_i}{z_i}=\beta_1\frac{1}{z_i}+\beta_2\frac{X_{2i}}{z_i}+\beta_3\frac{X_{3i}}{z_i}+v_i \] Metode kuadrat terkecil dapat diterapkan untuk menduga parameter model tersebut, dengan variabel respons dan prediktor yang telah ditransformasi:
\[Y^*_i=\beta_1X^*_{1i}+\beta_2X^*_{2i}+\beta_3X^*_{3i}+v_i \]
Data berasal dari kaggle yang berjudul Body Fat Extended Dataset yang diukur pada 254 orang
https://www.kaggle.com/datasets/simonezappatini/body-fat-extended-dataset
library(rmarkdown)
library(knitr)
library(readxl) #Import data format excel
library(lmtest) #Brush Pagan Test
Fungsi read_excel() digunakan untuk memuat data dari file Berat Badan dengan argumen berisikan lokasi file data tersimpan. Data tersebut disimpan dengan nama data.
Fungsi data.frame() digunakan untuk membentuk data frame dengan argumen variabel yang digunakan yaitu, x1 = age, x2 = Weight, x3 = Height, dan y = BodyFat yang sebelumnya telah terlebih dahulu dijadikan data tipe numerik. data frame disimpan dengan nama Data.
Fungsi ‘paged_table()’ digunakan untuk membentuk tabel yang memuat data
data=read_excel("C:/Kuliah/Tugas Kuliah/SEMESTER 5/Berat Badan.xlsx")
x1 = as.numeric(data$Age)
x2 = as.numeric(data$Weight)
x3 = as.numeric(data$Height)
y = as.numeric(data$BodyFat)
Data=data.frame(y,x1,x2,x3)
paged_table(as.data.frame(Data))
Fungsi lm() digunakan untuk membentuk model regresi linier berganda dengan argumen variabel respons y dan variabel prediktor x1,x2,x3 serta sumber data Data. Kemudian disimpan dengan nama model
Fungsi summary() digunakan untuk menampilkan ringkasan terkait argumen yang tertera yaitu model.
model = lm(y~x1+x2+x3, data = Data)
summary(model)
Fungsi plot() digunakan untuk melihat plot atau gambaran awal residual terhadap fitted values. Berisikan argumen fitted(model) sebagai sumbu x, resid(model) sebagai sumbu y, xlab penamaan sumbu x, ylab penamaan sumbu y.
Fungsi bptest() atau uji brush pagan digunakan untuk menguji ragam residual dengan argumen model.
library(lmtest)
plot(fitted(model), resid(model), xlab = "Fitted Values", ylab = "Residuals")
bptest(model)
Membentuk pembobot yang disimpan dengan nama wt.
Fungsi lm() digunakan untuk regresi linier berganda dengan argumen tambahan weight = wt maka menjadi regresi terboboti atau WLS yang disimpan dengan nama wls_model
Fungsi summary() digunakan untuk ringkasan dari argumen wls_model
Fungsi bptest() untuk menguji kembali setelah model terboboti dengan argumen wls_model
wt = 1/lm(abs(model$residuals)~model$fitted.values)$fitted.values^2
wls_model = lm(y~x1+x2+x3, data = Data, weights = wt)
summary(wls_model)
bptest(wls_model)
Call:
lm(formula = y ~ x1 + x2 + x3, data = Data)
Residuals:
Min 1Q Median 3Q Max
-19.3370 -4.4324 0.0009 3.7564 15.7825
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.88134 7.45553 2.398 0.0172 *
x1 0.16972 0.02954 5.746 2.67e-08 ***
x2 0.43743 0.02893 15.118 < 2e-16 ***
x3 -0.23481 0.04196 -5.596 5.80e-08 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5.805 on 248 degrees of freedom
Multiple R-squared: 0.5246, Adjusted R-squared: 0.5189
F-statistic: 91.24 on 3 and 248 DF, p-value: < 2.2e-16
Berdasarkan output di atas terbentuk model: \[Y_i=17.88134+0.16972X_1+0.43743X_2-0.23481\] Interpretasi:
\(\beta_1=17.88134\), artinya apabila variabel lain konstan maka lemak tubuh akan naik sebesar 17.88134 satuan
\(\beta_2=0.16972\), artinya apabila umur naik satu satuan, maka lemak tubuh akan naik sebesar 0.16972 satuan dengan variabel lain konstan.
\(\beta_3=0.43743\), artinya apabila berat badan naik satu satuan, maka lemak tubuh akan naik sebesar 0.43743 satuan dengan variabel lain konstan
\(\beta_4=-0.23481\), artinya apabila tinggi badan naik satu satuan, maka lemak tubuh akan turun sebesar 0.23481 satuan dengan variabel lain konstan
Berdasarkan plot di atas, terlihat bahwa residual cenderung mengumpul dan tidak menyebar acak. Hal ini dapat mengindikasikan adanya masalah heteroskedastisitas.
Untuk memastikannya digunakan uji brush pagan:
studentized Breusch-Pagan test
data: model
BP = 37.987, df = 3, p-value = 2.845e-08
Hipotesis:
\(H_0:\) Ragam residual sama
\(H_1:\) Ragam residual berbeda
Keputusan:
p value \((2.845 \times 10^{-8}) < \alpha (0.05)\), maka \(H_0\) ditolak
Kesimpulan:
Ragam residual berbeda dengan kata lain asumsi homoskedastisitas terlanggar.
Call:
lm(formula = y ~ x1 + x2 + x3, data = Data, weights = wt)
Weighted Residuals:
Min 1Q Median 3Q Max
-3.4377 -0.8742 0.0183 0.8418 2.8721
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.12861 8.50274 3.073 0.00236 **
x1 0.15749 0.02933 5.370 1.81e-07 ***
x2 0.48214 0.03137 15.369 < 2e-16 ***
x3 -0.29826 0.04949 -6.027 6.01e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.232 on 248 degrees of freedom
Multiple R-squared: 0.5312, Adjusted R-squared: 0.5255
F-statistic: 93.66 on 3 and 248 DF, p-value: < 2.2e-16
Output di atas merupakan hasil dari Weighted Least Square (WLS) untuk menghilangkan masalah heteroskedastisitas.
Untuk memastikannya kembali, berikut hasil brush pagan test dari WLS
studentized Breusch-Pagan test
data: wls_model
BP = 3.6803, df = 3, p-value = 0.2981
Hipotesis:
\(H_0:\) Ragam residual sama
\(H_1:\) Ragam residual berbeda
Keputusan:
p value \((0.2981) > \alpha (0.05)\), maka \(H_0\) diterima
Kesimpulan:
Ragam residual sama dengan kata lain asumsi homoskedastisitas terpenuhi.
Call:
lm(formula = y ~ x1 + x2 + x3, data = Data, weights = wt)
Weighted Residuals:
Min 1Q Median 3Q Max
-3.4377 -0.8742 0.0183 0.8418 2.8721
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.12861 8.50274 3.073 0.00236 **
x1 0.15749 0.02933 5.370 1.81e-07 ***
x2 0.48214 0.03137 15.369 < 2e-16 ***
x3 -0.29826 0.04949 -6.027 6.01e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.232 on 248 degrees of freedom
Multiple R-squared: 0.5312, Adjusted R-squared: 0.5255
F-statistic: 93.66 on 3 and 248 DF, p-value: < 2.2e-16
Interpretasi:
\(\beta_1=26.12861\), artinya apabila variabel lain konstan maka lemak tubuh akan naik sebesar 26.12961 satuan
\(\beta_2=0.15749\), artinya apabila umur naik satu satuan, maka lemak tubuh akan naik sebesar 0.15749 satuan dengan variabel lain konstan.
\(\beta_3=0.48214\), artinya apabila berat badan naik satu satuan, maka lemak tubuh akan naik sebesar 0.48214 satuan dengan variabel lain konstan
\(\beta_4=-0.29826\), artinya apabila tinggi badan naik satu satuan, maka lemak tubuh akan turun sebesar 0.29826 satuan dengan variabel lain konstan
Uji Simultan
Hipotesis:
\(H_0:\beta_1=\beta_2=\beta_3=\beta_4=0\)
\(H_1:\) setidaknyaada salah satu i dimana \(\beta_i\neq0\)
Keputusan:
p value \((2.67 \times 10^{-16})< \alpha (0.05)\), maka \(H_0\) ditolak
Kesimpulan:
Dengan taraf nyata 5% dapat disimpulkan secara simultan bahwa umur, berat badan, dan tinggi badan berpengaruh signifikan terhadap lemak tubuh.
Uji Parsial
Hipotesis:
\(H_0:\beta_2=0\)
\(H_1:\beta_2\neq 0\)
Keputusan:
p value \((1.81 \times 10^{-7})< \alpha (0.05)\), maka \(H_0\) ditolak
Kesimpulan: Dengan taraf nyata 5% dapat disimpulkan secara parsial bahwa umur berpengaruh signifikan terhadap lemak tubuh
Hipotesis:
\(H_0:\beta_3=0\)
\(H_1:\beta_3\neq 0\)
Keputusan:
p value \((2 \times 10^{-16})< \alpha (0.05)\), maka \(H_0\) ditolak
Kesimpulan:
Dengan taraf nyata 5% dapat disimpulkan secara parsial bahwa berat badan berpengaruh signifikan terhadap lemak tubuh
Hipotesis:
\(H_0:\beta_4=0\)
\(H_1:\beta_4\neq 0\)
Keputusan:
p value \((6.01 \times 10^{-9})< \alpha (0.05)\), maka \(H_0\) ditolak
Kesimpulan:
Dengan taraf nyata 5% dapat disimpulkan secara parsial bahwa tinggi badan berpengaruh signifikan terhadap lemak tubuh
Masalah heteroskedastisitas dapat diatasi salah satunya dengan weighted least square (WLS) yaitu dengan memberi bobot pada variabel dalam hal ini Age, Weight, Height, dan BodyFat.
Hasil WLS didapatkan secara simultan maupun parsial bahwa umur, berat badan, dan tinggi badan berpengaruh signifikan terhadap lemak tubuh