library(lmtest) 
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(MASS) 
library(car)
## Loading required package: carData
library(pastecs)
library(pracma)
## 
## Attaching package: 'pracma'
## The following object is masked from 'package:car':
## 
##     logit
library(Matrix)
## 
## Attaching package: 'Matrix'
## The following objects are masked from 'package:pracma':
## 
##     expm, lu, tril, triu

Pengaturan lokasi file

dir_out   = "D:/Matkul/Regnon/data"   # folder output (All Knot, Mx, Y topi, residual)
path_data = "D:/Matkul/Regnon/data/Data regresi spline.txt"   # lokasi file data

if (!dir.exists(dir_out)) dir.create(dir_out, recursive = TRUE)

Memanggil data

if (!nzchar(path_data)) {
  if (interactive()) {
    path_data = file.choose()
  } else {
    stop("Isi 'path_data' pada chunk 'pengaturan' sebelum knit.")
  }
}
data = read.table(path_data, header = TRUE)
data = data[, c("Y", "X1", "X2", "X3", "X4")]
data
##        Y    X1    X2    X3    X4
## 1   4.52 67.88 13.00 14.86 72.04
## 2   4.97 71.02 12.89 14.38 51.19
## 3   5.70 61.98 13.58 18.56 73.59
## 4   5.45 68.96 12.78 29.61 43.00
## 5   5.08 67.40 13.31 14.89 74.71
## 6   6.22 69.04 12.55 55.70 71.41
## 7   3.49 76.22 12.50 10.46 67.09
## 8   9.00 62.90 14.13 15.59 80.01
## 9   8.26 65.16 14.70 75.04 30.11
## 10  9.46 69.24 12.90 31.21 80.02
## 11  3.71 74.28 12.60 20.67 67.03
## 12  3.91 75.81 12.08  8.67 47.87
## 13  3.38 71.78 12.39 10.74 65.98
## 14  7.55 64.14 12.33  8.54 25.74
## 15  3.52 70.38 11.56 19.95 65.77
## 16  7.30 60.75 11.79 28.13 67.17
## 17  4.50 75.57 12.02 14.71 36.88
## 18  4.02 74.09 12.04 10.28 65.69
## 19  3.39 77.53 11.57  6.56 64.76
## 20  2.70 73.93 11.15 25.23 25.55
## 21  3.71 65.53 11.81  4.21 22.68
## 22  7.14 67.71 13.64 28.93 67.95
## 23 12.36 60.05 13.64 37.68 79.44
## 24  8.78 63.84 12.89 10.14 41.94
## 25  3.57 72.03 11.96 10.16 69.38
## 26  4.96 64.68 11.92 17.31 68.86
## 27  3.87 72.55 12.28 11.73 59.18
## 28  2.93 74.61 12.38  5.76 66.22
## 29  3.73 70.17 11.86  6.35 70.11
## 30  2.24 73.15 12.10  4.65 48.85
## 31  3.90 71.15 12.19  4.83 68.84
## 32  4.49 70.08 12.88  3.30 65.59
## 33  3.07 69.27 12.59 14.48 72.19
## 34  6.95 70.16 12.36 15.39 50.71
## 35  2.46 76.50 12.37  9.17 68.82
## 36  8.32 62.07 13.92 21.93 77.10
## 37  5.54 66.82 14.80  6.11 79.10
## 38  5.08 66.44 13.29 11.21 71.94
## 39  4.45 67.38 12.99 18.72 41.10
## 40  4.83 67.81 12.20  5.75 66.97
## 41  4.14 66.91 12.63 26.30 45.79
## 42  5.86 65.65 13.73 38.11 75.83
## 43  4.76 73.01 12.71 33.79 72.87
## 44  5.25 67.41 12.69 56.63 71.31
## 45  4.98 70.04 12.90 45.81 69.48
## 46  4.21 64.68 12.54 45.53 70.22
## 47  5.29 71.54 12.48 51.50 30.59
## 48  4.70 65.50 12.11 66.27 68.03
## 49  2.83 70.50 12.47 67.99 70.51
## 50  4.30 65.04 11.98 40.96 37.58
## 51  5.69 64.55 12.51 48.22 68.68
## 52  2.63 72.77 12.40 43.84 68.45
## 53  2.49 71.22 11.77 51.25 70.81
## 54  2.91 77.73 12.82 54.56 21.39
## 55  3.10 63.93 11.74 62.92 67.98
## 56  5.95 62.71 14.94 61.01 80.77

