Tugas Mandiri 2 Pengantar Model Linier

Angga Fathan Rofiqy

25 September, 2023

Rpubs : https://rpubs.com/ZenR_Prog/PML-TM2

1 No 1.

1.0.1 Input data

n <- 10 #10 Rumah tangga
y <- c(23,7,15,17,23,22,10,14,20,19)
#Matriks X
X <- cbind(X0 = rep(1, n), 
           X1 = c(10,2,4,6,8,7,4,6,7,6), 
           X2 = c(7,3,2,4,6,5,3,3,4,3) )

Diketahui banyaknya peubah penjelas yakni X1 dan X2, sehingga k=2.

1.1 a. Tunjukan bahwa model tersebut merupakan model penuh.

Model linier disebut model penuh apabila \(r(\mathbf{X}) = k+1\), dalam kasus ini \(r(\mathbf{X}) = 2+1\), sehingga model dikatakan model penuh apabila rank nya bernilai \(3\).

1.1.1 Lihat rank dari matriks X:

if (qr(X)$rank == ncol(X)){ 
cat("Matriks X Model Penuh, dengan rank :", qr(X)$rank)
} else {
cat("Matriks X BUKAN Model Penuh, dengan rank :", qr(X)$rank) 
}
## Matriks X Model Penuh, dengan rank : 3

Terlihat bahwa Model linier tersebut memiliki rank matriks \(\mathbf{X}\) sebesar \(3\) atau sebesar \(k+1\) sehingga memiliki nilai determinan dari matriks \(\mathbf{X}^t\mathbf{X} \ne 0\). Jadi, terbukti bahwa model tersebut merupakan model penuh.

1.2 b. Dugalah parameter model tersebut.

1.2.1 Mencari penduga tak bias bagi \(\beta\)

E <- rnorm(n,0,1) #pembangkitan nilai galat
b <- solve(t(X) %*% X) %*% t(X) %*% y  #mencari matriks beta = (X'X)^-1*X'y
b
##          [,1]
## X0  3.9187279
## X1  2.4911661
## X2 -0.4664311

Dari nilai parameter \(\beta\) diatas, didapatkan model :\[\hat{Y_{i}}= 3.9187279+2.4911661X_{1}-0.4664311X_{2}+ε_i\]

1.3 c. Hitung penduga tak bias bagi ragam

1.3.1 Mencari penduga tak bias bagi ragam

Dengan formula :

\[ s^2 = \frac{(y-\mathbf{X}^t\mathbf{b})^t (y-\mathbf{X}^t\mathbf{b})} {n-p} \]

p <- nrow(b) #banyak beta pada model
s2 <- (t(y-(X %*% b)) %*%( y-(X %*% b)) ) / (n-p) #mencari nilai s^2
s2
##          [,1]
## [1,] 6.355376

Diperoleh nilai penduga tak bias bagi ragam : \(s^2 = 6.355376\).

2 No 2.

2.0.1 Input data

n <- 30 #30 Papan

y  <- c(2622, 22148, 26751, 18036, 96305, 104170, 72594, 49512, 32207, 48218,
        70453, 47661, 38138, 54045, 14814, 17502, 14007, 19443, 7573, 14191, 
        9714, 8076, 5304, 10728, 43243, 25319, 28028, 41792, 49499, 25312)

#Matriks X
X <- cbind(X0 = rep(1, n), 
           X1 = c(15.0, 14.5, 14.8, 13.6, 25.6, 23.4, 24.4, 23.3, 19.5, 21.2, 
                  22.8, 21.7, 19.8, 21.3, 9.5, 8.4, 9.8, 11.0, 8.3, 9.9, 
                  8.6, 6.4, 7.0, 8.2, 17.4, 15.0, 15.2, 16.4, 16.7, 15.4) )

#Matriks X'X
tX.X <- matrix(c(30, 464.1, 
                 464.1, 8166.29), nrow = 2)

#Matriks X'X
tX.X.inv <- matrix(c(0.2758892, -0.0156791, 
                     -0.0156791, 0.001013517), nrow = 2)

#Matriks X'y
tX.y <- matrix(c(1017405, 19589339), ncol = 1)

