# NO.1
X1 <- c(60,70,75,80,80,90,95,95,100,100)
X2 <- c(110,120,115,130,110,120,120,125,110,120)
Y  <- c(65,70,75,75,80,80,85,95,90,98)

#matrix desain
X <- cbind(1, X1, X2) #intercept+variabel independent
X
##          X1  X2
##  [1,] 1  60 110
##  [2,] 1  70 120
##  [3,] 1  75 115
##  [4,] 1  80 130
##  [5,] 1  80 110
##  [6,] 1  90 120
##  [7,] 1  95 120
##  [8,] 1  95 125
##  [9,] 1 100 110
## [10,] 1 100 120
#perhitungan manual
XtX <- t(X) %*% X
XtX
##            X1     X2
##      10   845   1180
## X1  845 73075  99900
## X2 1180 99900 139650
XtX_inv <- solve(XtX)
XtX_inv
##                           X1            X2
##    34.62208967 -0.0188185492 -0.2790840870
## X1 -0.01881855  0.0006311333 -0.0002924764
## X2 -0.27908409 -0.0002924764  0.0025745622
XtY <- t(X) %*% Y
XtY
##     [,1]
##      813
## X1 69925
## X2 96060
beta_manual <- XtX_inv %*% XtY #(X'X)^-1 X'Y
beta_manual
##          [,1]
##    23.0544545
## X1  0.7372330
## X2 -0.0343275
#prediksi dan residual
y_hat <- X %*% beta_manual
y_hat
##           [,1]
##  [1,] 63.51241
##  [2,] 70.54147
##  [3,] 74.39927
##  [4,] 77.57052
##  [5,] 78.25707
##  [6,] 85.28613
##  [7,] 88.97229
##  [8,] 88.80065
##  [9,] 93.00173
## [10,] 92.65846
residuals <- Y - y_hat
residuals
##             [,1]
##  [1,]  1.4875890
##  [2,] -0.5414662
##  [3,]  0.6007312
##  [4,] -2.5705215
##  [5,]  1.7429286
##  [6,] -5.2861266
##  [7,] -3.9722917
##  [8,]  6.1993458
##  [9,] -3.0017318
## [10,]  5.3415432
# bandingkan dengan fungsi lm
model <- lm(Y ~ X1 + X2)
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2)
## 
## 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

Interpretasi

Berdasarkan hasil perhitungan regresi secara manual menggunakan metode matriks diperoleh nilai koefisien regresi yaitu intercept sebesar 23,054, koefisien X1 sebesar 0,737, dan koefisien X2 sebesar -0,034. Selanjutnya, ketika dibandingkan dengan hasil menggunakan fungsi lm() di R, diperoleh nilai koefisien yang sama, yaitu intercept 23,05445, koefisien X1 sebesar 0,73723, dan koefisien X2 sebesar -0,03433. Kesamaan hasil ini menunjukkan bahwa perhitungan manual dan fungsi lm() sesuai.

# NO.2 UJI SIMULTAN/ UJI F
n <- length(Y)
#hitung SST, SSR, SSE
mean_y <- mean(Y)
mean_y
## [1] 81.3
SST <- sum((Y - mean_y)^2) #JKT
SST
## [1] 1032.1
SSR <- sum((y_hat - mean_y)^2) #JKR
SSR
## [1] 899.891
SSE <- sum((Y - y_hat)^2) #JKG
SSE
## [1] 132.209
#derajat kebebasan
df_reg <- ncol(X) - 1
df_reg
## [1] 2
df_err <- n - ncol(X)
df_err
## [1] 7
df_tot <- n - 1
df_tot
## [1] 9
#mean squares
MSR <- SSR/df_reg
MSR
## [1] 449.9455
MSE <- SSE/df_err
MSE
## [1] 18.887
#F-Statistic
f_value <- MSR/MSE
f_value
## [1] 23.82303
p_value_f <- pf(f_value, df_reg, df_err, lower.tail = FALSE)
p_value_f
## [1] 0.0007522929

Interpretasi Uji F

Berdasarkan hasil uji simultan (uji F), diperoleh nilai F hitung sebesar 23,823 dengan p-value sebesar 0,00075. Nilai p-value tersebut lebih kecil dari taraf signifikansi 0,05, sehingga keputusan yang diambil adalah menolak H0. Hal ini menunjukkan bahwa variabel X1 (kehadiran) dan X2 (IQ) secara bersama-sama berpengaruh signifikan terhadap variabel Y (nilai UAS). Dengan demikian, model regresi yang digunakan layak untuk menjelaskan hubungan antara variabel independen dan variabel dependen. Selain itu, nilai koefisien determinasi (R²) sebesar 0,872 menunjukkan bahwa sekitar 87,2% variasi nilai Y dapat dijelaskan oleh variabel X1 dan X2 secara simultan, sedangkan sisanya sebesar 12,8% dipengaruhi oleh faktor lain di luar model.