Statistika Deskriptif dan Deteksi Multikolinieritas

stat.desc(data)
##                        Y           X1           X2           X3           X4
## nbr.val       56.0000000 5.600000e+01  56.00000000   56.0000000   56.0000000
## nbr.null       0.0000000 0.000000e+00   0.00000000    0.0000000    0.0000000
## nbr.na         0.0000000 0.000000e+00   0.00000000    0.0000000    0.0000000
## min            2.2400000 6.005000e+01  11.15000000    3.3000000   21.3900000
## max           12.3600000 7.773000e+01  14.94000000   75.0400000   80.7700000
## range         10.1200000 1.768000e+01   3.79000000   71.7400000   59.3800000
## sum          277.6000000 3.863250e+03 708.36000000 1476.2800000 3422.8700000
## median         4.5100000 6.914000e+01  12.50500000   18.6400000   67.9650000
## mean           4.9571429 6.898661e+01  12.64928571   26.3621429   61.1226786
## SE.mean        0.2715868 6.008087e-01   0.10790865    2.6750203    2.2021767
## CI.mean.0.95   0.5442721 1.204048e+00   0.21625376    5.3608606    4.4132607
## var            4.1305262 2.021438e+01   0.65207948  400.7210935  271.5766018
## std.dev        2.0323696 4.496041e+00   0.80751438   20.0180192   16.4795814
## coef.var       0.4099881 6.517266e-02   0.06383873    0.7593472    0.2696148
model = lm(formula = Y ~ X1 + X2 + X3 + X4, data = data)
model
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data)
## 
## Coefficients:
## (Intercept)           X1           X2           X3           X4  
##   10.498612    -0.237422     0.919839    -0.008344    -0.009455
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1296 -0.9922 -0.1119  0.7639  4.6374 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 10.498612   5.796395   1.811  0.07600 .  
## X1          -0.237422   0.049782  -4.769 1.59e-05 ***
## X2           0.919839   0.278410   3.304  0.00175 ** 
## X3          -0.008344   0.010186  -0.819  0.41651    
## X4          -0.009455   0.012466  -0.758  0.45170    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.453 on 51 degrees of freedom
## Multiple R-squared:  0.526,  Adjusted R-squared:  0.4888 
## F-statistic: 14.15 on 4 and 51 DF,  p-value: 7.786e-08
vif(model)
##       X1       X2       X3       X4 
## 1.304895 1.316581 1.083064 1.099406

Scatterplot

label_x = c(X1 = "Tingkat Partisipasi Angkatan Kerja",
            X2 = "Harapan Lama Sekolah",
            X3 = "PDRB Atas Dasar Harga Berlaku",
            X4 = "Indeks Pembangunan Manusia")

for (v in names(label_x)) {
  plot(data[[v]], data$Y,
       main = paste0("Scatterplot Tingkat Pengangguran Terbuka dan\n", label_x[[v]]),
       xlab = paste0(label_x[[v]], " (", v, ")"),
       ylab = "Tingkat Pengangguran Terbuka (Y)",
       col  = "black")
  abline(lm(data$Y ~ data[[v]]), col = "darkred", lwd = 3)
}

Fungsi Regresi Spline

# Fungsi basis truncated: (x - knot)+ untuk tiap knot.
# knotvec berisi k_knot knot untuk X1, lalu k_knot knot untuk X2, dst.
basis_knot = function(data, knotvec, k_knot, para)
{
  sapply(seq_along(knotvec), function(j) {
    b = ceiling(j / k_knot)                       # variabel ke-b
    pmax(data[, b + para + 1] - knotvec[j], 0)    # 0 jika x < knot, selain itu x - knot
  })
}

