Anda di halaman 1dari 10

MINGGU KE-14

UJI ASUMSI MODEL REGRESI LINIER

Tujuan Perkuliahan:

Mahasiswa mampu membangun sintaks untuk Uji Asumsi Model regresi linier dengan
menggunakan sintaks buatan sendiri.

Model Regresi Linier


Metode regresi linier yang merupakan metode yang memodelkan hubungan antara
variabel respon y dan variabel prediktor x1 , x2 ,..., x p . Model regresi linier untuk p variabel

prediktor secara umum ditulis sebagai:

y  0  1 x1  2 x2  ...   p x p  

Jika diambil sebanyak n pengamatan, maka model untuk pengamatan ke- i adalah:

p
yi   0    k xik   i (1)
k 1

dengan i = 1, 2, ... , n ;  0 , 1 ,...,  p adalah parameter model dan  1 ,  2 ,...,  n adalah error

yang diasumsikan identik, independen, dan berdistribusi Normal dengan mean nol dan

varians konstan  2 atau (  i ~ IIDN  0,  2  ). Pada model ini, hubungan antara variabel

prediktor dan variabel respon dianggap konstan pada setiap pengamatan.

Jika dituliskan dalam notasi matriks maka persamaan (1) menjadi:

y  Xβ  ε

dengan:

 y1  1 x11 x12 x1 p   0   1 
       
y 1 x21 x22 x2 p  1 
y    ,X  
2
, β  , ε   2 .
       
       
 yn  1 xn1 xn 2 xnp  p  n 

Sedangkan nilai estimasi untuk y dan ε adalah:

yˆ  Xβˆ dan εˆ  y  yˆ  y  Xβˆ .


Pengujian Asumsi Model Regresi Linier
1. Uji Normalitas Error

Untuk menguji asumsi normal dari error digunakan uji Kolmogorof-Smirnov dengan hipotesis
sebagai berikut :

H0 : Error mengikuti distribusi normal

H1 : Error tidak mengikuti distribusi normal

Statistik uji dalam uji K-S ini adalah

D  max F0  xi   Sn  xi  , i  1, 2, , n.

dengan F0  xi  merupakan fungsi distribusi frekuensi kumulatif relatif dari distribusi teoritis

di bawah H0, sedangkan Sn  xi  merupakan distribusi frekuensi kumulatif pengamatan

sebanyak sampel. Kesimpulan diambil dengan menolak H0 jika p-value < α.

2. Uji Autokorelasi

Salah satu uji yang digunakan untuk menguji independensi adalah uji Durbin-Watson (Draper
dan Smith, 1992). Hipotesis dalam pengujian ini adalah:

H0 : Tidak ada serial autokorelasi baik positif maupun negatif

H1 : Ada serial autokorelasi baik positif maupun negatif

dengan statistik uji:

 (e i  ei 1 ) 2
d i 2
n

e
2
i
i 1

Jika diberikan tingkat signifikansi sebesar α, maka keputusan yang diambil adalah
dengan membandingkan antara nilai d pengujian dengan nilai dU (nilai batas atas dari tabel
Durbin-Watson) dan dL (nilai batas bawah dari tabel Durbin-Watson). Selanjutnya aturan
keputusannya adalah sebagai berikut:
dw < dL : H0 ditolak

dw > (4-dL) : H0 ditolak

dU < dw < (4-dU) : H0 tidak ditolak

dL ≤ dw ≤ dU atau (4-dU) ≤ dw ≤(4-dL) : pengujian tidak dapat diambil keputusan.

3. Uji Heteroskedastisitas

Uji heteroskedastisitas dilakukan untuk mengetahui apakah dalam sebuah model regresi terjadi
ketidaksamaan varian dari error satu pengamatan ke pengamatan lain. Salah satu uji yang
digunakan adalah uji Glejser (Gujarati, 1992) dengan hipotesis sebagai berikut:

H0 : Tidak terjadi heteroskedastistitas

H1 : Terjadi heteroskedastistitas