# N0.3
summary(model)$fstatistic
##    value    numdf    dendf 
## 23.82303  2.00000  7.00000
coef(summary(model))[, "t value"]
## (Intercept)          X1          X2 
##   0.9015644   6.7524718  -0.1556715

Interpretasi Uji-t

Berdasarkan hasil uji t (parsial), diperoleh nilai t hitung untuk variabel X1 (kehadiran) sebesar 6,752 dan nilai ini menunjukkan bahwa X1 berpengaruh signifikan terhadap Y (nilai UAS), sehingga semakin tinggi tingkat kehadiran maka cenderung meningkatkan nilai UAS. Sementara itu, variabel X2 (IQ) memiliki nilai t hitung sebesar -0,156 yang menunjukkan bahwa X2 tidak berpengaruh signifikan terhadap Y dalam model ini. Dengan demikian, dapat disimpulkan bahwa secara parsial hanya variabel X1 yang berpengaruh signifikan terhadap nilai UAS, sedangkan variabel X2 tidak memberikan pengaruh yang signifikan.

# NO.4 KOEFISIEN DETERMINASI
R2 <- SSR / SST
R2
## [1] 0.8719029

Interpretasi Koefisien Determinasi

Berdasarkan hasil perhitungan diperoleh nilai koefisien determinasi (R²) sebesar 0,8719. Hal ini menunjukkan bahwa sekitar 87,19% variasi pada variabel Y (nilai UAS) dapat dijelaskan oleh variabel X1 (kehadiran) dan X2 (IQ) secara bersama-sama dalam model regresi. Sisanya sebesar 12,81% variasi Y dijelaskan oleh faktor lain di luar model yang tidak dimasukkan dalam analisis. Dengan demikian, model regresi yang digunakan memiliki kemampuan yang cukup baik dalam menjelaskan hubungan antara variabel independen dan variabel dependen.

# NO.5
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
## homoskedastisitas
data_awal <- data.frame(X1, X2, Y)
model_1 <- lm(Y ~ X1 + X2, data = data_awal)

# galat (residual)
galat <- residuals(model_1)

# varians galat
sd.e <- sum(galat^2) / (nrow(data_awal) - 3)  # 3 = jumlah parameter (b0, b1, b2)

# rasio
p <- (galat^2) / sd.e

# dataframe baru
dh <- data.frame(p, X1, X2)

# regresi tambahan
model_2 <- lm(p ~ X1 + X2, data = dh)

# SSR
ss.r <- sum((fitted(model_2) - mean(p))^2)
ss.r/2
## [1] 1.417117
model_1 <- lm(Y ~ X1 + X2, data = data_awal)
bptest(model_1)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_1
## BP = 5.905, df = 2, p-value = 0.05221
#non-autokorelasi
dwtest(model_1, alternative = "two.sided")
## 
##  Durbin-Watson test
## 
## data:  model_1
## DW = 2.594, p-value = 0.3974
## alternative hypothesis: true autocorrelation is not 0
#non-multikolinearitas
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.3
#menghitung VIF utk tipa variabel
#independent dalam model
vif(model_1)
##       X1       X2 
## 1.055571 1.055571
#tolerance 
vif.inv <- 1/vif(model_1)
print(vif.inv)
##       X1       X2 
## 0.947355 0.947355

Interpretasi Uji Asumsi

Berdasarkan hasil uji heteroskedastisitas menggunakan Breusch-Pagan test, diperoleh nilai p-value sebesar 0,05221 yang lebih besar dari 0,05. Hal ini menunjukkan bahwa tidak terdapat gejala heteroskedastisitas dalam model regresi, sehingga asumsi homoskedastisitas terpenuhi.Selanjutnya, hasil uji autokorelasi menggunakan Durbin-Watson test menunjukkan nilai DW sebesar 2,594 dengan p-value 0,3974. Karena p-value lebih besar dari 0,05, maka dapat disimpulkan bahwa tidak terdapat autokorelasi dalam model regresi. Selain itu, hasil uji multikolinearitas menunjukkan nilai VIF untuk variabel X1 dan X2 masing-masing sebesar 1,056 yang lebih kecil dari 10, serta nilai tolerance sebesar 0,947 yang lebih besar dari 0,1. Hal ini menunjukkan bahwa tidak terjadi masalah multikolinearitas antar variabel independen dalam model.Dengan demikian, dapat disimpulkan bahwa model regresi memenuhi asumsi klasik, yaitu tidak mengalami heteroskedastisitas, tidak terdapat autokorelasi, dan tidak terjadi multikolinearitas, sehingga model layak digunakan untuk analisis lebih lanjut.