# Kandidat knot: 50 titik berjarak sama per variabel, titik ujung dibuang (48 kandidat),
# lalu semua kombinasi k_knot titik. Urutan kombinasi sama dengan loop bersarang j<k<g.
buat_kandidat = function(dataA, nk, k_knot)
{
  m = ncol(dataA)
  knot1 = matrix(ncol = m, nrow = nk)
  for (i in 1:m) {
    knot1[, i] = seq(min(dataA[, i]), max(dataA[, i]), length.out = nk)
  }
  knot1 = knot1[2:(nk - 1), , drop = FALSE]
  idx = t(combn(nrow(knot1), k_knot))             # baris = satu kombinasi indeks knot
  do.call(cbind, lapply(1:m, function(i) {
    matrix(knot1[as.vector(idx), i], nrow = nrow(idx))
  }))
}

# Pemilihan knot optimal berdasarkan GCV untuk k_knot titik knot
GCV_knot = function(data, k_knot, para = 0, nk = 50)
{
  data = as.matrix(data)
  N = nrow(data)
  M = ncol(data)
  m = M - para - 1
  dataA = as.matrix(data[, (para + 2):M])
  Imat = diag(N)
  aa = rep(1, N)
  data2 = data[, 2:M]                              # data X saja

  knotkand = buat_kandidat(dataA, nk, k_knot)
  nk1 = nrow(knotkand)

  GCV = as.matrix(rep(NA, nk1), ncol = 1); colnames(GCV) = "GCV"
  MSE = rep(NA, nk1)
  SSE = rep(NA, nk1)
  SSR = rep(NA, nk1)
  Rsq = as.matrix(rep(NA, nk1), ncol = 1); colnames(Rsq) = "Rsq"
  knotke = matrix(1:nk1, ncol = 1); colnames(knotke) = "knot_ke"

  for (i in 1:nk1)
  {
    data1 = basis_knot(data, knotkand[i, ], k_knot, para)
    mx = as.matrix(cbind(aa, data2, data1))
    C = pinv(t(mx) %*% mx)
    B = C %*% (t(mx) %*% data[, 1])
    yhat = mx %*% B
    res = data[, 1] - yhat
    SSE[i] = sum(res^2)
    SSR[i] = sum((yhat - mean(data[, 1]))^2)
    MSE[i] = SSE[i] / N
    Rsq[i] = (SSR[i] / (SSR[i] + SSE[i])) * 100
    A = mx %*% C %*% t(mx)
    A2 = (sum(diag(Imat - A)) / N)^2
    GCV[i] = MSE[i] / A2
  }

  # Kolom dataAll : 1 = GCV, 2 = Rsq, 3 = knot_ke, 4 dst = nilai knot
  # Kolom dataG   : 1 = GCV, 2 = knot_ke, 3 dst = nilai knot (kolom Rsq dibuang)
  dataAll = as.matrix(cbind(GCV, Rsq, knotke, knotkand))
  dataG = dataAll[order(GCV), -2]
  write.csv(dataAll, file = file.path(dir_out, paste0("All Knot ", k_knot, ".csv")))

  cat("HASIL GCV terkecil dengan", k_knot, "knot", "\n")
  cat("==============================================", "\n")
  print(dataG[1, 1:(2 + k_knot * m)])
  cat("Nilai GCV 10 terkecil pertama", "\n")
  print(dataG[1:10, ])

  # Estimasi ulang model pada knot dengan GCV terkecil
  baris_terbaik = dataG[1, "knot_ke"]
  mingcv = dataG[1, "GCV"]
  knotgcv = knotkand[baris_terbaik, ]
  datagcv1 = basis_knot(data, knotgcv, k_knot, para)
  mxgcv = as.matrix(cbind(aa, data2, datagcv1))
  Cgcv = pinv(t(mxgcv) %*% mxgcv)
  B = Cgcv %*% (t(mxgcv) %*% data[, 1])

  cat("\n")
  cat("HASIL ESTIMASI PARAMETER TITIK KNOT KE", k_knot, "\n")
  cat("==============================================", "\n")
  print(B)
  cat("\n")

  invisible(list(knotgcv = matrix(knotgcv, nrow = 1), mingcv = mingcv,
                 mxgcv = mxgcv, B = B))
}

