Tugas 2 Pengantar Model Linier

Input data dan membuat data frame

(data<- data.frame(
  nilai_UAS = c(65,70,75,80,85,78,72,90,88,95),
  Jam_Belajar_Perminggu = c(2,3,4,5,6,5,3,7,6,8),
  Tingkat_Kehadiran = c(60,65,70,75,80,72,68,85,83,90)
))
##    nilai_UAS Jam_Belajar_Perminggu Tingkat_Kehadiran
## 1         65                     2                60
## 2         70                     3                65
## 3         75                     4                70
## 4         80                     5                75
## 5         85                     6                80
## 6         78                     5                72
## 7         72                     3                68
## 8         90                     7                85
## 9         88                     6                83
## 10        95                     8                90

1. Estimasi Model

Ambil variabel dari data

Y  <- data$nilai_UAS
X1 <- data$Jam_Belajar_Perminggu
X2 <- data$Tingkat_Kehadiran

Membuat Matriks X (menambahkan kolom intersep/1)

X <- cbind(1, X1, X2)
n <- nrow(X)    #JUMLAH OBSERVASU (baris data)
k <- ncol(X)-1  ##JUMLAH VARIABEL BEBAS

Estimasi OLS

XtX <- t (X) %*% X
XtY <- t (X) %*% Y
(b <- solve (XtX) %*% XtY)
##          [,1]
##    16.1360113
## X1  1.1698379
## X2  0.7744891
model <- lm(Y ~ X1 + X2, data = data)
coef(model) # hasil sama dengan fungsi lm
## (Intercept)          X1          X2 
##  16.1360113   1.1698379   0.7744891

Keterangan:

  • t() : transpose,
  • %*% : perkalian matriks,
  • solve() : invers.

Rumus OLS: \[ \beta = (X^T X)^{-1} X^T Y \]

Interpretasi:

Berdasarkan hasil estimasi parameter menggunakan metode Ordinary Least Squares (OLS), diperoleh model regresi yang sudah dibulatkan hasilnya yaitu sebagai berikut:

\[ Y = 16.14 + 1.17X_1 + 0.77X_2 \]

dengan:

  • \(Y\) = nilai UAS
  • \(X_1\) = Jam Belajar (jam/minggu)
  • \(X_2\) = Tingkat Kehadiran (%)

Interpretasi dari model regresi tersebut adalah sebagai berikut:

  1. Intersep (\(\beta_0\) = 16.14): Nilai intersep sebesar 16.14 menunjukkan bahwa ketika variabel Jam Belajar dan Tingkat Kehadiran bernilai nol, maka nilai UAS diprediksi sebesar 16.14. Namun, nilai ini kurang memiliki makna praktis karena kondisi tersebut tidak realistis dalam konteks data.

  2. Koefisien Jam Belajar (\(\beta_1\) = 1.17): Koefisien sebesar 1.17 menunjukkan bahwa setiap kenaikan 1 satujan jam/minggu, akan meningkatkan nilai UAS sebesar 1.17, dengan asumsi variabel tingkat kehadiran tetap. Hal ini menunjukkan bahwa jam belajar memiliki pengaruh positif terhadap nilai UAS.

  3. Koefisien Tingkat Kehadiran (\(\beta_2\) = 0.77): Koefisien sebesar 0.77 menunjukkan bahwa setiap kenaikan 1% tingkat kehadiran akan meningkatkan nilai UAS sebesar 0.77, dengan asumsi variabel Jam Belajar tetap. Hal ini menunjukkan bahwa tingkat kehadiran juga memiliki pengaruh positif terhadap nilai UAS.

Secara keseluruhan, variabel Jam Belajar dan Tingkat Kehadiran berpengaruh positif terhadap nilai UAS. Selain itu, variabel Jam Belajar memiliki pengaruh yang lebih besar dibandingkan Tingkat Kehadiran dalam meningkatkan nilai UAS.

2. Uji F dan Uji t Manual

a. Fungsi Uji t (Parsial)

