Oleh:
Langkah pertama sebelum pengujian asumsi adalah melakukan plot residual dengan X.
Dari grafik scatter plot terlihat bahwa ketika nilai X meningkat residual juga semakin besar.
Hasil ini menunjukkan kemungkinan adanya heteroskedastik atau residual memiliki varians
yang tidak konstan.
1. F-test for two-variance equality
Hipotesis: H0: σ 2A= σ 2B vs. H1: σ 2A ≠ σ 2B
2 2
H1: σ A > σB
2 2
H1: σ A < σB
Asumsikan:
2
sj 2
( N j−K ) 2
χ N −K , j = A, B
σ j
j
#Taraf signifikansi
alpha <- 0.05
#Membentuk vektor y
y_a <- as.matrix(data[1:20,1])
y_b <- as.matrix(data[21:40,1])
#Statistik uji
lamda <- (RSS_b/(nb - k))/(RSS_a/(na - k))
#P-value
P_Value <- 1 – pf (lamda, q, n – q – 1)
#Kesimpulan
print(P_Value)
[,1]
[1,] 0.03987652
ifelse(P_Value < alpha, "Tolak H0: Ada Heteroskedastisitas",
"Terima H0: Tidak ada Heteroskedastisitas")
[,1]
[1,] "Tolak H0: Ada Heteroskedastisitas
2. Levene test
Uji Levene (Levene's test) digunakan untuk menguji apakah k sampel berasal dari
populasi dengan varians yang sama. Dengan kata lain, uji ini untuk mengetahui
kehomogenan/kesamaan varians dari beberapa populasi. Uji Levene merupakan
alternatif dari Uji Bartlett. Uji Bartlett digunakan jika data berdistribusi normal,
sedangkan Uji Levene tidak membutuhkan syarat kenormalan data, tetapi data harus
kontinu dan sampel dari populasi yang diobservasi adalah independen. Jika ada bukti
kuat bahwa data berdistribusi normal atau mendekati normal, maka Uji Bartlett lebih
baik digunakan.
Formula statistik Uji Levene diberikan oleh :
Dimana :
n = jumlah observasi
k = banyaknya kelompok
Zij =|Y ij −Y i .|
Y i . = rata- rata kelompok ke-i
Zi . = rata- rata kelompok dari Zi
Zi .. = rata –rata keseluruhan (overall mean) dari Zij
#Levene Test--------------------------------------------------------
yl <- e
xl <- data[,2]
n1 <- nrow(yl)
n2 <- 40
N <- n1+n2
k <- 2
Zx <- abs(xl-Xbar)
Zy <- abs(yl-Ybar)
Zxbar <- mean(Zx)
Zybar <- mean(Zy)
Ztotalbar <- mean(c(Zxbar,Zybar))
#Statistik Uji
Lv1 <- (N-k)*sum(c(n1*((Zxbar-Ztotalbar)^2),(n2*((Zybar-
Ztotalbar)^2))))
Lv3 <- (k-1)*sum(c((Zx-Zxbar)^2,(Zy-Zybar)^2))
Ltest <- Lv1/Lv3
#P-value
P_Value <- 1 - pf(Ltest, q, n-q-1)
#Kesimpulan
print(P_Value)
[,1]
[1] 1.506684e-05
ifelse(P_Value < alpha, "Tolak H0: Ada Heteroskedastisitas",
"Terima H0: Tidak ada Heteroskedastisitas")
[1] "Tolak H0: Ada Heteroskedastisitas"
3. F-test or Chi-square-test for multiplicative heteroskedasticity
2
Asumsikan bahwa: σi = σ 2 exp{z’i α}
Hipotesis:
Prosedur pengujian:
yh <- log(e^2)
e_h <- (I - H) %*% yh
#Hitung R-squared
R2_h <- 1 - (t(e_h) %*% e_h)/(n-1)/var(yh)
R2_h
[,1]
[1,] 0.1640426
#Statistik Uji
F_hitung <- ((n-q-1)/q)*(R2_h/(1-R2_h))
#P-value
P_Value <- 1 - pf(F_hitung, q, n-q-1)
#Kesimpulan
print(P_Value)
[,1]
[1,] 0.009527904
ifelse(P_Value < alpha, "Tolak H0: Ada Heteroskedastisitas",
"Terima H0: Tidak ada Heteroskedastisitas")
[,1]
[1,] "Tolak H0: Ada Heteroskedastisitas"
4. White test
Uji White dapat dilakukan dengan meregresikan residual kuadrat dengan variabel
independen dan variabel independen kuadrat dengan perkalian. Perhatikan persamaan
berikut :
Y i=β 0 + β 1 X 1 i+ β 2 X 2 i +…+ β p X pi + ε i
Berdasarkan model regresi diatas, uji White dapat dilakukan dengan beberapa
prosedur, yaitu:
2
Hasil estimasi dari model regresi akan menghasilkan nilai error yaitu ε^ i
Buat persamaan regresi:
^ 2i =α 0 + α 1 X 1 i+ a2 X 2 i+ a3 X 21 i+ α 4 X 22i + …+α p X 2pi+ ε i
U
Perhatikan model diatas, uji ini mengasumsikan bahwa varian error merupakan
fungsi yang mempunyai hubungan dengan variabel bebas, kuadrat masing-masing
variabel bebas dan interaksi antara variabel bebas.
Formulasi hipotesis:
H0 : tidak terdapat masalah heteroskedastisitas dalam model regresi
H1 : terdapat masalah heteroskedastisitas dalam model regresi
Sampel berukuran n dan koefisien determinasi R2 yang didapat dari regresi akan
mengikuti distribusi Chi-Square dengan derajat bebas jumlah variabel bebas atau
jumlah konferensi regresi diluar intercept. Dengan demikian formulasi uji White
adalah:
2
nR ≈ X
Jika nilai perhitungan melebihi nilai kritis dengan α yang dipilih, diputuskan bahwa
tidak terdapat heteroskedastisitas. Hal ini disebabkan α 1=α 2=α 3=α 4 =0 sehingga,
^ 2i =α 0 (konstan).
U
#White Test---------------------------------------------------
# Membentuk vektor y
e2 <- e*e
y.white <- e2
# Membentuk matrix Z
X.white <- cbind(X,X[,2]^2)
# Menghitung R^2
H <- X.white %*% solve(t(X.white) %*% X.white)%*%t(X.white)
I <- diag(c(1),n,n)
J <- matrix(c(1),n,n)
SSE <- t(y.white)%*%(I-H)%*%y.white
SSR <- t(y.white)%*%(H-(J/n))%*%y.white
SST <- SSR+SSE
R2 <- SSR/SST
#Statistik uji
chi2.white <- n*R2
#P-value
P_Value <- 1 - pchisq(chi2.white, q)
#Kesimpulan
print(P_Value)
[,1]
[1,] 0.000134225
ifelse(P_Value < alpha, "Tolak H0: Ada Heteroskedastisitas",
"Terima H0: Tidak ada Heteroskedastisitas")
[,1]
[1,] "Tolak H0: Ada Heteroskedastisitas"
PENGUJIAN AUTOKORELASI
Setelah dilakukan pengujian asumsi heteroskedastisitas dan disimpulkan tidak adanya
heteroskedastisitas, selanjutnya adalah melakukan uji asumsi autokorelasi. Uji ini dilakukan
dengan Durbin-Watson test menggunakan R.
library(orcutt)
data(icecream)
head(icecream)
n <- 30
p <- 3
y <- as.matrix(icecream[,2],nrow=n,ncol=1)
b0 <- matrix(1,n,1)
Z <- as.matrix(cbind(b0,icecream[,c(1,3,4)]),nrow=n,ncol=p+1)
be_h <- solve(t(Z)%*%Z)%*%t(Z)%*%y
#Residual
I <- diag(1,n,n)
H <- Z%*%solve(t(Z)%*%Z)%*%t(Z)
e <- (I-H)%*%y
#Durbin-Watson test
ei <- e[-1,]
eiminus1 <- e[-n,]
[1] 0.03527284
dw_b <-as.vector(sum((ei-eiminus1)^2));print(dw_b)
[1] 0.03601955
dw <- as.vector(dw_a/dw_b);print(dw)
[1] 1.02117
#Kesimpulan
DW table, p=3, n=30, and alpha=0.05 , dL=1.2138 and dU=1.6498
dw < dL, sehingga H0 ditolak berarti terdapat autokorelasi
Penanganan autokorelasi dengan Prais-Winsten Estimator
#Prais-Winsten estimator
#Menentukan rho
rho <- as.vector(solve(t(eiminus1)%*%eiminus1)%*%t(eiminus1)%*%ei)
rho
[1] 0.4006326
print(err);print(it);print(be_1);print(rhot)
[1] 9.016997e-06
[1] 34
[,1]
intercept 0.5869843285
price -1.0488706889
income -0.0008019877
temp 0.0029540844
[1] 0.8002062
e_gls<- y1-Z1%*%be_1
s2_gls<- as.vector((t(e_gls)%*%e_gls)/(n-2));print(s2_gls)
[1] 0.0009697996
se_be_gls<-sqrt(diag(s2_gls*(solve(t(Z1)%*%Z1))));print(se_be_gls)