# Pembungkus agar pemanggilan tetap GCV1(data), GCV2(data), GCV3(data)
GCV1 = function(data) GCV_knot(data, k_knot = 1)
GCV2 = function(data) GCV_knot(data, k_knot = 2)
GCV3 = function(data) GCV_knot(data, k_knot = 3)

# Uji signifikansi (simultan dan parsial) untuk k_knot titik knot.
# Membaca "All Knot <k_knot>.csv" yang dibuat GCV_knot(), jadi GCV harus dijalankan lebih dulu.
uji_knot = function(alpha, para, data, k_knot)
{
  knot = read.csv(file.path(dir_out, paste0("All Knot ", k_knot, ".csv")), header = TRUE)
  knot = as.matrix(knot)
  knot = knot[, -1]                      # buang kolom nomor baris dari write.csv
  knot = knot[order(knot[, 1]), ]        # urut menurut GCV terkecil

  data = as.matrix(data)
  n = nrow(data)
  m = ncol(data) - para - 1              # banyaknya variabel bebas

  # Kolom: 1 = GCV, 2 = Rsq, 3 = knot_ke, 4 dst = knot terbaik (k_knot * m nilai)
  baris_knot = as.numeric(knot[1, 4:(3 + k_knot * m)])
  data.knot = basis_knot(data, baris_knot, k_knot, para)

  # Matriks X: 1, X1, knot X1, X2, knot X2, ...
  satu = rep(1, n)
  mx = satu
  for (v in 1:m) {
    kol_knot = ((v - 1) * k_knot + 1):(v * k_knot)
    mx = cbind(mx, data[, v + para + 1], data.knot[, kol_knot, drop = FALSE])
  }
  mx = as.matrix(mx)

  B = (pinv(t(mx) %*% mx)) %*% t(mx) %*% data[, 1]
  n1 = nrow(B)
  yhat = mx %*% B
  ybar = mean(data[, 1])
  res = data[, 1] - yhat
  SSE = sum((data[, 1] - yhat)^2)
  SSR = sum((yhat - ybar)^2)
  MSE = SSE / n                          # sesuai sintaks asli (bukan SSE/(n - n1))
  MSR = SSR / (n1 - 1)
  SST = sum((data[, 1] - ybar)^2)
  Rsq = (SSR / (SSR + SSE)) * 100

  # Uji simultan
  Fhit = MSR / MSE
  pvalue = pf(Fhit, (n1 - 1), (n - n1), lower.tail = FALSE)
  cat("---------------------------------------", "\n")
  cat("Kesimpulan hasil uji simultan", "\n")
  cat("---------------------------------------", "\n")
  if (pvalue <= alpha) {
    cat("Ho ditolak yakni minimal terdapat 1 variabel bebas yang signifikan", "\n")
  } else {
    cat("Ho gagal ditolak yakni semua variabel bebas tidak berpengaruh signifikan", "\n")
  }
  cat("", "\n")

  # Uji parsial
  thit = rep(NA, n1)
  pval = rep(NA, n1)
  SE = sqrt(diag(MSE * (pinv(t(mx) %*% mx))))
  cat("---------------------------------------------", "\n")
  cat("Kesimpulan hasil uji parsial", "\n")
  cat("---------------------------------------------", "\n")
  for (i in 1:n1)
  {
    thit[i] = B[i, 1] / SE[i]
    pval[i] = 2 * (pt(abs(thit[i]), (n - n1), lower.tail = FALSE))
    if (pval[i] <= alpha) {
      cat("Ho ditolak yakni variabel bebas signifikan dengan pvalue", pval[i], "\n")
    } else {
      cat("Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue", pval[i], "\n")
    }
  }
  thit = as.matrix(thit)
  cat("nilai t hitung", "\n")
  cat("=============================================", "\n")
  print(thit)
  cat("Analysis of Variance", "\n")
  cat("=============================================", "\n")
  cat("Sumber df SS MS Fhit", "\n")
  cat("Regresi ", (n1 - 1), " ", SSR, " ", MSR, " ", Fhit, "\n")
  cat("Error ", n - n1, " ", SSE, " ", MSE, "\n")
  cat("Total ", n - 1, " ", SST, "\n")
  cat("=============================================", "\n")
  cat("s=", sqrt(MSE), " Rsq=", Rsq, "\n")
  cat("pvalue(F)=", pvalue, "\n")

  write.csv(res,  file = file.path(dir_out, paste0("Output Uji Residual knot ", k_knot, ".csv")))
  write.csv(mx,   file = file.path(dir_out, paste0("Mx knot ", k_knot, ".csv")))
  write.csv(yhat, file = file.path(dir_out, paste0("Y topi knot ", k_knot, ".csv")))

  invisible(list(B = B, thit = thit, pval = pval, Fhit = Fhit, pvalue = pvalue,
                 Rsq = Rsq, res = res, yhat = yhat))
}

