data <- data.frame(
  IQ = c(110, 120, 115, 130, 110, 120, 120, 125, 110, 120),
  Kehadiran = c(60, 70, 75, 80, 80, 90, 95, 95, 100, 100),
  Nilai = c(65, 70, 75, 75, 80, 80, 85, 95, 90, 98)
)

data
##     IQ Kehadiran Nilai
## 1  110        60    65
## 2  120        70    70
## 3  115        75    75
## 4  130        80    75
## 5  110        80    80
## 6  120        90    80
## 7  120        95    85
## 8  125        95    95
## 9  110       100    90
## 10 120       100    98

MODEL REGRESI LINIER

model <- lm(Nilai ~ IQ + Kehadiran, data = data)
summary(model)
## 
## Call:
## lm(formula = Nilai ~ IQ + Kehadiran, 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    
## IQ          -0.03433    0.22051  -0.156 0.880686    
## Kehadiran    0.73723    0.10918   6.752 0.000264 ***
## ---
## 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
  1. MENGHITUNG KOEFISIEN SECARA MANUAL
X <- cbind(1, data$IQ, data$Kehadiran)
Y <- as.matrix(data$Nilai)
n<- length (Y)

beta_manual <- solve(t(X) %*% X) %*% t(X) %*% Y
beta_manual
##            [,1]
## [1,] 23.0544545
## [2,] -0.0343275
## [3,]  0.7372330
beta0 <- beta_manual[1]
beta1 <- beta_manual[2]
beta2 <- beta_manual[3]

#persamaan regresinya
cat("Persamaan Regresi: Y =",
    beta0, "+",
    beta1, "*IQ +",
    beta2, "*Kehadiran\n")
## Persamaan Regresi: Y = 23.05445 + -0.0343275 *IQ + 0.737233 *Kehadiran
#prediksi nilai Y
y_pred <- beta0 + beta1 * data$IQ + beta2 * data$Kehadiran
y_pred
##  [1] 63.51241 70.54147 74.39927 77.57052 78.25707 85.28613 88.97229 88.80065
##  [9] 93.00173 92.65846
y_mean <- mean(data$Nilai)
y_mean
## [1] 81.3
#hitung SST, SSR, SSE
SST <- sum((data$Nilai - y_mean)^2)
SST
## [1] 1032.1
SSE <- sum((data$Nilai - y_pred)^2)
SSE
## [1] 132.209
SSR <- sum((y_pred - y_mean)^2)
SSR
## [1] 899.891
#DB
k <- 2  # jumlah variabel bebas
df_reg <- k
df_err <- n - k - 1
df_tot <- n - 1

#mean square
MSR <- SSR/df_reg
MSE <- SSE/df_err

#Uji F
F_value <- MSR/MSE
P_value_F <- pf(F_value, df_reg, df_err, lower.tail = FALSE)

#Uji t untuk beta1
XtX_inv <- solve(t(X) %*% X)
SE_beta1 <- sqrt(MSE * XtX_inv[2,2])
SE_beta2 <- sqrt(MSE * XtX_inv[3,3])
t_beta1 <- beta1 / SE_beta1
t_beta2 <- beta2 / SE_beta2

p_beta1 <- 2 * pt(-abs(t_beta1), df_err)
p_beta2 <- 2 * pt(-abs(t_beta2), df_err)

PERBANDINGAN DENGAN LM()

coef(model)
## (Intercept)          IQ   Kehadiran 
##  23.0544545  -0.0343275   0.7372330

Persamaan Regresinya: Nilai = 23.0544545 -0.0343275(IQ) + 0.7372330(Kehadiran)

Interpretasi: -Intercept (23.054) = Nilai UAS diperkirakan sebesar 23.054 ketika IQ dan Kehadiran = 0 -IQ (-0.034) = Setiap kenaikan 1 poin IQ, Nilai turun 0.034 -Kehadiran (0.737)= Setiap kenaikan 1% kehadiran, Nilai naik sebesar 0.737

  1. UJI F(SIMULTAN)
summary(model)$fstatistic
##    value    numdf    dendf 
## 23.82303  2.00000  7.00000

Interpretasi: Karena p-value < 0.05 maka tolak H₀

artinya: IQ dan Kehadiran secara bersama sama berpengaruh signifikan terhadap Nilai UAS

  1. UJI T(PARSIAL)