#Penduga ragam s^2
s2 <- 165242295.59

2.1 a. Dugalah \(\beta\)

b <- solve(t(X) %*% X) %*% t(X) %*% y #mencari (X'X)^-1*X'y
b
##          [,1]
## X0 -26452.394
## X1   3902.126

Dari nilai parameter \(\beta\) diatas, didapatkan model :\[\hat{Y_{i}}= -26452.394 + 3902.126 X_{1} + ε_i\]

2.2 b. Tentukan penduga titik untuk pembacaan kekakuan (stiffness) rata-rata ketika kepadatan (density) papan partikel adalah \(10 {lb}/{ft^3}\) . Tentukan selang kepercayaan \(95\%\) pada pembacaan rata-rata ini

Dengan formula :

\[ \mathbf{x_*}^t \mathbf{b} \pm t_{\left(n-p;\frac{\alpha}{2} \right)} s \sqrt{\mathbf{x_*}^t $(\mathbf{X}^t\mathbf{X})^-1 \mathbf{x_*}} \]

2.2.1 Penduga titik rata-rata ketika x = 10

xbaru <- c(1,10)
xb <- t(xbaru) %*% b; xb
##          [,1]
## [1,] 12568.87

Ini sama saja dengan membuat model linear regresi dan substitusi nilai baru pada matriks \(\mathbf{x_*}\).

2.2.2 Simpangan baku

\[ s = \sqrt{s^2} = \sqrt{\frac{(y-\mathbf{X}^t\mathbf{b})^t (y-\mathbf{X}^t\mathbf{b})}{n-p}} \]

#Ragam 
p <- nrow(b) #banyak beta pada model
s <- sqrt( (t(y-(X %*% b)) %*%( y-(X %*% b)) ) / (n-p) )
cat("Simpangan baku (s) :", s)
## Simpangan baku (s) : 12854.66

2.2.3 Matriks \((\mathbf{X}^t\mathbf{X})^-1\)

tX.X.inv
##            [,1]         [,2]
## [1,]  0.2758892 -0.015679100
## [2,] -0.0156791  0.001013517

2.2.4 Nilai \(t_{\left(n-p;\frac{\alpha}{2} \right)}\)

Dengan selang Kepercayaan \(95\%\) maka \(\alpha = 5\%\).

alpha <- 5/100
t <- qt(1 - alpha/2, n-p)
cat('t :', t)
## t : 2.048407

2.2.5 Selang kepercayaan \(95\%\) bagi rata-rata

cat(" Selang kepercayaan 95% bagi rata-rata\n",
    "Batas Bawah :", xb - t *s *sqrt(t(xbaru) %*% tX.X.inv %*% xbaru), "\n",
    "Batas Atas  :", xb + t *s *sqrt(t(xbaru)%*% tX.X.inv %*% xbaru)
    )
##  Selang kepercayaan 95% bagi rata-rata
##  Batas Bawah : 5925.224 
##  Batas Atas  : 19212.51

\[ \mathbf{x_*}^t \mathbf{b} \pm t_{\left(n-p;\frac{\alpha}{2} \right)} s \sqrt{\mathbf{x_*}^t $(\mathbf{X}^t\mathbf{X})^-1 \mathbf{x_*}}=[5925.224; 19212.51] \]

2.3 c. Tentukan penduga titik untuk pembacaan kekakuan (stiffness) rata-rata ketika kepadatan (density) papan partikel adalah \(10 {lb}/{ft^3}\) . Tentukan selang prediksi \(95\%\) kekakuan untuk papan seperti itu

Dengan Formula : \[ \mathbf{x_*}^t \mathbf{b} \pm t_{\left(n-p;\frac{\alpha}{2} \right)} s \sqrt{ 1 + \mathbf{x_*}^t $(\mathbf{X}^t\mathbf{X})^-1 \mathbf{x_*}} \]

Sama seperti bagian b, hanya beda di formulanya saja.

2.3.1 Selang kepercayaan \(95\%\) bagi satu amatan

cat(" Selang kepercayaan 95% bagi satu amatan\n",
    "Batas Bawah :", xb - t *s *sqrt(1 + t(xbaru) %*% tX.X.inv %*% xbaru), "\n",
    "Batas Atas  :", xb + t *s *sqrt(1 + t(xbaru )%*% tX.X.inv %*% xbaru)
    )