Pemilihan 1 Titik Knot

hasil_gcv1 = GCV1(data)
## HASIL GCV terkecil dengan 1 knot 
## ============================================== 
##       GCV   knot_ke                                         
##  1.508187 45.000000 76.286735 14.630612 69.183673 75.922653 
## Nilai GCV 10 terkecil pertama 
##            GCV knot_ke                                     
##  [1,] 1.508187      45 76.28673 14.63061 69.183673 75.92265
##  [2,] 1.515931      44 75.92592 14.55327 67.719592 74.71082
##  [3,] 1.603414      46 76.64755 14.70796 70.647755 77.13449
##  [4,] 1.615275      43 75.56510 14.47592 66.255510 73.49898
##  [5,] 1.734461      42 75.20429 14.39857 64.791429 72.28714
##  [6,] 1.763515      47 77.00837 14.78531 72.111837 78.34633
##  [7,] 1.830095       3 61.13245 11.38204  7.692245 25.02551
##  [8,] 1.861406       4 61.49327 11.45939  9.156327 26.23735
##  [9,] 1.869770      41 74.84347 14.32122 63.327347 71.07531
## [10,] 1.912402       5 61.85408 11.53673 10.620408 27.44918
## 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 1 
## ============================================== 
##                [,1]
##  [1,]  10.122393144
##  [2,]  -0.200697922
##  [3,]   0.762874047
##  [4,]  -0.005244856
##  [5,]  -0.017306261
##  [6,]   0.072850412
##  [7,] -21.843749933
##  [8,]   0.415138942
##  [9,]   1.053106627

Uji Signifikansi Satu Titik Knot

hasil_uji1 = uji_knot(alpha = 0.1, para = 0, data = data, k_knot = 1)
## --------------------------------------- 
## Kesimpulan hasil uji simultan 
## --------------------------------------- 
## Ho ditolak yakni minimal terdapat 1 variabel bebas yang signifikan 
##  
## --------------------------------------------- 
## Kesimpulan hasil uji parsial 
## --------------------------------------------- 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.04471309 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 6.825617e-06 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.9079879 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.006735878 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 2.184894e-06 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.5049048 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.07036832 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.09074499 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 4.259298e-07 
## nilai t hitung 
## ============================================= 
##             [,1]
##  [1,]  2.0624803
##  [2,] -5.0617196
##  [3,]  0.1162015
##  [4,]  2.8350060
##  [5,] -5.3953305
##  [6,] -0.6719509
##  [7,]  1.8516205
##  [8,] -1.7269469
##  [9,]  5.8681386
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  8   167.6864   20.9608   19.73027 
## Error  47   59.49258   1.062368 
## Total  55   227.1789 
## ============================================= 
## s= 1.030712  Rsq= 73.81246 
## pvalue(F)= 1.239e-12

Pemilihan 2 Titik Knot

