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. persamaan regresi linier berganda

# 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

Interpretasi

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

#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

Interpretasi

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

# 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

Interpretasi

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

#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

Interpretasi

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.

5. Uji Asumsi

#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

Interpretasi

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

Interpretasi

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

Interpretasi

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

Interpretasi

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.

Interpretasi secara keseluruhan

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.