uji_t_manual <- function(model, alpha = 0.05) {
  beta  <- coef(model)
  se <- summary(model)$coefficients[,2]
  t_hit <- b / se
  
  n <- length(model$fitted.values)
  k <- length(b) - 1
  
  t_tabel <- qt(1 - alpha/2, df = n - k - 1)
  
  keputusan <- abs(t_hit) > t_tabel
  
  hasil <- data.frame(
    Koefisien = b,
    Std_Error = se,
    t_hitung = t_hit,
    t_tabel = t_tabel,
    Keputusan = keputusan
  )
  
  return(hasil)

  }
uji_t_manual(model)
##     Koefisien  Std_Error  t_hitung  t_tabel Keputusan
##    16.1360113 2.83677490  5.688154 2.364624      TRUE
## X1  1.1698379 0.27843551  4.201468 2.364624      TRUE
## X2  0.7744891 0.05571759 13.900261 2.364624      TRUE

Interpretasi:

Rumus statistik uji t untuk masing-masing parameter adalah:

\[ t = \frac{\beta_i}{SE(\beta_i)} \]

dengan:

  • \(\beta_i\) = koefisien regresi ke-i
  • \(SE(\beta_i)\) = standar error koefisien ke-i

Kriteria pengujian:

  • Tolak \(H_0\) jika \(|t_{hitung}| > t_{tabel}\)
  • Terima \(H_0\) jika \(|t_{hitung}| \leq t_{tabel}\)

Berdasarkan hasil perhitungan, diperoleh nilai \(t_{hitung}\) untuk masing-masing parameter sebagai berikut:

  • Intersep = 5.69
  • Jam Belajar (\(X_1\)) = 4.20
  • Tingkat Kehadiran (\(X_2\)) = 13.90

Dengan,

  • taraf signifikansi : \(\alpha = 0.05\), dan
  • derajat bebas : \(df = 7\),

Maka diperoleh nilai \(t_{tabel} = 2.364\).

Karena hasil dari seluruh nilai \(|t_{hitung}| > t_{tabel}\), maka dapat disimpulkan bahwa:

  • Variabel jam belajar berpengaruh signifikan terhadap nilai UAS, dan
  • Variabel tingkat kehadiran berpengaruh signifikan terhadap nilai UAS

b. Fungsi Uji F (Simultan)

uji_f_manual <- function(model, alpha = 0.05) {
  R2 <- summary(model)$r.squared
  
  n <- length(model$fitted.values)
  k <- length(coef(model)) - 1
  
  F_hit <- (R2 / k) / ((1 - R2) / (n - k - 1))
  F_tabel <- qf(1 - alpha, df1 = k, df2 = n - k - 1)
  
  keputusan <- F_hit > F_tabel
  
  hasil <- data.frame(
    F_hitung = F_hit,
    F_tabel = F_tabel,
    Keputusan = keputusan
  )
  
  return(hasil)
}

uji_f_manual(model)
##   F_hitung  F_tabel Keputusan
## 1 5172.116 4.737414      TRUE

Intepretasi:

Rumus statistik uji F adalah:

\[ F = \frac{R^2 / k}{(1 - R^2) / (n - k - 1)} \]

dengan:

  • \(R^2\) = koefisien determinasi
  • \(k\) = jumlah variabel independen
  • \(n\) = jumlah observasi

Kriteria pengujian:

  • Tolak \(H_0\) jika \(F_{hitung} > F_{tabel}\)
  • Terima \(H_0\) jika \(F_{hitung} \leq F_{tabel}\)

Diperoleh nilai:

  • \(F_{hitung} = 5172.12\), dan
  • \(F_{tabel} = 4.737\),
  • taraf signifikansi :\(\alpha = 0.05\).

Karena \(F_{hitung} > F_{tabel}\), maka dapat disimpulkan bahwa model regresi secara keseluruhan signifikan.Hal ini berarti bahwa variabel jam beljar dan tingkat kehadiran secara bersama-sama berpengaruh terhadap nilai UAS.

3. Hitung Manual R² dan Adjusted R²