hasil_gcv2 = GCV2(data)
## HASIL GCV terkecil dengan 2 knot 
## ============================================== 
##        GCV    knot_ke                                                        
##   1.316068 135.000000  61.132449  76.286735  11.382041  14.630612   7.692245 
##                                  
##  69.183673  25.025510  75.922653 
## Nilai GCV 10 terkecil pertama 
##            GCV knot_ke                                                       
##  [1,] 1.316068     135 61.13245 76.28673 11.38204 14.63061  7.692245 69.18367
##  [2,] 1.317894     179 61.49327 76.28673 11.45939 14.63061  9.156327 69.18367
##  [3,] 1.321114     178 61.49327 75.92592 11.45939 14.55327  9.156327 67.71959
##  [4,] 1.321402     134 61.13245 75.92592 11.38204 14.55327  7.692245 67.71959
##  [5,] 1.358738     221 61.85408 75.92592 11.53673 14.55327 10.620408 67.71959
##  [6,] 1.359630     222 61.85408 76.28673 11.53673 14.63061 10.620408 69.18367
##  [7,] 1.359989     138 61.13245 77.36918 11.38204 14.86265  7.692245 73.57592
##  [8,] 1.388799     136 61.13245 76.64755 11.38204 14.70796  7.692245 70.64776
##  [9,] 1.393180     180 61.49327 76.64755 11.45939 14.70796  9.156327 70.64776
## [10,] 1.396087     177 61.49327 75.56510 11.45939 14.47592  9.156327 66.25551
##                        
##  [1,] 25.02551 75.92265
##  [2,] 26.23735 75.92265
##  [3,] 26.23735 74.71082
##  [4,] 25.02551 74.71082
##  [5,] 27.44918 74.71082
##  [6,] 27.44918 75.92265
##  [7,] 25.02551 79.55816
##  [8,] 25.02551 77.13449
##  [9,] 26.23735 77.13449
## [10,] 26.23735 73.49898
## 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 2 
## ============================================== 
##              [,1]
##  [1,]  95.3587176
##  [2,]  -2.9213119
##  [3,]   6.1469387
##  [4,]   0.2059982
##  [5,]   0.7283636
##  [6,]   2.7449916
##  [7,]   0.7954129
##  [8,]  -5.3197766
##  [9,] -18.0705567
## [10,]  -0.2144538
## [11,]   0.2853691
## [12,]  -0.7619877
## [13,]   0.9034632

Uji Signifikansi Dua Titik Knot

hasil_uji2 = uji_knot(alpha = 0.1, para = 0, data = data, k_knot = 2)
## --------------------------------------- 
## Kesimpulan hasil uji simultan 
## --------------------------------------- 
## Ho ditolak yakni minimal terdapat 1 variabel bebas yang signifikan 
##  
## --------------------------------------------- 
## Kesimpulan hasil uji parsial 
## --------------------------------------------- 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.2064143 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.002583234 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.004789845 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.2422198 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.1561285 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.2229634 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 1.532736e-05 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.1557346 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.1498621 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.1649558 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.02812549 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.02406025 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 3.439945e-06 
## nilai t hitung 
## ============================================= 
##            [,1]
##  [1,]  1.282856
##  [2,] -3.199948
##  [3,]  2.975107
##  [4,]  1.185782
##  [5,]  1.443491
##  [6,] -1.236557
##  [7,] -4.872993
##  [8,]  1.444899
##  [9,] -1.466226
## [10,]  1.412651
## [11,]  2.272317
## [12,] -2.338846
## [13,]  5.327626
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  12   183.7252   15.31043   19.73097 
## Error  43   43.45373   0.7759595 
## Total  55   227.1789 
## ============================================= 
## s= 0.8808856  Rsq= 80.87246 
## pvalue(F)= 1.075619e-13

Pemilihan 3 Titik Knot