Uji ini dilakukan dengan meregresikan nilai absolute error dari model yang dibuat
dengan semua variabel prediktor x yang ada. Jika variabel prediktornya ternyata signifikan
maka disimpulkan terjadi heteroskedastisitas, sebaliknya jika variabel prediktornya tidak
signifikan maka terjadi homoskedastisitas.

4. Uji Multikolinieritas

Salah satu syarat yang harus dipenuhi dalam regresi dengan beberapa variabel prediktor adalah
tidak adanya korelasi antara satu variabel prediktor dengan variabel prediktor yang lain.
Adanya korelasi dalam model regresi menyebabkan taksiran parameter regresi yang dihasilkan
akan memiliki error yang sangat besar. Pendeteksian adanya kasus kolinieritas menurut
Hocking (1996) dapat dilihat melalui koefisien korelasi Pearson (r ij). Jika koefisien korelasi
Pearson (rij) antar variabel > 0,95 maka terdapat korelasi antar variabel tersebut. Untuk
mendeteksi adanya kolinieritas juga dapat menggunakan Variance Inflation Factors (VIF)
yang dinyatakan sebagai berikut :

1
VIFj 
1  R 2j
dengan R 2j adalah koefisien determinasi antara xj dengan variabel prediktor lainnya. VIFj yang

lebih besar dari 10 menunjukan adanya kolinieritas antar variabel prediktor. Solusi untuk
mengatasi adanya kasus tersebut adalah dengan mengeluarkan variabel prediktor yang tidak
signifikan dan meregresikan kembali variabel-variabel prediktor yang signifikan.

Sintaks R:

Uji Normalitas

#1. Uji Normalitas K-S secara Manual


uji.ks.normal=function(x)
{
n = length(x)
Fx = rep(0, n)
F0 = rep(0, n)
x = sort(x)
mu = mean(x)
sd= sqrt(var(x))
for(i in 1:n) {
Fx[i] = length(x[x <= x[i]])/n
F0[i] = pnorm(x[i],mu,sd)
}
D = max(abs(Fx-F0))
p = (1:n - 0.5)/n
z = qnorm(p,mu,sd)
win.graph()
qqplot(z, x, xlab="Theoritical Quantiles",ylab="Sample Quantiles",
main = expression("Q-Q plot for Normal Distribution" ))
qqline(z, distribution = function(p) qnorm(p, mu, sd))

cat("--------------------------------------------\n")
cat("Uji K-S: Cek Normalitas Residual\n")
cat("--------------------------------------------\n")
cat("Nilai Uji K-S =",D,"\n")
cat("--------------------------------------------\n")
}

Uji Durbin Watson

#Uji Dusbin Watson


durbin_watson=function(error)
{
n = length(error)
d1 = rep(0,n-1)
for (i in 2:n){
d1[i]=(error[i]-error[i-1])^2
}
d1=sum(d1)
d2=sum(error^2)
d=d1/d2
cat("--------------------------------------------\n")
cat("Uji Durbin-Watson: Cek Autokorelasi Residual\n")
cat("--------------------------------------------\n")
cat("Nilai DW =",d,"\n")
cat("--------------------------------------------\n")
}

Uji Glejser