r2_manual <- function(model) {
  # Ambil data
  Y <- model$model[[1]]
  Y_pred <- model$fitted.values
  
  n <- length(Y)
  k <- length(coef(model)) - 1
  
  # Rata-rata
  Y_bar <- mean(Y)
  
  # Komponen
  SST <- sum((Y - Y_bar)^2)
  SSE <- sum((Y - Y_pred)^2)
  SSR <- sum((Y_pred - Y_bar)^2)
  
  # R2
  R2 <- 1 - (SSE / SST)
  
  # Adjusted R2
  Adj_R2 <- 1 - ((SSE/(n - k - 1)) / (SST/(n - 1)))
  
  hasil <- data.frame(
    SST = SST,
    SSE = SSE,
    SSR = SSR,
    R2 = R2,
    Adjusted_R2 = Adj_R2
  )
  
  print(hasil)
}

r2_manual(model)
##     SST       SSE      SSR        R2 Adjusted_R2
## 1 831.6 0.5623679 831.0376 0.9993238   0.9991305

Interpretasi

Koefisien determinasi (\(R^2\)) dihitung dengan rumus:

\[ R^2 = \frac{SSR}{SST} = 1 - \frac{SSE}{SST} \]

dengan:

  • \(SST = \sum (Y_i - \bar{Y})^2\) (Total Sum of Squares)
  • \(SSE = \sum (Y_i - \hat{Y}_i)^2\) (Error Sum of Squares)
  • \(SSR = \sum (\hat{Y}_i - \bar{Y})^2\) (Regression Sum of Squares)

Sedangkan Adjusted \(R^2\) dihitung dengan rumus:

\[ Adjusted\ R^2 = 1 - \frac{SSE/(n - k - 1)}{SST/(n - 1)} \]

dengan:

  • \(n\) = jumlah observasi
  • \(k\) = jumlah variabel independen

Hasil Perhitungan

Berdasarkan hasil perhitungan diperoleh:

  • \(SST = 831.6\)
  • \(SSE = 0.5624\)
  • \(SSR = 831.0376\)

Sehingga:

\[ R^2 = 0.9993 \]

\[ Adjusted\ R^2 = 0.9991 \]

  1. Nilai \(R^2\) sebesar 0.9993 menunjukkan bahwa sebesar 99.93% variasi nilai UAS dapat dijelaskan oleh variabel jam belajar dan tingkat kehadiran.

  2. Sisanya sebesar 0.07% dijelaskan oleh variabel lain di luar model yang tidak dimasukkan dalam penelitian.

  3. Nilai Adjusted \(R^2\) sebesar 0.9991 menunjukkan bahwa setelah disesuaikan dengan jumlah variabel independen dan jumlah observasi, model masih mampu menjelaskan sebesar 99.91% variasi nilai UAS.

  4. Karena nilai \(R^2\) dan Adjusted \(R^2\) sangat mendekati 1, maka model regresi memiliki kemampuan yang sangat baik dalam menjelaskan variasi nilai UAS.

  5. Hal ini juga menunjukkan bahwa model yang dibangun memiliki tingkat kecocokan (goodness of fit) yang sangat tinggi terhadap data.

4. Perbandingan dengan Fungsi lm()

Untuk memverifikasi hasil perhitungan manual, digunakan fungsi lm() pada R sebagai berikut:

model <- lm(nilai_UAS ~ Jam_Belajar_Perminggu + Tingkat_Kehadiran, data = data)

summary(model)
## 
## Call:
## lm(formula = nilai_UAS ~ Jam_Belajar_Perminggu + Tingkat_Kehadiran, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31078 -0.14588 -0.05074  0.04440  0.56237 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           16.13601    2.83677   5.688 0.000744 ***
## Jam_Belajar_Perminggu  1.16984    0.27844   4.201 0.004028 ** 
## Tingkat_Kehadiran      0.77449    0.05572  13.900 2.36e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2834 on 7 degrees of freedom
## Multiple R-squared:  0.9993, Adjusted R-squared:  0.9991 
## F-statistic:  5172 on 2 and 7 DF,  p-value: 8.042e-12
coef(model)
##           (Intercept) Jam_Belajar_Perminggu     Tingkat_Kehadiran 
##            16.1360113             1.1698379             0.7744891

Hasil Uji t dan Uji F

summary(model)$coefficients[,3]  # t-hitung
##           (Intercept) Jam_Belajar_Perminggu     Tingkat_Kehadiran 
##              5.688154              4.201468             13.900261
summary(model)$fstatistic[1]     # F-hitung
##    value 
## 5172.116