hasil_gcv3 = GCV3(data)
## HASIL GCV terkecil dengan 3 knot 
## ============================================== 
##         GCV     knot_ke                                                 
##    1.444246 2200.000000   61.132449   61.854082   76.286735   11.382041 
##                                                                         
##   11.536735   14.630612    7.692245   10.620408   69.183673   25.025510 
##                         
##   27.449184   75.922653 
## Nilai GCV 10 terkecil pertama 
##            GCV knot_ke                                                      
##  [1,] 1.444246    2200 61.13245 61.85408 76.28673 11.38204 11.53673 14.63061
##  [2,] 1.445793    3146 61.49327 61.85408 76.28673 11.45939 11.53673 14.63061
##  [3,] 1.447104    2157 61.13245 61.49327 76.28673 11.38204 11.45939 14.63061
##  [4,] 1.452451    3106 61.13245 77.00837 77.36918 11.38204 14.78531 14.86265
##  [5,] 1.453903    2199 61.13245 61.85408 75.92592 11.38204 11.53673 14.55327
##  [6,] 1.454858    3145 61.49327 61.85408 75.92592 11.45939 11.53673 14.55327
##  [7,] 1.458180    2156 61.13245 61.49327 75.92592 11.38204 11.45939 14.55327
##  [8,] 1.458931    2242 61.13245 62.21490 76.28673 11.38204 11.61408 14.63061
##  [9,] 1.464584    3037 61.13245 73.03939 76.28673 11.38204 13.93449 14.63061
## [10,] 1.465580    3101 61.13245 76.28673 76.64755 11.38204 14.63061 14.70796
##                                                             
##  [1,] 7.692245 10.620408 69.18367 25.02551 27.44918 75.92265
##  [2,] 9.156327 10.620408 69.18367 26.23735 27.44918 75.92265
##  [3,] 7.692245  9.156327 69.18367 25.02551 26.23735 75.92265
##  [4,] 7.692245 72.111837 73.57592 25.02551 78.34633 79.55816
##  [5,] 7.692245 10.620408 67.71959 25.02551 27.44918 74.71082
##  [6,] 9.156327 10.620408 67.71959 26.23735 27.44918 74.71082
##  [7,] 7.692245  9.156327 67.71959 25.02551 26.23735 74.71082
##  [8,] 7.692245 12.084490 69.18367 25.02551 28.66102 75.92265
##  [9,] 7.692245 56.006939 69.18367 25.02551 65.01612 75.92265
## [10,] 7.692245 69.183673 70.64776 25.02551 75.92265 77.13449
## 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 3 
## ============================================== 
##               [,1]
##  [1,]  -4.87954771
##  [2,]  -0.57070096
##  [3,]   1.29861828
##  [4,]   0.20162854
##  [5,]   1.23897094
##  [6,]  -2.60712938
##  [7,]   3.03208076
##  [8,]   0.76491110
##  [9,]  13.80910092
## [10,] -14.12188192
## [11,] -19.59971920
## [12,]  -0.22960609
## [13,]   0.02361872
## [14,]   0.25980650
## [15,]  -1.94377923
## [16,]   0.67438515
## [17,]   0.92445503

Uji Signifikansi Tiga Titik Knot

hasil_uji3 = uji_knot(alpha = 0.1, para = 0, data = data, k_knot = 3)
## --------------------------------------- 
## Kesimpulan hasil uji simultan 
## --------------------------------------- 
## Ho ditolak yakni minimal terdapat 1 variabel bebas yang signifikan 
##  
## --------------------------------------------- 
## Kesimpulan hasil uji parsial 
## --------------------------------------------- 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.6087605 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.7734961 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.5228609 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.1758342 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.3014451 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.8976796 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.6190703 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.4479088 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 1.040868e-05 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.4567152 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.6607985 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.9315849 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.2034532 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 0.04980339 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.1138228 
## Ho gagal ditolak yakni variabel tidak signifikan dengan pvalue 0.2996611 
## Ho ditolak yakni variabel bebas signifikan dengan pvalue 2.587599e-06 
## nilai t hitung 
## ============================================= 
##              [,1]
##  [1,] -0.51601044
##  [2,] -0.28981099
##  [3,] -0.64475471
##  [4,]  1.37873375
##  [5,]  1.04722022
##  [6,]  0.12943381
##  [7,]  0.50116758
##  [8,] -0.76664478
##  [9,] -5.05857856
## [10,]  0.75174871
## [11,] -0.44218412
## [12,]  0.08640707
## [13,]  1.29348236
## [14,]  2.02451772
## [15,] -1.61753944
## [16,]  1.05114669
## [17,]  5.49666947
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  16   185.9148   11.61967   15.76917 
## Error  39   41.26416   0.7368601 
## Total  55   227.1789 
## ============================================= 
## s= 0.8584055  Rsq= 81.83627 
## pvalue(F)= 2.762142e-12