Diberikan data tentang IQ dan tingkat kehadiran sepuluh siswa di kelas yang diperkirakan mempengaruhi nilai UAS. Pertanyaan : 1. Buatlah persamaan regresi linier berganda ! (hitung beta duga secara manual di R dan bandingkan dengan fungsi lm) 2. Lakukan Uji-F ! (interpretasikan hasilnya) 3. Lakukan Uji-t ! (interpretasikan hasilnya) 4. Berapa koefisien determinasinya? Interpretasi hasil ini ! 5. Lakukan uji asumsi dan jelaskan hasilnya
# INPUT DATA
data <- data.frame(
siswa = 1:10,
X2 = c(110, 120, 115, 130, 110, 120, 120, 125, 110, 120), # IQ
X1 = c(60, 70, 75, 80, 80, 90, 95, 95, 100, 100), # Kehadiran
Y = c(65, 70, 75, 75, 80, 80, 85, 95, 90, 98) # Nilai UAS
)
data
## siswa X2 X1 Y
## 1 1 110 60 65
## 2 2 120 70 70
## 3 3 115 75 75
## 4 4 130 80 75
## 5 5 110 80 80
## 6 6 120 90 80
## 7 7 120 95 85
## 8 8 125 95 95
## 9 9 110 100 90
## 10 10 120 100 98
# 1. HITUNG KOEFISIEN REGRESI
#SECARA MANUAL
# Rumus matriks: beta = (X'X)^(-1) X'Y
X <- cbind(1, data$X1, data$X2) # tambahkan intersep
Y <- as.matrix(data$Y)
beta_manual <- solve(t(X) %*% X) %*% t(X) %*% Y
colnames(beta_manual) <- "Koefisien"
rownames(beta_manual) <- c("Intercept", "X1_Kehadiran", "X2_IQ")
beta_manual
## Koefisien
## Intercept 23.0544545
## X1_Kehadiran 0.7372330
## X2_IQ -0.0343275
# Persamaan regresi manual
cat("\nPersamaan regresi manual:\n")
##
## Persamaan regresi manual:
cat("Y_hat =",
round(beta_manual[1,1], 6), "+",
round(beta_manual[2,1], 6), "* X1 +",
round(beta_manual[3,1], 6), "* X2\n")
## Y_hat = 23.05445 + 0.737233 * X1 + -0.034327 * X2
#HTUNG KOEFISIEN REGRESI MENGGUNAKAN FUNGSI LM
model_lm <- lm(Y ~ X1 + X2, data = data)
summary(model_lm)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.2861 -2.8939 0.0296 1.6791 6.1993
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 23.05445 25.57161 0.902 0.397247
## X1 0.73723 0.10918 6.752 0.000264 ***
## X2 -0.03433 0.22051 -0.156 0.880686
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.346 on 7 degrees of freedom
## Multiple R-squared: 0.8719, Adjusted R-squared: 0.8353
## F-statistic: 23.82 on 2 and 7 DF, p-value: 0.0007523
# Persamaan regresi dari lm
coef_lm <- coef(model_lm)
cat("\nPersamaan regresi dari lm():\n")
##
## Persamaan regresi dari lm():
cat("Y_hat =",
round(coef_lm[1], 6), "+",
round(coef_lm[2], 6), "* X1 +",
round(coef_lm[3], 6), "* X2\n")
## Y_hat = 23.05445 + 0.737233 * X1 + -0.034327 * X2
Hasil perhitungan manual dan hasil menggunakan fungsi lm() menunjukkan nilai koefisien yang sama, yaitu intersep sebesar 23.0545, koefisien X1 (tingkat kehadiran) sebesar 0.7372, dan koefisien X2 (IQ) sebesar -0.0343. Hal ini berarti perhitungan manual yang dilakukan sudah benar karena hasilnya sesuai dengan output bawaan R. Dengan demikian, persamaan regresi linier bergandanya adalah Ŷ = 23.0545 + 0.7372X1 - 0.0343X2. Perbedaan yang muncul hanya pada jumlah angka di belakang koma karena pembulatan, tetapi secara hasil tetap sama.
Berdasarkan persamaan tersebut, variabel kehadiran memiliki pengaruh positif terhadap nilai UAS, artinya setiap kenaikan 1% kehadiran akan meningkatkan nilai UAS sekitar 0.7372 poin dengan asumsi IQ tetap. Sementara itu, koefisien IQ bernilai negatif sangat kecil, yaitu -0.0343, yang berarti jika IQ naik 1 poin maka nilai UAS justru turun 0.0343 poin, tetapi pengaruh ini sangat lemah. Dari hasil uji-t, kehadiran memiliki nilai p-value 0.00026 yang lebih kecil dari 0.05, sehingga berpengaruh signifikan terhadap nilai UAS. Sebaliknya, IQ memiliki p-value 0.88069 yang lebih besar dari 0.05, sehingga tidak berpengaruh signifikan secara parsial.
Secara keseluruhan, model regresi ini signifikan karena hasil uji-F menunjukkan p-value 0.000752 yang lebih kecil dari 0.05. Artinya, variabel kehadiran dan IQ secara bersama-sama berpengaruh terhadap nilai UAS. Selain itu, nilai koefisien determinasi sebesar 0.872 menunjukkan bahwa 87.2% variasi nilai UAS dapat dijelaskan oleh tingkat kehadiran dan IQ, sedangkan sisanya 12.8% dijelaskan oleh faktor lain di luar model. Jadi, dapat disimpulkan bahwa faktor yang paling berpengaruh dalam model ini adalah tingkat kehadiran, sedangkan IQ tidak memberikan pengaruh yang nyata terhadap nilai UAS pada data tersebut.
#2. UJI F
#SECARA MANUAL
# H0: beta1 = beta2 = 0
# H1: minimal ada satu beta != 0
#NILAI PREDIKSI, RESIDUAL, SSE, SSR, SST
Y_hat_manual <- X %*% beta_manual
e_manual <- Y - Y_hat_manual
n <- nrow(X)
k <- ncol(X) - 1 # jumlah variabel bebas
ybar <- mean(Y)
SSE <- sum(e_manual^2) # error sum of squares
SSR <- sum((Y_hat_manual - ybar)^2) # regression sum of squares
SST <- sum((Y - ybar)^2) # total sum of squares
cat("\nSSE =", SSE, "\n")
##
## SSE = 132.209
cat("SSR =", SSR, "\n")
## SSR = 899.891
cat("SST =", SST, "\n")
## SST = 1032.1
MSR <- SSR / k
MSE <- SSE / (n - k - 1)
F_hitung <- MSR / MSE
p_value_F <- pf(F_hitung, df1 = k, df2 = n - k - 1, lower.tail = FALSE)
F_tabel <- qf(0.95, df1 = k, df2 = n - k - 1)
cat("MSR =", MSR, "\n")
## MSR = 449.9455
cat("MSE =", MSE, "\n")
## MSE = 18.887
cat("F hitung =", F_hitung, "\n")
## F hitung = 23.82303
cat("F tabel =", F_tabel, "\n")
## F tabel = 4.737414
cat("p-value =", p_value_F, "\n")
## p-value = 0.0007522929
if (p_value_F < 0.05) {
cat("Keputusan: Tolak H0 -> model signifikan secara simultan\n")
} else {
cat("Keputusan: Gagal tolak H0 -> model tidak signifikan secara simultan\n")
}
## Keputusan: Tolak H0 -> model signifikan secara simultan
#UJI F PAKE FUNGSI R
anova(model_lm)
## Analysis of Variance Table
##
## Response: Y
## Df Sum Sq Mean Sq F value Pr(>F)
## X1 1 899.43 899.43 47.6218 0.0002312 ***
## X2 1 0.46 0.46 0.0242 0.8806861
## Residuals 7 132.21 18.89
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(model_lm)$fstatistic
## value numdf dendf
## 23.82303 2.00000 7.00000
Berdasarkan hasil uji F, diperoleh F hitung = 23.823, F tabel = 4.73741, dan p-value = 0.000752293. Karena F hitung lebih besar dari F tabel dan p-value lebih kecil dari 0.05, maka H0 ditolak.
Artinya, model regresi linier berganda secara keseluruhan signifikan. Dengan demikian, variabel tingkat kehadiran (X1) dan IQ (X2) secara bersama-sama berpengaruh terhadap nilai UAS (Y). Jadi, model regresi yang digunakan sudah layak untuk menjelaskan hubungan antara variabel bebas dan variabel terikat.
# 3. UJI-t
#SECARA MANUAL
# H0: beta_j = 0
# H1: beta_j != 0
XtX_inv <- solve(t(X) %*% X)
Var_beta <- as.numeric(MSE) * XtX_inv
SE_beta <- sqrt(diag(Var_beta))
t_hitung <- as.vector(beta_manual) / SE_beta
df_t <- n - k - 1
p_value_t <- 2 * pt(abs(t_hitung), df = df_t, lower.tail = FALSE)
t_tabel <- qt(0.975, df = df_t)
hasil_t_manual <- data.frame(
Koefisien = c("Intercept", "X1_Kehadiran", "X2_IQ"),
Beta = as.vector(beta_manual),
SE = SE_beta,
t_hitung = t_hitung,
p_value = p_value_t
)
print(hasil_t_manual)
## Koefisien Beta SE t_hitung p_value
## 1 Intercept 23.0544545 25.5716101 0.9015644 0.3972467061
## 2 X1_Kehadiran 0.7372330 0.1091797 6.7524718 0.0002644133
## 3 X2_IQ -0.0343275 0.2205125 -0.1556715 0.8806860631
cat("\nt tabel =", t_tabel, "\n")
##
## t tabel = 2.364624
for (i in 1:length(t_hitung)) {
cat("\n", hasil_t_manual$Koefisien[i], ":\n", sep = "")
if (p_value_t[i] < 0.05) {
cat("Tolak H0 -> signifikan\n")
} else {
cat("Gagal tolak H0 -> tidak signifikan\n")
}
}
##
## Intercept:
## Gagal tolak H0 -> tidak signifikan
##
## X1_Kehadiran:
## Tolak H0 -> signifikan
##
## X2_IQ:
## Gagal tolak H0 -> tidak signifikan
#UJI T DENGAN FUNGSI R
summary(model_lm)$coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 23.0544545 25.5716101 0.9015644 0.3972467061
## X1 0.7372330 0.1091797 6.7524718 0.0002644133
## X2 -0.0343275 0.2205125 -0.1556715 0.8806860631
Berdasarkan hasil uji t, pengujian dilakukan untuk melihat pengaruh masing-masing variabel bebas terhadap nilai UAS secara parsial.
Untuk X1 (tingkat kehadiran), diperoleh t hitung = 6.752472 dengan p-value = 0.000264413. Karena p-value < 0.05 dan |t hitung| > t tabel (2.36462), maka H0 ditolak. Artinya, tingkat kehadiran berpengaruh signifikan terhadap nilai UAS.
Untuk X2 (IQ), diperoleh t hitung = -0.155671 dengan p-value = 0.880686063. Karena p-value > 0.05 dan |t hitung| < t tabel, maka H0 gagal ditolak. Artinya, IQ tidak berpengaruh signifikan terhadap nilai UAS.
Untuk intersep, diperoleh p-value = 0.397246706 sehingga tidak signifikan. Namun, dalam interpretasi regresi, fokus utama biasanya ada pada variabel bebas.
Jadi, dari hasil uji t dapat disimpulkan bahwa hanya variabel kehadiran yang berpengaruh signifikan secara parsial terhadap nilai UAS, sedangkan IQ tidak berpengaruh signifikan.
#4. KOEFISIEN DETERMINASI
#MANUAL
R2_manual <- SSR / SST
Adj_R2_manual <- 1 - ((SSE / (n - k - 1)) / (SST / (n - 1)))
cat("\nR-squared manual =", R2_manual, "\n")
##
## R-squared manual = 0.8719029
cat("Adjusted R-squared =", Adj_R2_manual, "\n")
## Adjusted R-squared = 0.8353038
#FUNGSI R
cat("R-squared =", summary(model_lm)$r.squared, "\n")
## R-squared = 0.8719029
cat("Adjusted R-squared =", summary(model_lm)$adj.r.squared, "\n")
## Adjusted R-squared = 0.8353038
Berdasarkan hasil perhitungan, diperoleh R-squared = 0.871903 dan Adjusted R-squared = 0.835304.
Artinya, sebesar 87.19% variasi nilai UAS dapat dijelaskan oleh variabel tingkat kehadiran dan IQ dalam model regresi. Sedangkan sisanya sebesar 12.81% dijelaskan oleh faktor lain di luar model yang tidak diteliti.
Sementara itu, nilai Adjusted R-squared sebesar 83.53% menunjukkan bahwa setelah disesuaikan dengan jumlah variabel bebas yang digunakan, model masih mampu menjelaskan variasi nilai UAS dengan cukup baik. Jadi, dapat dikatakan bahwa model regresi yang dibentuk memiliki kemampuan penjelasan yang kuat terhadap nilai UAS.
#a. Normalitas residual
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.4.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.2
shapiro.test(residuals(model_lm))
##
## Shapiro-Wilk normality test
##
## data: residuals(model_lm)
## W = 0.95125, p-value = 0.6833
Berdasarkan hasil uji normalitas residual dengan Shapiro-Wilk, diperoleh nilai W = 0.9513 dan p-value = 0.683. Karena p-value > 0.05, maka H0 tidak ditolak.
Artinya, residual pada model regresi berdistribusi normal. Dengan demikian, asumsi normalitas residual dalam model regresi telah terpenuhi.
#b. Multikolinearitas
#(VIF manual)
# VIF_j = 1 / (1 - Rj^2), dengan Rj^2 dari regresi Xj terhadap variabel bebas lain
model_X1_on_X2 <- lm(X1 ~ X2, data = data)
model_X2_on_X1 <- lm(X2 ~ X1, data = data)
R2_X1 <- summary(model_X1_on_X2)$r.squared
R2_X2 <- summary(model_X2_on_X1)$r.squared
VIF_X1 <- 1 / (1 - R2_X1)
VIF_X2 <- 1 / (1 - R2_X2)
cat("VIF X1 =", VIF_X1, "\n")
## VIF X1 = 1.055571
cat("VIF X2 =", VIF_X2, "\n")
## VIF X2 = 1.055571
if (VIF_X1 < 10 & VIF_X2 < 10) {
cat("Keputusan: tidak ada masalah multikolinearitas serius\n")
} else {
cat("Keputusan: ada indikasi multikolinearitas\n")
}
## Keputusan: tidak ada masalah multikolinearitas serius
#FUNGSI R
vif(model_lm)
## X1 X2
## 1.055571 1.055571
Berdasarkan hasil perhitungan, diperoleh nilai VIF X1 = 1.05557 dan VIF X2 = 1.05557. Karena kedua nilai VIF < 10, maka dapat disimpulkan bahwa tidak terdapat masalah multikolinearitas yang serius pada model regresi.
Artinya, antar variabel bebas yaitu tingkat kehadiran dan IQ tidak memiliki hubungan linear yang kuat, sehingga keduanya tidak saling mengganggu dalam menjelaskan variabel nilai UAS. Dengan demikian, asumsi multikolinearitas dalam model regresi telah terpenuhi.
#c. Heteroskedastisitas
#(Breusch-Pagan manual)
# Regresi e^2 terhadap X1 dan X2
e2 <- as.vector(e_manual)^2
bp_aux <- lm(e2 ~ X1 + X2, data = data)
R2_bp <- summary(bp_aux)$r.squared
LM <- n * R2_bp
p_value_bp <- pchisq(LM, df = k, lower.tail = FALSE)
cat("LM statistic =", LM, "\n")
## LM statistic = 5.904977
cat("p-value =", p_value_bp, "\n")
## p-value = 0.05220963
if (p_value_bp < 0.05) {
cat("Keputusan: terdapat heteroskedastisitas\n")
} else {
cat("Keputusan: tidak terdapat heteroskedastisitas\n")
}
## Keputusan: tidak terdapat heteroskedastisitas
#FUNGSI R
bptest(model_lm)
##
## studentized Breusch-Pagan test
##
## data: model_lm
## BP = 5.905, df = 2, p-value = 0.05221
Berdasarkan hasil uji heteroskedastisitas Breusch-Pagan, diperoleh nilai BP/LM = 5.905 dengan p-value = 0.0522. Karena p-value > 0.05, maka H0 tidak ditolak.
Artinya, tidak terdapat heteroskedastisitas pada model regresi. Dengan demikian, varians residual dapat dianggap konstan (homoskedastisitas), sehingga asumsi heteroskedastisitas pada model telah terpenuhi.
#d. Autokorelasi
#(Durbin-Watson manual)
num_dw <- sum(diff(as.vector(e_manual))^2)
den_dw <- sum(as.vector(e_manual)^2)
DW_manual <- num_dw / den_dw
cat("DW =", DW_manual, "\n")
## DW = 2.594003
#FUNGSI R
dwtest(model_lm)
##
## Durbin-Watson test
##
## data: model_lm
## DW = 2.594, p-value = 0.8013
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji Durbin-Watson, diperoleh nilai DW = 2.594 dengan p-value = 0.801. Karena p-value > 0.05, maka H0 tidak ditolak.
Artinya, tidak terdapat autokorelasi positif pada residual model regresi. Dengan demikian, residual pada model dapat dianggap saling bebas, sehingga asumsi autokorelasi telah terpenuhi.
Berdasarkan empat uji asumsi klasik yang telah dilakukan, dapat disimpulkan bahwa model regresi memenuhi seluruh asumsi dasar dengan baik.
Pada uji normalitas, residual terbukti berdistribusi normal karena nilai p-value Shapiro-Wilk 0.683 > 0.05. Pada uji multikolinearitas, nilai VIF X1 dan X2 sebesar 1.05557, yang berarti tidak terdapat hubungan linear yang kuat antar variabel bebas, sehingga tidak ada masalah multikolinearitas.
Selanjutnya, pada uji heteroskedastisitas dengan Breusch-Pagan, diperoleh p-value 0.0522 > 0.05, sehingga dapat disimpulkan tidak terdapat heteroskedastisitas, atau varians residual bersifat konstan. Pada uji autokorelasi Durbin-Watson, diperoleh p-value 0.801 > 0.05, yang menunjukkan tidak terdapat autokorelasi pada residual.
Jadi, secara keseluruhan, model regresi yang digunakan sudah memenuhi asumsi klasik, sehingga hasil estimasi regresi dapat dianggap baik, valid, dan layak digunakan untuk analisis serta penarikan kesimpulan.