#Uji Glejser
glejser=function(X,error)
{
n = length(error)
p = ncol(X)
bo= rep(1,n)
X = cbind(bo,X)
X = as.matrix(X)
y = abs(error)

# Step 2: Menghitung nilai sigma (MSE)


beta=solve(t(X)%*%X)%*%t(X)%*%y
H = X%*%solve(t(X)%*%X)%*%t(X)
I = diag(rep(1,n))
SSE = t(y)%*%(I-H)%*%y
db = n-p-1
MSE = SSE/db

# Step 3: Menghitung RSquare


J = matrix(rep(1,n*n),ncol=n)
SST = t(y)%*%(I-(1/n)*J)%*%y
Rsquare=1-(SSE/SST)

# Step 4: Uji Kecocokan Model (Uji Serentak)


SSR=SST-SSE
MSR=SSR/p
Fhit=MSR/MSE
sig_F=1-pf(Fhit,p,db)
Fstat=cbind(Fhit,sig_F)
colnames(Fstat)=c("F_hit","Sig")

# Step 5: Uji Parsial Parameter regresi


SE_beta=sqrt(diag(solve(t(X)%*%X))*c(MSE))
t_hit=(1/SE_beta)*beta
sig_t=2*(1-pt(abs(t_hit),n-p-1))
T_stat=cbind(beta,SE_beta,t_hit,sig_t)
colnames(T_stat)=c("beta","SE_beta","t_hit","Sig")

cat("--------------------------------------------\n")
cat(" Uji Glejser: Cek Homogenitas Residual \n")
cat("--------------------------------------------\n")
cat("nilai RSquare =",Rsquare,"\n")

cat("Uji Hipotesis Kecocokan Model Regresi =\n")


print(Fstat)

cat("Uji Hipotesis Parameter Model Regresi =\n")


print(T_stat)
cat("--------------------------------------------\n")
}
Uji Multikolinieritas

#Uji Multikolinieritas
VIF=function(Prediktor)
{
n = nrow(Prediktor)
p = ncol(Prediktor)
vif=rep(0,p)

for (i in 1:p){
y = Prediktor[,i] # Definisikan prediktor ke-i sebagai respon
X = Prediktor[,-i] # prediktor yang lain

bo= rep(1,n)
X = cbind(bo,X)
X = as.matrix(X)

beta=solve(t(X)%*%X)%*%t(X)%*%y
H = X%*%solve(t(X)%*%X)%*%t(X)
I = diag(rep(1,n))
SSE = t(y)%*%(I-H)%*%y

J = matrix(1,n,n)
SST = t(y)%*%(I-(1/n)*J)%*%y
Rsquare=1-(SSE/SST)
vif[i]=1/(1-Rsquare)
}

cat("--------------------------------------------\n")
cat("Uji VIF: Cek Multikolinieritas Prediktor\n")
cat("--------------------------------------------\n")
vif = as.matrix(vif)
colnames(vif)="VIF"
rownames(vif)=colnames(Prediktor)
print(vif)
cat("--------------------------------------------\n")
}
Contoh:

Berikut adalah contoh data Regresi Linier dengan Penjualan sebagai Variabel Respon

Data:

Penjualan Promosi Outlet


205.8 26.3 159
206.4 28.7 164
254.5 35.6 198
246.2 31.4 184
201.0 21.8 150
291.3 49.9 208
234.7 30.6 184
209.8 30.0 154
204.1 24.0 149
216.5 31.8 175
245.8 32.5 192
266.9 47.3 201
302.4 54.5 248
265.4 38.2 166
322.0 42.0 287

Sintaks Utama Uji Asumsi:

#Sintaks Gabungan
dataku=read.delim('data regresi.txt')
X = dataku[,c(2,3)]# misal prediktor ada di kolom 2 dan 3
y = dataku[,1]# misal respon di kolom 1

#Estimasi Parameter
model = regresi(X,y)

#Uji Asumsi
error = model$Residual
uji.ks.normal(error) #Normalitas Residual
durbin_watson(error) #Uji Autokorelasi (DW)
glejser(X,error) #Uji Homogenitas
VIF(X) #Uji Multikolinieritas

Output:

> #Sintaks Gabungan