##  Selang kepercayaan 95% bagi satu amatan
##  Batas Bawah : -14587.9 
##  Batas Atas  : 39725.64

\[ \mathbf{x_*}^t \mathbf{b} \pm t_{\left(n-p;\frac{\alpha}{2} \right)} s \sqrt{ 1 + \mathbf{x_*}^t $(\mathbf{X}^t\mathbf{X})^-1 \mathbf{x_*}} =[-14587.9; 39725.63] \]

2.4 d. Tentukan selang kepercayaan 95% pada kemiringan garis regresi

Dengan formula :

\[ \beta_1 \pm t_{\left(n-p;\frac{\alpha}{2} \right)} \sqrt{C_{11}} \]

2.4.1 Selang kepercayaan 95% bagi kemiringan garis regresi (\(\beta_1\))

cat(" Selang kepercayaan 95% bagi kemiringan garis regresi (b1)\n",
    "Batas Bawah :", b[2] - t *s *sqrt(tX.X.inv[2,2]), "\n",
    "Batas Atas  :", b[2] + t *s *sqrt(tX.X.inv[2,2])
    )
##  Selang kepercayaan 95% bagi kemiringan garis regresi (b1)
##  Batas Bawah : 3063.84 
##  Batas Atas  : 4740.413

\[ \beta_1 \pm t_{\left(n-p;\frac{\alpha}{2} \right)} \sqrt{C_{11}} =[3063.84 ; 4740.413] \]

2.5 e. Tentukan daerah kepercayaan gabungan \(95\%\) pada pasangan parameter ( \(\beta_0 , \beta_1\)).

\[ P[(b-\beta)^t (X^t X) (b-\beta) \le s^2 p F_{p, (n-p)}]= 1-\alpha \]

cat("Matriks b :\n"); b
## Matriks b :
##          [,1]
## X0 -26452.394
## X1   3902.126
cat("\n\nMatriks X'X :\n"); tX.X
## 
## 
## Matriks X'X :
##       [,1]    [,2]
## [1,]  30.0  464.10
## [2,] 464.1 8166.29
cat("\n\ns^2      :", s2, 
    "\np        :", p,
    "\nF(p,n-p) :", qf(1 - alpha, p, n-p))
## 
## 
## s^2      : 165242296 
## p        : 2 
## F(p,n-p) : 3.340386

\[\left( \begin{bmatrix} -26452.394 \\ 3902.126 \end{bmatrix} -\begin{bmatrix} \beta_0 \\ \beta_1\end{bmatrix}\right)^t \left(\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix}\right)\left(\begin{bmatrix} -26452.394 \\ 3902.126 \end{bmatrix} -\begin{bmatrix} \beta_0 \\ \beta_1\end{bmatrix}\right) \le 165242296 \times 2 \times 3.340386 \]

cat("\ns^2 * p * F(p,n-p), :", s2 *p *qf(1 - alpha, p, n-p))
## 
## s^2 * p * F(p,n-p), : 1103945956

Perhitugan ini akan mengasilkan :

\[ c_1\beta^2_0 \pm c_2\beta^2_1 \pm c_3 \beta_0 \beta_1 \pm c_4\beta_0 \pm c_5\beta_1 \pm c_6 \le 1103945956 \]

Dengan \(c\) adalah konstanta.

Agar memudahkan perhitungan di R, maka pisah menjadi :
\[\left( \begin{bmatrix} -26452.394 & 3902.126 \end{bmatrix}\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix} \left( \begin{bmatrix} -26452.394 \\ 3902.126 \end{bmatrix}- \begin{bmatrix} \beta_0 \\ \beta_1\end{bmatrix} \right) \right)\]

\[ - \left(\begin{bmatrix} \beta_0 & \beta_1 \end{bmatrix}\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix} \left( \begin{bmatrix} -26452.394 \\ 3902.126 \end{bmatrix}- \begin{bmatrix} \beta_0 \\ \beta_1\end{bmatrix} \right) \right)\le 1103945956 \]