summary(model)$coefficients
##               Estimate Std. Error    t value     Pr(>|t|)
## (Intercept) 23.0544545 25.5716101  0.9015644 0.3972467061
## IQ          -0.0343275  0.2205125 -0.1556715 0.8806860631
## Kehadiran    0.7372330  0.1091797  6.7524718 0.0002644133

KOEFISIEN DETERMINASI (R²)

summary(model)$r.squared
## [1] 0.8719029

Interpretasi: 87.19% variasi Nilai UAS dapat dijelaskan oleh IQ dan Kehadiran/ Sisanya 12.81% dipengaruhi faktor lain. seperti : belajar, tugas, lingkungan, dll

  1. UJI ASUMSI A. NORMALITAS H₀: Residual berdistribusi normal H₁: Residual tidak berdistribusi normal
shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.95125, p-value = 0.6833
hist(residuals(model))

qqnorm(residuals(model))
qqline(residuals(model))

HISTOGRAM RESIDUAL: -Bentuk histogram cukup simetris -Tidak terlalu miring ke kiri atau kanan -Sebagian besar data berada di sekitar tengah Interpretasi:Histogram menunjukkan pola yang mendekati distribusi norma. Ini memperkuat hasil uji Shapiro-Wilk

Q-Q PLOT: -Titik-titik cenderung mengikuti garis diagonal -Ada sedikit penyimpangan di ujung Interpretasi: Residual mendekati distribusi normal, Karena sebagian besar titik berada di sekitar garis

B. HETEROSKEDASTISTITAS H₀: Tidak ada heteroskedastisitas H₁: Ada heteroskedastisitas

plot(fitted(model), residuals(model))
abline(h=0, col="red")

-Titik-titik menyebar di atas dan di bawah garis nol -Tidak membentuk pola tertentu (tidak seperti kipas, gelombang, atau pola jelas) -Penyebaran relatif acak Interpretasi: Karena titik menyebar secara acak dan tidak membentuk pola maka tidak terjadi heteroskedastisitas, dan Varians residual konstan (homoskedastisitas terpenuhi)

C. AUTOKORELASI H₀: Tidak terdapat autokorelasi pada residual H₁: Terdapat autokorelasi pada residual

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.2
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 2.594, p-value = 0.8013
## alternative hypothesis: true autocorrelation is greater than 0

Nilai DW = 2.594 yang masih berada di sekitar 2, sehingga menunjukkan tidak adanya autokorelasi yang signifikan. p-value sebesar 0.8013 > 0.05, menunjukkan bahwa tidak ada cukup bukti untuk menolak hipotesis nol, yaitu tidak adanya autokorelasi.

Karena p-value > 0.05, maka gagal menolak H₀

D. MULTIKOLINEARITAS H₀: Tidak terdapat multikolinearitas antar variabel independen H₁: Terdapat multikolinearitas

library(car)
## Warning: package 'car' was built under R version 4.5.2
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.2
vif(model)
##        IQ Kehadiran 
##  1.055571  1.055571

Nilai VIF sebesar 1.055 sangat kecil dan mendekati 1, yang berarti: -Hubungan antar variabel independen sangat lemah -Tidak terjadi multikolinearitas

Karena VIF < 10 maka gagal menolak H₀ Jadi: Variabel IQ dan Kehadiran tidak saling mempengaruhi secara kuat dalam model.

Kesimpulan

  1. Model regresi menunjukkan bahwa variabel IQ dan Kehadiran secara simultan berpengaruh signifikan terhadap Nilai UAS (uji F signifikan).
  2. Secara parsial, hanya variabel Kehadiran yang berpengaruh signifikan terhadap Nilai, sedangkan IQ tidak berpengaruh signifikan.
  3. Nilai koefisien determinasi (R²) sebesar 0.8719 menunjukkan bahwa 87.19% variasi Nilai UAS dapat dijelaskan oleh model.
  4. Hasil uji asumsi menunjukkan bahwa:
    • Residual berdistribusi normal
    • Tidak terjadi heteroskedastisitas
    • Tidak terdapat autokorelasi
    • Tidak terdapat multikolinearitas

Dengan demikian, model regresi yang diperoleh sudah baik dan dapat digunakan, dengan variabel Kehadiran sebagai faktor yang paling berpengaruh terhadap Nilai UAS.