Input Data

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_UAS = c(65,70,75,75,80,80,85,95,90,98)
)

Cek Data

print(data)
##     IQ Kehadiran Nilai_UAS
## 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

Menentukan Variabel

Y <- as.matrix(data$Nilai_UAS)   # Variabel respon
X1 <- data$Kehadiran             # Variabel bebas 1
X2 <- data$IQ                    # Variabel bebas 2

# Matriks (dengan intercept)
X <- cbind(1, X1, X2)
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

Menghitung Koefisien Regresi (Manual)

# 1. Hitung X'X
XtX <- t(X) %*% X
XtX
##            X1     X2
##      10   845   1180
## X1  845 73075  99900
## X2 1180 99900 139650
# 2. Hitung (X'X)^-1
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
# 3. Hitung X'Y
XtY <- t(X) %*% Y
XtY
##     [,1]
##      813
## X1 69925
## X2 96060
# 4. Hitung beta duga
beta_duga <- XtX_inv %*% XtY
beta_duga
##          [,1]
##    23.0544545
## X1  0.7372330
## X2 -0.0343275
cat("Hasil beta duga:\n")
## Hasil beta duga:
print(beta_duga)
##          [,1]
##    23.0544545
## X1  0.7372330
## X2 -0.0343275

Perbandingan dengan Fungsi lm()

model <- lm(Nilai_UAS ~ Kehadiran + IQ, data = data)
summary(model)
## 
## Call:
## lm(formula = Nilai_UAS ~ Kehadiran + IQ, 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    
## Kehadiran    0.73723    0.10918   6.752 0.000264 ***
## IQ          -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 Perbandingan:

Nilai beta duga yang diperoleh secara manual sama dengan hasil dari fungsi lm(), sehingga dapat disimpulkan bahwa perhitungan yang dilakukan sudah benar.

Persamaan Regresi

b <- coef(model)
cat(sprintf("Ŷ = %.3f + %.3f·Kehadiran %+.3f·IQ\n", b[1], b[2], b[3]))
## Ŷ = 23.054 + 0.737·Kehadiran -0.034·IQ

Interpretasi:

Uji F (Uji Simultan)

anova(model)
## Analysis of Variance Table
## 
## Response: Nilai_UAS
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## Kehadiran  1 899.43  899.43 47.6218 0.0002312 ***
## IQ         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

Interpretasi:

Dari hasil uji F diperoleh p-value = 0.0007523 < 0.05, artinya variabel kehadiran dan IQ secara simultan berpengaruh signifikan terhadap nilai UAS. Jadi, model regresi yang dibuat sudah valid dan dapat digunakan untuk menjelaskan hubungan antara variabel.

Uji T (Uji Parsial)

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

Interpretasi:

Dengan demikian, dapat disimpulkan bahwa hanya variabel kehadiran yang berpengaruh signifikan terhadap nilai UAS.

Koefisien Determinan

R2     <- summary(model)$r.squared
R2
## [1] 0.8719029
R2_adj <- summary(model)$adj.r.squared
R2_adj
## [1] 0.8353038

Interpretasi:

Dari hasil analisis diperoleh nilai R² = 0.8719 (87.19%), yang berarti sekitar 87.19% variasi nilai UAS dapat dijelaskan oleh variabel kehadiran dan IQ secara bersama-sama dalam model. Sisanya sebesar 12.81% dipengaruhi oleh faktor lain yang tidak dimasukkan dalam model, seperti cara belajar, motivasi, atau lingkungan belajar.

Sementara itu, nilai Adjusted R² = 0.8353 menunjukkan bahwa meskipun telah mempertimbangkan jumlah variabel prediktor yang digunakan, model tetap mampu menjelaskan sebagian besar variasi nilai UAS dengan baik.

Uji Asumsi

## Normalitas
shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.95125, p-value = 0.6833
qqnorm(residuals(model))
qqline(residuals(model))

Interpretasi:

Hasil uji Shapiro-Wilk menunjukkan p-value = 0.6833 > 0.05, sehingga residual berdistribusi normal. Hal ini didukung oleh Q-Q Plot yang memperlihatkan titik-titik mengikuti garis diagonal. Dengan terpenuhinya asumsi normalitas, model regresi yang digunakan telah memenuhi syarat dan dapat diinterpretasikan secara valid.

## Heteroskedastisitas

# Hipotesis:
# H₀: Tidak terjadi heteroskedastisitas (varians residual konstan)
# H₁: Terjadi heteroskedastisitas (varians residual tidak konstan)

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
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 5.905, df = 2, p-value = 0.05221

Interpretasi: Berdasarkan uji Breusch-Pagan diperoleh nilai p-value = 0.05221 > 0.05, maka tidak cukup bukti untuk menolak H₀. Artinya, tidak terjadi heteroskedastisitas atau dengan kata lain asumsi homoskedastisitas terpenuhi.

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

Interpretasi:

Dari hasil yang diperoleh, nilai VIF untuk kehadiran dan IQ sama-sama sekitar 1.055. Nilai ini masih sangat kecil dan mendekati 1. Artinya, tidak ada hubungan yang kuat antara variabel kehadiran dan IQ. Jadi, keduanya tidak saling mempengaruhi secara berlebihan dalam model. Dengan begitu, model regresi ini tidak ada multikolinearitas dan masih aman untuk digunakan.

## Autokorelasi
library(lmtest)
dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 2.594, p-value = 0.8013
## alternative hypothesis: true autocorrelation is greater than 0

Interpretasi:

Dari hasil diperoleh nilai p-value = 0.8013 > 0.05 Artinya tidak terdapat autokorelasi pada residual. Kesalahan (error) antar data tidak saling berkaitan, sehingga model regresi sudah memenuhi asumsi ini.

Kesimpulan

Berdasarkan hasil analisis yang telah dilakukan, dapat disimpulkan bahwa model regresi yang digunakan sudah baik dan memenuhi seluruh asumsi klasik (normalitas, heteroskedastisitas, multikolinearitas, dan autokorelasi). Secara simultan, variabel kehadiran dan IQ berpengaruh signifikan terhadap nilai UAS (p-value = 0.00075). Namun secara parsial, hanya kehadiran yang berpengaruh signifikan (p-value = 0.00026), sedangkan IQ tidak (p-value = 0.8807).

Model ini mampu menjelaskan sekitar 87.19% variasi nilai UAS (R² = 0.8719), sehingga dapat dikatakan cukup baik. Oleh karena itu, kehadiran merupakan faktor yang paling dominan dan signifikan dalam mempengaruhi nilai UAS, sedangkan IQ belum terbukti berpengaruh secara signifikan.