Lalu pisah lagi menjadi :

\[\left( \begin{bmatrix} -26452.394 & 3902.126 \end{bmatrix}\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix} \begin{bmatrix} -26452.394 \\ 3902.126 \end{bmatrix} \right)\]

\[-\left( \begin{bmatrix} -26452.394 & 3902.126 \end{bmatrix}\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \end{bmatrix} \right)\]

\[-\left( \begin{bmatrix} \beta_0 & \beta_1 \end{bmatrix}\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix} \begin{bmatrix} -26452.394 \\ 3902.126 \end{bmatrix} \right) \]

\[+\left( \begin{bmatrix} \beta_0 & \beta_1 \end{bmatrix}\begin{bmatrix} 30 & 464.10 \\ 464.1 & 8166.29\end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \end{bmatrix} \right) \]

\[\le 1103945956\] Dapat dilihat bahwa baris pertama akan mengasilkan \(c_6\), baris kedua akan dan ketiga akan menghasilkan \(c_4\) & \(c_5\), terakhir baris keempat akan mengasilkan \(c_1\), \(c_2\), & \(c_3\).

cat(  "c6      :", t(b) %*% tX.X %*% b, 
    "\nc4 & c5 :", -(t(b) %*% tX.X) -t((tX.X %*% b)),
    "\nc1      :", tX.X[1],
    "\nc2      :", tX.X[4],
    "\nc3      :", tX.X[2] + tX.X[3] )
## c6      : 49527277168 
## c4 & c5 : -2034810 -39178678 
## c1      : 30 
## c2      : 8166.29 
## c3      : 928.2

\[ c_1\beta^2_0 \pm c_2\beta^2_1 \pm c_3 \beta_0 \beta_1 \pm c_4\beta_0 \pm c_5\beta_1 \pm c_6 \le 1103945956 \]

Sehingga diperoleh :

\[ 30\beta^2_0 + 8166.29\beta^2_1 + 928.2 \beta_0 \beta_1 -2034810\beta_0 -39178678\beta_1 + 49527277168 \le 1103945956 \]

49527277168 - 1103945956
## [1] 48423331212

Hasil Akhirnya adalah :

\[ 30\beta^2_0 + 8166.29\beta^2_1 + 928.2 \beta_0 \beta_1 -2034810\beta_0 -39178678\beta_1 + 48423331212 \le 0 \]

# Membuat fungsi dari ketidaksetaraan
f <- function(x, y) return(30 * x^2 + 8166.29 * y^2 + 
                           928.2 * x * y - 2034810 * x - 
                           39178678 * y + 48423331212)

# Membuat grid untuk x dan y
x <- seq(-44000, -9000, length.out = 500)  # Rentang x dengan 500 titik
y <- seq(2800, 5000, length.out = 500)    # Rentang y dengan 500 titik
z <- outer(x, y, Vectorize(f))  # Menghitung nilai ketidaksetaraan

# Membuat plot kontur
contour(x, y, z, levels = 0, drawlabels = FALSE, xlim = c(-44000, -9000), 
        ylim = c(2800, 5000), col = 'purple3')

Atau dapat seperti ini, namun tidak terlihat kontinu karena butuh banyak data.

# Memuat pustaka ggplot2
library(ggplot2)

# Membuat data frame dengan berbagai nilai x dan y
x <- seq(-44000, -9000, by = 100)  # Rentang x
y <- seq(2800, 5000, by = 100)    # Rentang y
data <- expand.grid(x = x, y = y)

# Menghitung nilai di sebelah kiri ketidaksetaraan
data$inequality_value <- 30 * data$x^2 + 8166.29 * data$y^2 + 928.2 * data$x * data$y - 2034810 * data$x - 39178678 * data$y + 48423331212

# Membuat plot daerah yang memenuhi ketidaksetaraan
ggplot(data, aes(x = x, y = y)) +
  geom_tile(aes(fill = inequality_value <= 0), color = "white") +
  scale_fill_manual(values = c("TRUE" = "purple3", "FALSE" = "white")) +
  theme_minimal(base_size = 25) +
  labs(x = expression(beta[0]), y = expression(beta[1])) +
  theme(legend.position = "none")