Koefisien Determinasi

summary(model)$r.squared         # R²
## [1] 0.9993238
summary(model)$adj.r.squared     # Adjusted R²
## [1] 0.9991305

Penjelasan:

Berdasarkan hasil yang diperoleh dari fungsi lm(), diketahui bahwa:

  1. Nilai koefisien regresi yang dihasilkan sama dengan hasil perhitungan manual, yaitu:

    • Intersep = 16.14
    • Jam Belajar (\(X_1\)) = 1.17
    • Tingkat Kehadiran (\(X_2\)) = 0.77
  2. Nilai \(t_{hitung}\) untuk masing-masing variabel juga sama dengan hasil perhitungan manual, sehingga dapat disimpulkan bahwa semua variabel independen berpengaruh signifikan terhadap variabel dependen.

  3. Nilai \(F_{hitung}\) yang diperoleh sangat besar dan lebih besar dari \(F_{tabel}\), sehingga model regresi secara keseluruhan signifikan.

  4. Nilai \(R^2\) dan Adjusted \(R^2\) yang mendekati 1 menunjukkan bahwa model memiliki kemampuan yang sangat baik dalam menjelaskan variasi nilai UAS.

Dengan demikian, hasil perhitungan manual yang dilakukan sebelumnya telah sesuai dengan hasil yang diperoleh menggunakan fungsi lm() pada R.

5. Prediksi Nilai Ujian

Q: Prediksi nilai UAS jika jumlah jam belajar 1 jam/minggu, dengan kehadiran 100% adalah?

A: Pada prediksi nilai UAS ini, saya lakukan menggunakan dua pendekatan, yaitu menggunakan model langsung dari hasil estimasi R dan menggunakan model yang telah dibulatkan.

1. Menggunakan Model dari Hasil Estimasi R

prediksi <- function(model, X1, X2) {
  beta <- coef(model)
  Y_pred <- beta[1] + beta[2]*X1 + beta[3]*X2
  return(Y_pred)
}

prediksi(model, 1, 100)
## (Intercept) 
##    94.75476

Fungsi prediksi() menggunakan koefisien hasil estimasi dari model regresi yang diperoleh melalui fungsi lm(). Nilai koefisien diambil menggunakan coef(model), kemudian digunakan untuk menghitung nilai prediksi berdasarkan persamaan regresi.

Pendekatan ini menghasilkan prediksi yang lebih akurat karena menggunakan nilai koefisien asli tanpa pembulatan.

2. Menggunakan Model yang Telah Dibulatkan

prediksi_langsung <- function(x1, x2) { 16.14 + 1.17 * x1 + 0.77 * x2 }

prediksi_langsung(1, 100)
## [1] 94.31

Fungsi prediksi_langsung() menggunakan model regresi yang telah dibulatkan hingga dua angka desimal. Perhitungan dilakukan secara langsung dengan mensubstitusikan nilai variabel ke dalam persamaan regresi.

Pendekatan ini lebih sederhana dan mudah digunakan, namun hasilnya sedikit kurang presisi dibandingkan dengan menggunakan koefisien asli dari model.

Interpretasi:

Untuk melakukan prediksi nilai UAS, digunakan model regresi yang telah diperoleh, yaitu:

\[ Y = 16.14 + 1.17X_1 + 0.77X_2 \]

Diketahui:

  • \(X_1 = 1\) (jumlah jam belajar perminggu)
  • \(X_2 = 100\) (tingkat kehadiran 100%)

Maka prediksi nilai UAS adalah:

\[ Y = 16.14 + 1.17(1) + 0.77(100) \]

\[ Y = 16.14 + 1.17 + 77 \]

\[ Y = 94.31 \]

Sehingga, nilai UAS yang diprediksi adalah sebesar 94.31.

Kesimpulan:

Kedua metode menghasilkan nilai prediksi yang hampir sama. Namun, penggunaan model dari hasil estimasi R lebih disarankan karena memberikan hasil yang lebih akurat, sedangkan model yang telah dibulatkan lebih praktis untuk perhitungan manual secara tertulis.

Terimakasih. <3