> dataku=read.delim('data regresi.txt')
> X = dataku[,c(2,3)]# misal prediktor ada di kolom 2 dan 3
> y = dataku[,1]# misal respon di kolom 1
> #Estimasi Parameter
> model = regresi(X,y)
Coefficients=
[,1]
bo 71.0787100
Promosi 1.8322153
Outlet 0.5836961
Nilai MSE =
[,1]
[1,] 141.1006
Nilai RSquare =
[,1]
[1,] 0.9199354
Hasil Regresi =
y yhat Error
[1,] 205.8 212.0736 -6.2736464
[2,] 206.4 219.3894 -12.9894435
[3,] 254.5 251.8774 2.6226048
[4,] 246.2 236.0103 10.1896540
[5,] 201.0 198.5754 2.4245872
[6,] 291.3 283.9150 7.3849648
[7,] 234.7 234.5446 0.1554263
[8,] 209.8 215.9344 -6.1343629
[9,] 204.1 202.0226 2.0774095
[10,] 216.5 231.4900 -14.9899677
[11,] 245.8 242.6954 3.1046487
[12,] 266.9 275.0654 -8.1654030
[13,] 302.4 315.6911 -13.2910680
[14,] 265.4 237.9629 27.4371186
[15,] 322.0 315.5525 6.4474777
Uji Hipotesis Kecocokan Model Regresi =
F_hit Sig
[1,] 68.93948 2.634167e-07
Uji Hipotesis Parameter Model Regresi =
beta SE_beta t_hit Sig
bo 71.0787100 15.9635375 4.452566 0.0007893228
Promosi 1.8322153 0.4943073 3.706632 0.0029992056
Outlet 0.5836961 0.1249450 4.671625 0.0005399822
Interval Konfidensi 95 % Beta =
Lower Upper
bo 36.2971498 105.8602703
Promosi 0.7552122 2.9092185
Outlet 0.3114644 0.8559278
> #Uji Asumsi
> error = model$Residual
> uji.ks.normal(error) #Normalitas Residual
--------------------------------------------
Uji K-S: Cek Normalitas Residual
--------------------------------------------
Nilai Uji K-S = 0.1221875
--------------------------------------------
> durbin_watson(error) #Uji Autokorelasi (DW)
--------------------------------------------
Uji Durbin-Watson: Cek Autokorelasi Residual
--------------------------------------------
Nilai DW = 2.044408
--------------------------------------------
> glejser(X,error) #Uji Homogenitas
--------------------------------------------
Uji Glejser: Cek Homogenitas Residual
--------------------------------------------
nilai RSquare = 0.2139708
Uji Hipotesis Kecocokan Model Regresi =
F_hit Sig
[1,] 1.633304 0.2358479
Uji Hipotesis Parameter Model Regresi =
beta SE_beta t_hit Sig
bo 8.25638785 8.92475971 0.9251104 0.37313858
Promosi 0.49943560 0.27635316 1.8072368 0.09584332
Outlet -0.09299821 0.06985318 -1.3313383 0.20781694
--------------------------------------------
> VIF(X) #Uji Multikolinieritas
--------------------------------------------
Uji VIF: Cek Multikolinieritas Prediktor
--------------------------------------------
VIF
Promosi 2.246962
Outlet 2.246962
--------------------------------------------
Interpretasi:

Mahasiswa diharapkan mampu menginterpretasikan uji asumsi model regresi tersebut sesuai
dengan pengetahuan yang sudah diperoleh pada mata kuliah Analisis Regresi.

Praktik Mahasiswa:

1. Runing ulang sintaks tersebut dengan data yang sama

2. Bandingkan hasilnya dengan fungsi model regresi bawaan dari R, dengan sintaks
berikut:

#Sintaks Package R
#Input Data
dataku=read.delim('data regresi.txt')

#Estimasi dan Uji Hipotesis


Model_Regresi=lm(Penjualan~Promosi+Outlet,data=dataku)
summary(Model_Regresi)

#Uji Asumsi
# Uji Normalitas Error
error=residuals(Model_Regresi)
ks.test(error,'pnorm',mean(error),sd(error))

# Uji varians bersifat konstan dengan Uji Glejser


abs_error = abs(error)
summary(lm(abs_error~Promosi+Outlet,data=dataku))

# Uji Autokorelasi
library(lmtest)
dwtest(Model_Regresi, alternative = "two.sided")
dwtest(Model_Regresi, alternative = "greater")
dwtest(Model_Regresi, alternative = "less")

#Uji Multikolinieritas
library(car)
vif(Model_Regresi)

3. Interpretasikan hasilnya
4. Upload hasil pekerjaan di Kulon pada Topic 14

Anda mungkin juga menyukai