#MEMANGGIL LIBRARY
library(lmtest) 
## Warning: package 'lmtest' was built under R version 4.5.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(MASS) 
## Warning: package 'MASS' was built under R version 4.5.3
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
library(pastecs)
## Warning: package 'pastecs' was built under R version 4.5.3
library(pracma)
## Warning: package 'pracma' was built under R version 4.5.3
## 
## 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
#MEMANGGIL DATA & STATISTIKA DESKRIPTIF 
data=read.table(file.choose(), header=TRUE)
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
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
#SCATTERPLOT
scatterplot = function(x, y, judul, xlab, ylab,
                       warna_titik = "#6C5B9E",
                       bg_plot     = "pink",
                       warna_aksen = "#4B0082")
{
  par(bg = bg_plot, mar = c(5, 5, 4, 2))
  
  plot(x, y,
       main = judul, xlab = xlab, ylab = ylab,
       pch = 21, bg = warna_titik, col = "white",
       cex = 1.7, lwd = 1.2,
       font.main = 2, cex.main = 1.1,
       col.main = warna_aksen,
       col.lab  = warna_aksen,
       col.axis = warna_aksen,
       las = 1, bty = "l")
  
  grid(col = warna_aksen, lty = "dotted", lwd = 1)
  abline(lm(y ~ x), col = warna_aksen, lwd = 3)
}

scatterplot(data$X1, data$Y,
            "Scatterplot Tingkat Pengangguran Terbuka dan\nTingkat Partisipasi Angkatan Kerja",
            "Tingkat Partisipasi Angkatan Kerja (X1)",
            "Tingkat Pengangguran Terbuka (Y)",
            warna_titik = "#2A9D8F")

scatterplot(data$X2, data$Y,
            "Scatterplot Tingkat Pengangguran Terbuka dan\nHarapan Lama Sekolah",
            "Harapan Lama Sekolah (X2)",
            "Tingkat Pengangguran Terbuka (Y)",
            warna_titik = "#E76F51")

scatterplot(data$X3, data$Y,
            "Scatterplot Tingkat Pengangguran Terbuka dan\nPDRB Atas Dasar Harga Berlaku",
            "PDRB Atas Dasar Harga Berlaku (X3)",
            "Tingkat Pengangguran Terbuka (Y)",
            warna_titik = "#E9A820")

scatterplot(data$X4, data$Y,
            "Scatterplot Tingkat Pengangguran Terbuka dan\nIndeks Pembangunan Manusia",
            "Indeks Pembangunan Manusia (X4)",
            "Tingkat Pengangguran Terbuka (Y)",
            warna_titik = "#6C5B9E")

par(bg = "white")
#PENDETEKSIAN MULTIKOLINEARITAS
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
#PEMILIHAN 1 TITIK KNOT 
GCV1=function(data) 
{ 
  parameter=0 
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-parameter-1 
  dataA=data[,(parameter+2):M] 
  dataA=as.matrix(dataA) 
  F=diag(N) 
  nk=50 #nk=banyaknya alternatif titik knot yang akan dicoba  
  knot1=matrix(ncol=m,nrow=nk) 
  for (i in (1:m)) #membuat knot 
  { 
    a=seq(min(dataA[,i]),max(dataA[,i]),length.out=nk) 
    knot1[,i]=t(as.matrix(a)) 
  } 
  a1=length(knot1[,1]) 
  knot1=as.matrix(knot1[2:(a1-1),]) 
  aa=rep(1,N) 
  data1=matrix(ncol=m,nrow=N) 
  data2=data[,2:M] #data x saja  
  nk1=nrow(knot1) 
  GCV=as.matrix(rep(NA,nk1),ncol=1);colnames(GCV)<-"GCV" 
  MSE=as.matrix(rep(NA,nk1),ncol=1);colnames(MSE)<-"MSE" 
  SSE=rep(NA,nk1) 
  SSR=rep(NA,nk1)  
  Rsq=as.matrix(rep(NA,nk1),ncol=1);colnames(Rsq)<-"Rsq" 
  knotke=matrix(c(1:nk1),ncol=1);colnames(knotke)<-"knot_ke" 
  for (i in 1:nk1) 
  { 
    data1=matrix(ncol=m,nrow=N) 
    for (j in 1:m)  
    {  
      for (k in 1:N)  
      {  
        if (data[k,(j+parameter+1)]<knot1[i,j]) data1[k,j]=0 else  
          data1[k,j]=data[k,(j+parameter+1)]-knot1[i,j] 
      } 
    } 
    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) 
    A1=(F-A) 
    A2=(sum(diag(A1))/N)^2 
    GCV[i]=MSE[i]/A2 
  } 
  dataAll=as.matrix(cbind(GCV,Rsq,knotke,knot1)) 
  dataG=dataAll[order(GCV),-2] 
  write.csv(dataAll, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Data Titik Knot 1.CSV")
  
  #  hasil GCV terkecil
  cat("\n[ HASIL GCV TERKECIL | SPLINE 1 KNOT ]\n\n")
  cat("  | GCV minimum  :", format(dataG[1,1], digits=8), "\n")
  cat("  | Knot ke-     :", dataG[1,2], "\n")
  for (v in 1:m) cat("  | Knot X", v, "      : ", format(dataG[1,2+v], digits=6), "\n", sep="")
  
  cat("\n[ 10 NILAI GCV TERKECIL ]\n\n")
  print(dataG[1:10,]) 
  
  mingcv=dataG[1,1] 
  knotgcv=as.matrix(knot1[dataG[1,2],]) 
  knotgcv1=matrix(knotgcv,nrow=1) 
  datagcv1=matrix(ncol=m,nrow=N)  
  for (j in 1:m)  
  {  
    for (k in 1:N)  
    {  
      if (data[k,(j+parameter+1)]<knotgcv[j,1]) datagcv1[k,j]=0 else  
        datagcv1[k,j]=data[k,(j+parameter+1)]-knotgcv[j,1]  
    }  
  } 
  mxgcv=as.matrix(cbind(aa,data2,datagcv1))  
  mxgcv=mxgcv[,c(2:6)] 
  
  # ----  estimasi parameter ----
  rownames(B) = c("b0",
                  paste0("b", 1:m, "_x", 1:m),
                  paste0("b", (m + 1):(2 * m), "_(x", 1:m, "-k", 1:m, ")+"))
  cat("\n[ ESTIMASI PARAMETER | TITIK KNOT KE-1 ]\n\n")
  print(B)
  cat("\n")
  
  return(list(knotgcv=knotgcv1,mingcv=mingcv,mxgcv=mxgcv,B=B)) 
} 
GCV1(data)
## 
## [ HASIL GCV TERKECIL | SPLINE 1 KNOT ]
## 
##   | GCV minimum  : 1.5081867 
##   | Knot ke-     : 45 
##   | Knot X1      : 76.2867
##   | Knot X2      : 14.6306
##   | Knot X3      : 69.1837
##   | Knot X4      : 75.9227
## 
## [ 10 NILAI GCV TERKECIL ]
## 
##            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
## 
## [ ESTIMASI PARAMETER | TITIK KNOT KE-1 ]
## 
##                      [,1]
## b0           1.100168e+01
## b1_x1       -2.352118e-01
## b2_x2        8.683805e-01
## b3_x3       -5.401921e-03
## b4_x4       -1.233868e-02
## b5_(x1-k1)+  5.699848e-01
## b6_(x2-k2)+ -1.336717e+02
## b7_(x3-k3)+  4.073604e-01
## b8_(x4-k4)+  6.923471e+00
## $knotgcv
##          [,1]     [,2]     [,3]     [,4]
## [1,] 76.28673 14.63061 69.18367 75.92265
## 
## $mingcv
##      GCV 
## 1.508187 
## 
## $mxgcv
##          X1    X2    X3    X4          
##  [1,] 67.88 13.00 14.86 72.04 0.0000000
##  [2,] 71.02 12.89 14.38 51.19 0.0000000
##  [3,] 61.98 13.58 18.56 73.59 0.0000000
##  [4,] 68.96 12.78 29.61 43.00 0.0000000
##  [5,] 67.40 13.31 14.89 74.71 0.0000000
##  [6,] 69.04 12.55 55.70 71.41 0.0000000
##  [7,] 76.22 12.50 10.46 67.09 0.0000000
##  [8,] 62.90 14.13 15.59 80.01 0.0000000
##  [9,] 65.16 14.70 75.04 30.11 0.0000000
## [10,] 69.24 12.90 31.21 80.02 0.0000000
## [11,] 74.28 12.60 20.67 67.03 0.0000000
## [12,] 75.81 12.08  8.67 47.87 0.0000000
## [13,] 71.78 12.39 10.74 65.98 0.0000000
## [14,] 64.14 12.33  8.54 25.74 0.0000000
## [15,] 70.38 11.56 19.95 65.77 0.0000000
## [16,] 60.75 11.79 28.13 67.17 0.0000000
## [17,] 75.57 12.02 14.71 36.88 0.0000000
## [18,] 74.09 12.04 10.28 65.69 0.0000000
## [19,] 77.53 11.57  6.56 64.76 1.2432653
## [20,] 73.93 11.15 25.23 25.55 0.0000000
## [21,] 65.53 11.81  4.21 22.68 0.0000000
## [22,] 67.71 13.64 28.93 67.95 0.0000000
## [23,] 60.05 13.64 37.68 79.44 0.0000000
## [24,] 63.84 12.89 10.14 41.94 0.0000000
## [25,] 72.03 11.96 10.16 69.38 0.0000000
## [26,] 64.68 11.92 17.31 68.86 0.0000000
## [27,] 72.55 12.28 11.73 59.18 0.0000000
## [28,] 74.61 12.38  5.76 66.22 0.0000000
## [29,] 70.17 11.86  6.35 70.11 0.0000000
## [30,] 73.15 12.10  4.65 48.85 0.0000000
## [31,] 71.15 12.19  4.83 68.84 0.0000000
## [32,] 70.08 12.88  3.30 65.59 0.0000000
## [33,] 69.27 12.59 14.48 72.19 0.0000000
## [34,] 70.16 12.36 15.39 50.71 0.0000000
## [35,] 76.50 12.37  9.17 68.82 0.2132653
## [36,] 62.07 13.92 21.93 77.10 0.0000000
## [37,] 66.82 14.80  6.11 79.10 0.0000000
## [38,] 66.44 13.29 11.21 71.94 0.0000000
## [39,] 67.38 12.99 18.72 41.10 0.0000000
## [40,] 67.81 12.20  5.75 66.97 0.0000000
## [41,] 66.91 12.63 26.30 45.79 0.0000000
## [42,] 65.65 13.73 38.11 75.83 0.0000000
## [43,] 73.01 12.71 33.79 72.87 0.0000000
## [44,] 67.41 12.69 56.63 71.31 0.0000000
## [45,] 70.04 12.90 45.81 69.48 0.0000000
## [46,] 64.68 12.54 45.53 70.22 0.0000000
## [47,] 71.54 12.48 51.50 30.59 0.0000000
## [48,] 65.50 12.11 66.27 68.03 0.0000000
## [49,] 70.50 12.47 67.99 70.51 0.0000000
## [50,] 65.04 11.98 40.96 37.58 0.0000000
## [51,] 64.55 12.51 48.22 68.68 0.0000000
## [52,] 72.77 12.40 43.84 68.45 0.0000000
## [53,] 71.22 11.77 51.25 70.81 0.0000000
## [54,] 77.73 12.82 54.56 21.39 1.4432653
## [55,] 63.93 11.74 62.92 67.98 0.0000000
## [56,] 62.71 14.94 61.01 80.77 0.0000000
## 
## $B
##                      [,1]
## b0           1.100168e+01
## b1_x1       -2.352118e-01
## b2_x2        8.683805e-01
## b3_x3       -5.401921e-03
## b4_x4       -1.233868e-02
## b5_(x1-k1)+  5.699848e-01
## b6_(x2-k2)+ -1.336717e+02
## b7_(x3-k3)+  4.073604e-01
## b8_(x4-k4)+  6.923471e+00
#UJI SIGNIFIKANSI 2 TITIK KNOT
uji=function(alpha,parameter) 
{ 
  # membaca titik knot optimal (GCV terkecil) 
  knot1=read.csv("C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Data Titik Knot 1.CSV", header=TRUE) 
  knot1=as.matrix(knot1) 
  knot1=knot1[,-1] #buang kolom index baris 
  knot1=knot1[order(knot1[,1]),] #urutkan berdasarkan GCV terkecil 
  
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-parameter-1 
  dataA=data[,(parameter+2):M] 
  dataA=as.matrix(dataA) 
  knotopt=as.numeric(knot1[1,4:(3+m)]) #knot X1-X4 pada baris GCV terkecil 
  aa=rep(1,N) 
  data1=matrix(ncol=m,nrow=N) 
  data2=data[,2:M] #data x saja 
  
  for (j in 1:m)  
  {  
    for (k in 1:N)  
    {  
      if (data[k,(j+parameter+1)]<knotopt[j]) data1[k,j]=0 else  
        data1[k,j]=data[k,(j+parameter+1)]-knotopt[j] 
    } 
  } 
  mx=as.matrix(cbind(aa,data2,data1)) 
  C=pinv(t(mx)%*%mx) 
  B=C%*%(t(mx)%*%data[,1]) 
  np=nrow(B) #banyaknya parameter 
  yhat=mx%*%B 
  res=data[,1]-yhat 
  SSE=sum((res)^2) 
  SSR=sum((yhat-mean(data[,1]))^2) 
  SST=sum((data[,1]-mean(data[,1]))^2) 
  MSE=SSE/(N) 
  MSR=SSR/(np-1) 
  Rsq=(SSR/(SSR+SSE))*100 
  
  rownames(B) = c("b0",
                  paste0("b", 1:m, "_x", 1:m),
                  paste0("b", (m + 1):(2 * m), "_(x", 1:m, "-k", 1:m, ")+"))
  
  # UJI SIMULTAN
  Fhit=MSR/MSE 
  pvalue=pf(Fhit,(np-1),(N-np),lower.tail=FALSE) 
  cat("\n[ UJI SIMULTAN | SPLINE 1 KNOT ]\n\n")
  cat("  | F hitung     :", format(Fhit, digits=8), "\n")
  cat("  | p-value      :", format(pvalue, digits=8), "\n")
  if (pvalue<=alpha) 
  { 
    cat("  | Keputusan    : Tolak Ho\n")
    cat("  | Kesimpulan   : minimal terdapat 1 variabel bebas yang signifikan\n")
  } else 
  { 
    cat("  | Keputusan    : Gagal Tolak Ho\n")
    cat("  | Kesimpulan   : semua variabel bebas tidak berpengaruh signifikan\n")
  } 
  
 # UJI PARSIAL
  thit=rep(NA,np) 
  pval=rep(NA,np) 
  SE=sqrt(diag(MSE*C)) 
  cat("\n[ UJI PARSIAL | SPLINE 1 KNOT ]\n\n")
  for (i in 1:np) 
  { 
    thit[i]=B[i,1]/SE[i] 
    pval[i]=2*(pt(abs(thit[i]),(N-np),lower.tail=FALSE)) 
    ket=if (pval[i]<=alpha) "Signifikan (Tolak Ho)" else "Tidak signifikan (Gagal Tolak Ho)"
    cat(sprintf("  > %-12s : t = %9.4f | p = %8.6f | %s\n", rownames(B)[i], thit[i], pval[i], ket))
  } 
  
  # ANOVA 
  cat("\n[ ANALYSIS OF VARIANCE ]\n\n")
  cat(sprintf("  %-8s %4s %14s %14s %10s\n", "Sumber", "df", "SS", "MS", "Fhit"))
  cat(sprintf("  %-8s %4d %14.4f %14.4f %10.4f\n", "Regresi", np-1, SSR, MSR, Fhit))
  cat(sprintf("  %-8s %4d %14.4f %14.4f\n", "Error", N-np, SSE, MSE))
  cat(sprintf("  %-8s %4d %14.4f\n", "Total", N-1, SST))
  cat("\n  | s            :", format(sqrt(MSE), digits=6), "\n")
  cat("  | R-square     :", format(Rsq, digits=6), "%\n")
  cat("  | p-value (F)  :", format(pvalue, digits=8), "\n\n")
  
  write.csv(res, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji Residual Titik Knot 1.CSV") 
  write.csv(mx, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji MX Titik Knot 1.CSV") 
  write.csv(yhat, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji yhat Titik Knot 1.CSV") 
} 
uji(0.1, 0)
## 
## [ UJI SIMULTAN | SPLINE 1 KNOT ]
## 
##   | F hitung     : 19.730268 
##   | p-value      : 1.2390004e-12 
##   | Keputusan    : Tolak Ho
##   | Kesimpulan   : minimal terdapat 1 variabel bebas yang signifikan
## 
## [ UJI PARSIAL | SPLINE 1 KNOT ]
## 
##   > b0           : t =    2.0625 | p = 0.044713 | Signifikan (Tolak Ho)
##   > b1_x1        : t =   -5.0617 | p = 0.000007 | Signifikan (Tolak Ho)
##   > b2_x2        : t =    2.8350 | p = 0.006736 | Signifikan (Tolak Ho)
##   > b3_x3        : t =   -0.6720 | p = 0.504905 | Tidak signifikan (Gagal Tolak Ho)
##   > b4_x4        : t =   -1.7269 | p = 0.090745 | Signifikan (Tolak Ho)
##   > b5_(x1-k1)+  : t =    0.1162 | p = 0.907988 | Tidak signifikan (Gagal Tolak Ho)
##   > b6_(x2-k2)+  : t =   -5.3953 | p = 0.000002 | Signifikan (Tolak Ho)
##   > b7_(x3-k3)+  : t =    1.8516 | p = 0.070368 | Signifikan (Tolak Ho)
##   > b8_(x4-k4)+  : t =    5.8681 | p = 0.000000 | Signifikan (Tolak Ho)
## 
## [ ANALYSIS OF VARIANCE ]
## 
##   Sumber     df             SS             MS       Fhit
##   Regresi     8       167.6864        20.9608    19.7303
##   Error      47        59.4926         1.0624
##   Total      55       227.1789
## 
##   | s            : 1.03071 
##   | R-square     : 73.8125 %
##   | p-value (F)  : 1.2390004e-12
#PEMILIHAN 2 TITIK KNOT 
GCV2=function(data) 
{ 
  parameter=0 
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-parameter-1 
  dataA=data[,(parameter+2):M] 
  dataA=as.matrix(dataA) 
  F=diag(N) 
  nk=50 #nk=banyaknya alternatif titik knot yang akan dicoba  
  knot1=matrix(ncol=m,nrow=nk) 
  for (i in (1:m)) #membuat knot 
  { 
    a=seq(min(dataA[,i]),max(dataA[,i]),length.out=nk) 
    knot1[,i]=t(as.matrix(a)) 
  } 
  a1=length(knot1[,1]) 
  knot1=as.matrix(knot1[2:(a1-1),]) 
  a2=nk-2  
  z=(a2*(a2-1)/2) 
  knot2=cbind(rep(NA,(z+1))) 
  for (i in (1:m)) 
  { 
    knot=rbind(rep(NA,2)) 
    for ( j in 1:(a2-1)) 
    { 
      for (k in (j+1):a2)  
      { xx=cbind(knot1[j,i],knot1[k,i]) 
      knot=rbind(knot,xx) 
      } 
    } 
    knot2=cbind(knot2,knot)  
  } 
  knot2=knot2[2:(z+1),2:(2*m+1)] 
  a3=nrow(knot2) 
  aa=rep(1,N) 
  data1=matrix(ncol=2*m,nrow=N) 
  data2=data[,2:M] #data x saja  
  nk1=nrow(knot2) 
  GCV=as.matrix(rep(NA,nk1),ncol=1);colnames(GCV)<-"GCV" 
  MSE=as.matrix(rep(NA,nk1),ncol=1);colnames(MSE)<-"MSE" 
  SSE=rep(NA,nk1) 
  SSR=rep(NA,nk1)  
  Rsq=as.matrix(rep(NA,nk1),ncol=1);colnames(Rsq)<-"Rsq" 
  knotke=matrix(c(1:nk1),ncol=1);colnames(knotke)<-"knot_ke" 
  for (i in 1:a3) 
  { 
    data1=matrix(ncol=2*m,nrow=N) 
    for (j in 1:(2*m))  
    {  
      b=ceiling(j/2) 
      for (k in 1:N)  
      {  
        if (data[k,(b+parameter+1)]<knot2[i,j]) data1[k,j]=0 else  
          data1[k,j]=data[k,(b+parameter+1)]-knot2[i,j] 
      } 
    } 
    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) 
    A1=(F-A) 
    A2=(sum(diag(A1))/N)^2 
    GCV[i]=MSE[i]/A2 
  } 
  dataAll=as.matrix(cbind(GCV,Rsq,knotke,knot2)) 
  dataG=dataAll[order(GCV),-2] 
  write.csv(dataAll, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Data Titik Knot 2.CSV")
  
  # ----  hasil GCV terkecil ----
  cat("\n[ HASIL GCV TERKECIL | SPLINE 2 KNOT ]\n\n")
  cat("  | GCV minimum  :", format(dataG[1,1], digits=8), "\n")
  cat("  | Knot ke-     :", dataG[1,2], "\n")
  for (v in 1:m) cat("  | Knot X", v, "      : ", paste(format(dataG[1,(2+(v-1)*2+1):(2+v*2)], digits=6), collapse=" ; "), "\n", sep="")
  
  cat("\n[ 10 NILAI GCV TERKECIL ]\n\n")
  print(dataG[1:10,]) 
  
  # ----  hitung ulang B pada knot dengan GCV terkecil ----
  knotgcv=knot2[dataG[1,2],] 
  datagcv1=matrix(ncol=2*m,nrow=N)  
  for (j in 1:(2*m))  
  {  
    b=ceiling(j/2) 
    for (k in 1:N)  
    {  
      if (data[k,(b+parameter+1)]<knotgcv[j]) datagcv1[k,j]=0 else  
        datagcv1[k,j]=data[k,(b+parameter+1)]-knotgcv[j]  
    }  
  } 
  mxgcv=as.matrix(cbind(aa,data2,datagcv1))  
  C=pinv(t(mxgcv)%*%mxgcv) 
  B=C%*%(t(mxgcv)%*%data[,1]) 
  
  # ----  estimasi parameter ----
  rownames(B) = c("b0",
                  paste0("b", 1:m, "_x", 1:m),
                  paste0("b", (m + 1):(3 * m), "_(x", rep(1:m, each = 2), "-k", rep(1:m, each = 2), ".", rep(1:2, m), ")+"))
  cat("\n[ ESTIMASI PARAMETER | TITIK KNOT KE-2 ]\n\n")
  print(B)
  cat("\n")
  
  return(list(knotgcv=knotgcv,mingcv=dataG[1,1],mxgcv=mxgcv,B=B)) 
} 
GCV2(data)
## 
## [ HASIL GCV TERKECIL | SPLINE 2 KNOT ]
## 
##   | GCV minimum  : 1.3160676 
##   | Knot ke-     : 135 
##   | Knot X1      : 61.1324 ; 76.2867
##   | Knot X2      : 11.3820 ; 14.6306
##   | Knot X3      :  7.69224 ; 69.18367
##   | Knot X4      : 25.0255 ; 75.9227
## 
## [ 10 NILAI GCV TERKECIL ]
## 
##            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
## 
## [ ESTIMASI PARAMETER | TITIK KNOT KE-2 ]
## 
##                       [,1]
## b0              95.3587175
## b1_x1           -2.9213119
## b2_x2            6.1469387
## b3_x3            0.2059982
## b4_x4            0.7283636
## b5_(x1-k1.1)+    2.7449916
## b6_(x1-k1.2)+    0.7954129
## b7_(x2-k2.1)+   -5.3197766
## b8_(x2-k2.2)+  -18.0705567
## b9_(x3-k3.1)+   -0.2144538
## b10_(x3-k3.2)+   0.2853691
## b11_(x4-k4.1)+  -0.7619877
## b12_(x4-k4.2)+   0.9034632
## $knotgcv
## [1] 61.132449 76.286735 11.382041 14.630612  7.692245 69.183673 25.025510
## [8] 75.922653
## 
## $mingcv
##      GCV 
## 1.316068 
## 
## $mxgcv
##       aa    X1    X2    X3    X4                                         
##  [1,]  1 67.88 13.00 14.86 72.04  6.747551 0.0000000 1.6179592 0.00000000
##  [2,]  1 71.02 12.89 14.38 51.19  9.887551 0.0000000 1.5079592 0.00000000
##  [3,]  1 61.98 13.58 18.56 73.59  0.847551 0.0000000 2.1979592 0.00000000
##  [4,]  1 68.96 12.78 29.61 43.00  7.827551 0.0000000 1.3979592 0.00000000
##  [5,]  1 67.40 13.31 14.89 74.71  6.267551 0.0000000 1.9279592 0.00000000
##  [6,]  1 69.04 12.55 55.70 71.41  7.907551 0.0000000 1.1679592 0.00000000
##  [7,]  1 76.22 12.50 10.46 67.09 15.087551 0.0000000 1.1179592 0.00000000
##  [8,]  1 62.90 14.13 15.59 80.01  1.767551 0.0000000 2.7479592 0.00000000
##  [9,]  1 65.16 14.70 75.04 30.11  4.027551 0.0000000 3.3179592 0.06938776
## [10,]  1 69.24 12.90 31.21 80.02  8.107551 0.0000000 1.5179592 0.00000000
## [11,]  1 74.28 12.60 20.67 67.03 13.147551 0.0000000 1.2179592 0.00000000
## [12,]  1 75.81 12.08  8.67 47.87 14.677551 0.0000000 0.6979592 0.00000000
## [13,]  1 71.78 12.39 10.74 65.98 10.647551 0.0000000 1.0079592 0.00000000
## [14,]  1 64.14 12.33  8.54 25.74  3.007551 0.0000000 0.9479592 0.00000000
## [15,]  1 70.38 11.56 19.95 65.77  9.247551 0.0000000 0.1779592 0.00000000
## [16,]  1 60.75 11.79 28.13 67.17  0.000000 0.0000000 0.4079592 0.00000000
## [17,]  1 75.57 12.02 14.71 36.88 14.437551 0.0000000 0.6379592 0.00000000
## [18,]  1 74.09 12.04 10.28 65.69 12.957551 0.0000000 0.6579592 0.00000000
## [19,]  1 77.53 11.57  6.56 64.76 16.397551 1.2432653 0.1879592 0.00000000
## [20,]  1 73.93 11.15 25.23 25.55 12.797551 0.0000000 0.0000000 0.00000000
## [21,]  1 65.53 11.81  4.21 22.68  4.397551 0.0000000 0.4279592 0.00000000
## [22,]  1 67.71 13.64 28.93 67.95  6.577551 0.0000000 2.2579592 0.00000000
## [23,]  1 60.05 13.64 37.68 79.44  0.000000 0.0000000 2.2579592 0.00000000
## [24,]  1 63.84 12.89 10.14 41.94  2.707551 0.0000000 1.5079592 0.00000000
## [25,]  1 72.03 11.96 10.16 69.38 10.897551 0.0000000 0.5779592 0.00000000
## [26,]  1 64.68 11.92 17.31 68.86  3.547551 0.0000000 0.5379592 0.00000000
## [27,]  1 72.55 12.28 11.73 59.18 11.417551 0.0000000 0.8979592 0.00000000
## [28,]  1 74.61 12.38  5.76 66.22 13.477551 0.0000000 0.9979592 0.00000000
## [29,]  1 70.17 11.86  6.35 70.11  9.037551 0.0000000 0.4779592 0.00000000
## [30,]  1 73.15 12.10  4.65 48.85 12.017551 0.0000000 0.7179592 0.00000000
## [31,]  1 71.15 12.19  4.83 68.84 10.017551 0.0000000 0.8079592 0.00000000
## [32,]  1 70.08 12.88  3.30 65.59  8.947551 0.0000000 1.4979592 0.00000000
## [33,]  1 69.27 12.59 14.48 72.19  8.137551 0.0000000 1.2079592 0.00000000
## [34,]  1 70.16 12.36 15.39 50.71  9.027551 0.0000000 0.9779592 0.00000000
## [35,]  1 76.50 12.37  9.17 68.82 15.367551 0.2132653 0.9879592 0.00000000
## [36,]  1 62.07 13.92 21.93 77.10  0.937551 0.0000000 2.5379592 0.00000000
## [37,]  1 66.82 14.80  6.11 79.10  5.687551 0.0000000 3.4179592 0.16938776
## [38,]  1 66.44 13.29 11.21 71.94  5.307551 0.0000000 1.9079592 0.00000000
## [39,]  1 67.38 12.99 18.72 41.10  6.247551 0.0000000 1.6079592 0.00000000
## [40,]  1 67.81 12.20  5.75 66.97  6.677551 0.0000000 0.8179592 0.00000000
## [41,]  1 66.91 12.63 26.30 45.79  5.777551 0.0000000 1.2479592 0.00000000
## [42,]  1 65.65 13.73 38.11 75.83  4.517551 0.0000000 2.3479592 0.00000000
## [43,]  1 73.01 12.71 33.79 72.87 11.877551 0.0000000 1.3279592 0.00000000
## [44,]  1 67.41 12.69 56.63 71.31  6.277551 0.0000000 1.3079592 0.00000000
## [45,]  1 70.04 12.90 45.81 69.48  8.907551 0.0000000 1.5179592 0.00000000
## [46,]  1 64.68 12.54 45.53 70.22  3.547551 0.0000000 1.1579592 0.00000000
## [47,]  1 71.54 12.48 51.50 30.59 10.407551 0.0000000 1.0979592 0.00000000
## [48,]  1 65.50 12.11 66.27 68.03  4.367551 0.0000000 0.7279592 0.00000000
## [49,]  1 70.50 12.47 67.99 70.51  9.367551 0.0000000 1.0879592 0.00000000
## [50,]  1 65.04 11.98 40.96 37.58  3.907551 0.0000000 0.5979592 0.00000000
## [51,]  1 64.55 12.51 48.22 68.68  3.417551 0.0000000 1.1279592 0.00000000
## [52,]  1 72.77 12.40 43.84 68.45 11.637551 0.0000000 1.0179592 0.00000000
## [53,]  1 71.22 11.77 51.25 70.81 10.087551 0.0000000 0.3879592 0.00000000
## [54,]  1 77.73 12.82 54.56 21.39 16.597551 1.4432653 1.4379592 0.00000000
## [55,]  1 63.93 11.74 62.92 67.98  2.797551 0.0000000 0.3579592 0.00000000
## [56,]  1 62.71 14.94 61.01 80.77  1.577551 0.0000000 3.5579592 0.30938776
##                                              
##  [1,]  7.1677551 0.000000 47.0144898 0.000000
##  [2,]  6.6877551 0.000000 26.1644898 0.000000
##  [3,] 10.8677551 0.000000 48.5644898 0.000000
##  [4,] 21.9177551 0.000000 17.9744898 0.000000
##  [5,]  7.1977551 0.000000 49.6844898 0.000000
##  [6,] 48.0077551 0.000000 46.3844898 0.000000
##  [7,]  2.7677551 0.000000 42.0644898 0.000000
##  [8,]  7.8977551 0.000000 54.9844898 4.087347
##  [9,] 67.3477551 5.856327  5.0844898 0.000000
## [10,] 23.5177551 0.000000 54.9944898 4.097347
## [11,] 12.9777551 0.000000 42.0044898 0.000000
## [12,]  0.9777551 0.000000 22.8444898 0.000000
## [13,]  3.0477551 0.000000 40.9544898 0.000000
## [14,]  0.8477551 0.000000  0.7144898 0.000000
## [15,] 12.2577551 0.000000 40.7444898 0.000000
## [16,] 20.4377551 0.000000 42.1444898 0.000000
## [17,]  7.0177551 0.000000 11.8544898 0.000000
## [18,]  2.5877551 0.000000 40.6644898 0.000000
## [19,]  0.0000000 0.000000 39.7344898 0.000000
## [20,] 17.5377551 0.000000  0.5244898 0.000000
## [21,]  0.0000000 0.000000  0.0000000 0.000000
## [22,] 21.2377551 0.000000 42.9244898 0.000000
## [23,] 29.9877551 0.000000 54.4144898 3.517347
## [24,]  2.4477551 0.000000 16.9144898 0.000000
## [25,]  2.4677551 0.000000 44.3544898 0.000000
## [26,]  9.6177551 0.000000 43.8344898 0.000000
## [27,]  4.0377551 0.000000 34.1544898 0.000000
## [28,]  0.0000000 0.000000 41.1944898 0.000000
## [29,]  0.0000000 0.000000 45.0844898 0.000000
## [30,]  0.0000000 0.000000 23.8244898 0.000000
## [31,]  0.0000000 0.000000 43.8144898 0.000000
## [32,]  0.0000000 0.000000 40.5644898 0.000000
## [33,]  6.7877551 0.000000 47.1644898 0.000000
## [34,]  7.6977551 0.000000 25.6844898 0.000000
## [35,]  1.4777551 0.000000 43.7944898 0.000000
## [36,] 14.2377551 0.000000 52.0744898 1.177347
## [37,]  0.0000000 0.000000 54.0744898 3.177347
## [38,]  3.5177551 0.000000 46.9144898 0.000000
## [39,] 11.0277551 0.000000 16.0744898 0.000000
## [40,]  0.0000000 0.000000 41.9444898 0.000000
## [41,] 18.6077551 0.000000 20.7644898 0.000000
## [42,] 30.4177551 0.000000 50.8044898 0.000000
## [43,] 26.0977551 0.000000 47.8444898 0.000000
## [44,] 48.9377551 0.000000 46.2844898 0.000000
## [45,] 38.1177551 0.000000 44.4544898 0.000000
## [46,] 37.8377551 0.000000 45.1944898 0.000000
## [47,] 43.8077551 0.000000  5.5644898 0.000000
## [48,] 58.5777551 0.000000 43.0044898 0.000000
## [49,] 60.2977551 0.000000 45.4844898 0.000000
## [50,] 33.2677551 0.000000 12.5544898 0.000000
## [51,] 40.5277551 0.000000 43.6544898 0.000000
## [52,] 36.1477551 0.000000 43.4244898 0.000000
## [53,] 43.5577551 0.000000 45.7844898 0.000000
## [54,] 46.8677551 0.000000  0.0000000 0.000000
## [55,] 55.2277551 0.000000 42.9544898 0.000000
## [56,] 53.3177551 0.000000 55.7444898 4.847347
## 
## $B
##                       [,1]
## b0              95.3587175
## b1_x1           -2.9213119
## b2_x2            6.1469387
## b3_x3            0.2059982
## b4_x4            0.7283636
## b5_(x1-k1.1)+    2.7449916
## b6_(x1-k1.2)+    0.7954129
## b7_(x2-k2.1)+   -5.3197766
## b8_(x2-k2.2)+  -18.0705567
## b9_(x3-k3.1)+   -0.2144538
## b10_(x3-k3.2)+   0.2853691
## b11_(x4-k4.1)+  -0.7619877
## b12_(x4-k4.2)+   0.9034632
#UJI SIGNIFIKANSI 2 TITIK KNOT
uji=function(alpha,parameter) 
{ 
  # ----  membaca titik knot optimal (GCV terkecil) ----
  knot2=read.csv("C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Data Titik Knot 2.CSV", header=TRUE) 
  knot2=as.matrix(knot2) 
  knot2=knot2[,-1] #buang kolom index baris 
  knot2=knot2[order(knot2[,1]),] #urutkan berdasarkan GCV terkecil 
  
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-parameter-1 
  dataA=data[,(parameter+2):M] 
  dataA=as.matrix(dataA) 
  knotopt=as.numeric(knot2[1,4:(3+2*m)]) #knot X1-X4 pada baris GCV terkecil (2 knot per variabel) 
  aa=rep(1,N) 
  data1=matrix(ncol=2*m,nrow=N) 
  data2=data[,2:M] #data x saja 
  
  for (j in 1:(2*m))  
  {  
    b=ceiling(j/2) 
    for (k in 1:N)  
    {  
      if (data[k,(b+parameter+1)]<knotopt[j]) data1[k,j]=0 else  
        data1[k,j]=data[k,(b+parameter+1)]-knotopt[j] 
    } 
  } 
  mx=as.matrix(cbind(aa,data2,data1)) 
  C=pinv(t(mx)%*%mx) 
  B=C%*%(t(mx)%*%data[,1]) 
  np=nrow(B) #banyaknya parameter 
  yhat=mx%*%B 
  res=data[,1]-yhat 
  SSE=sum((res)^2) 
  SSR=sum((yhat-mean(data[,1]))^2) 
  SST=sum((data[,1]-mean(data[,1]))^2) 
  MSE=SSE/(N) 
  MSR=SSR/(np-1) 
  Rsq=(SSR/(SSR+SSE))*100 
  
  rownames(B) = c("b0",
                  paste0("b", 1:m, "_x", 1:m),
                  paste0("b", (m + 1):(3 * m), "_(x", rep(1:m, each = 2), "-k", rep(1:m, each = 2), ".", rep(1:2, m), ")+"))
  
  # ----  uji simultan ----
  Fhit=MSR/MSE 
  pvalue=pf(Fhit,(np-1),(N-np),lower.tail=FALSE) 
  cat("\n[ UJI SIMULTAN | SPLINE 2 KNOT ]\n\n")
  cat("  | F hitung     :", format(Fhit, digits=8), "\n")
  cat("  | p-value      :", format(pvalue, digits=8), "\n")
  if (pvalue<=alpha) 
  { 
    cat("  | Keputusan    : Tolak Ho\n")
    cat("  | Kesimpulan   : minimal terdapat 1 variabel bebas yang signifikan\n")
  } else 
  { 
    cat("  | Keputusan    : Gagal Tolak Ho\n")
    cat("  | Kesimpulan   : semua variabel bebas tidak berpengaruh signifikan\n")
  } 
  
  # ----  uji parsial ----
  thit=rep(NA,np) 
  pval=rep(NA,np) 
  SE=sqrt(diag(MSE*C)) 
  cat("\n[ UJI PARSIAL | SPLINE 2 KNOT ]\n\n")
  for (i in 1:np) 
  { 
    thit[i]=B[i,1]/SE[i] 
    pval[i]=2*(pt(abs(thit[i]),(N-np),lower.tail=FALSE)) 
    ket=if (pval[i]<=alpha) "Signifikan (Tolak Ho)" else "Tidak signifikan (Gagal Tolak Ho)"
    cat(sprintf("  > %-14s : t = %9.4f | p = %8.6f | %s\n", rownames(B)[i], thit[i], pval[i], ket))
  } 
  
  # ----  anova ----
  cat("\n[ ANALYSIS OF VARIANCE ]\n\n")
  cat(sprintf("  %-8s %4s %14s %14s %10s\n", "Sumber", "df", "SS", "MS", "Fhit"))
  cat(sprintf("  %-8s %4d %14.4f %14.4f %10.4f\n", "Regresi", np-1, SSR, MSR, Fhit))
  cat(sprintf("  %-8s %4d %14.4f %14.4f\n", "Error", N-np, SSE, MSE))
  cat(sprintf("  %-8s %4d %14.4f\n", "Total", N-1, SST))
  cat("\n  | s            :", format(sqrt(MSE), digits=6), "\n")
  cat("  | R-square     :", format(Rsq, digits=6), "%\n")
  cat("  | p-value (F)  :", format(pvalue, digits=8), "\n\n")
  
  write.csv(res, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji Residual Titik Knot 2.CSV") 
  write.csv(mx, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji MX Titik Knot 2.CSV") 
  write.csv(yhat, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji yhat Titik Knot 2.CSV") 
} 
uji(0.1, 0)
## 
## [ UJI SIMULTAN | SPLINE 2 KNOT ]
## 
##   | F hitung     : 19.73097 
##   | p-value      : 1.0756193e-13 
##   | Keputusan    : Tolak Ho
##   | Kesimpulan   : minimal terdapat 1 variabel bebas yang signifikan
## 
## [ UJI PARSIAL | SPLINE 2 KNOT ]
## 
##   > b0             : t =    1.2829 | p = 0.206414 | Tidak signifikan (Gagal Tolak Ho)
##   > b1_x1          : t =   -3.1999 | p = 0.002583 | Signifikan (Tolak Ho)
##   > b2_x2          : t =    1.4435 | p = 0.156128 | Tidak signifikan (Gagal Tolak Ho)
##   > b3_x3          : t =    1.4449 | p = 0.155735 | Tidak signifikan (Gagal Tolak Ho)
##   > b4_x4          : t =    2.2723 | p = 0.028125 | Signifikan (Tolak Ho)
##   > b5_(x1-k1.1)+  : t =    2.9751 | p = 0.004790 | Signifikan (Tolak Ho)
##   > b6_(x1-k1.2)+  : t =    1.1858 | p = 0.242220 | Tidak signifikan (Gagal Tolak Ho)
##   > b7_(x2-k2.1)+  : t =   -1.2366 | p = 0.222963 | Tidak signifikan (Gagal Tolak Ho)
##   > b8_(x2-k2.2)+  : t =   -4.8730 | p = 0.000015 | Signifikan (Tolak Ho)
##   > b9_(x3-k3.1)+  : t =   -1.4662 | p = 0.149862 | Tidak signifikan (Gagal Tolak Ho)
##   > b10_(x3-k3.2)+ : t =    1.4127 | p = 0.164956 | Tidak signifikan (Gagal Tolak Ho)
##   > b11_(x4-k4.1)+ : t =   -2.3388 | p = 0.024060 | Signifikan (Tolak Ho)
##   > b12_(x4-k4.2)+ : t =    5.3276 | p = 0.000003 | Signifikan (Tolak Ho)
## 
## [ ANALYSIS OF VARIANCE ]
## 
##   Sumber     df             SS             MS       Fhit
##   Regresi    12       183.7252        15.3104    19.7310
##   Error      43        43.4537         0.7760
##   Total      55       227.1789
## 
##   | s            : 0.880886 
##   | R-square     : 80.8725 %
##   | p-value (F)  : 1.0756193e-13
#PEMILIHAN 3 TITIK KNOT
GCV3=function(data) 
{ 
  parameter=0 
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-parameter-1 
  dataA=data[,(parameter+2):M] 
  dataA=as.matrix(dataA) 
  F=diag(N) 
  nk=50 #nk=banyaknya alternatif titik knot yang akan dicoba  
  knot1=matrix(ncol=m,nrow=nk) 
  for (i in (1:m)) #membuat knot 
  { 
    a=seq(min(dataA[,i]),max(dataA[,i]),length.out=nk) 
    knot1[,i]=t(as.matrix(a)) 
  } 
  a1=length(knot1[,1]) 
  knot1=as.matrix(knot1[2:(a1-1),]) 
  a2=nk-2 
  z=(a2*(a2-1)*(a2-2)/6) 
  knot2=cbind(rep(NA,(z+1))) 
  for (i in (1:m)) 
  { 
    knot=rbind(rep(NA,3)) 
    for ( j in 1:(a2-2)) 
    { 
      for (k in (j+1):(a2-1)) 
      { 
        for (g in (k+1):a2) 
        { 
          xx=cbind(knot1[j,i],knot1[k,i],knot1[g,i]) 
          knot=rbind(knot,xx) 
        } 
      } 
    } 
    knot2=cbind(knot2,knot) 
  } 
  knot2=knot2[2:(z+1),2:(3*m+1)] 
  a3=nrow(knot2) 
  aa=rep(1,N) 
  data1=matrix(ncol=3*m,nrow=N) 
  data2=data[,2:M] #data x saja  
  nk1=nrow(knot2) 
  GCV=as.matrix(rep(NA,nk1),ncol=1);colnames(GCV)<-"GCV" 
  MSE=as.matrix(rep(NA,nk1),ncol=1);colnames(MSE)<-"MSE" 
  SSE=rep(NA,nk1) 
  SSR=rep(NA,nk1)  
  Rsq=as.matrix(rep(NA,nk1),ncol=1);colnames(Rsq)<-"Rsq" 
  knotke=matrix(c(1:nk1),ncol=1);colnames(knotke)<-"knot_ke" 
  for (i in 1:a3) 
  { 
    data1=matrix(ncol=3*m,nrow=N) 
    for (j in 1:(3*m))  
    {  
      b=ceiling(j/3) 
      for (k in 1:N)  
      {  
        if (data[k,(b+parameter+1)]<knot2[i,j]) data1[k,j]=0 else  
          data1[k,j]=data[k,(b+parameter+1)]-knot2[i,j] 
      } 
    } 
    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) 
    A1=(F-A) 
    A2=(sum(diag(A1))/N)^2 
    GCV[i]=MSE[i]/A2 
  } 
  dataAll=as.matrix(cbind(GCV,Rsq,knotke,knot2)) 
  dataG=dataAll[order(GCV),-2] 
  write.csv(dataAll, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Data Titik Knot 3.CSV")
  
  # ----  hasil GCV terkecil ----
  cat("\n[ HASIL GCV TERKECIL | SPLINE 3 KNOT ]\n\n")
  cat("  | GCV minimum  :", format(dataG[1,1], digits=8), "\n")
  cat("  | Knot ke-     :", dataG[1,2], "\n")
  for (v in 1:m) cat("  | Knot X", v, "      : ", paste(format(dataG[1,(2+(v-1)*3+1):(2+v*3)], digits=6), collapse=" ; "), "\n", sep="")
  
  cat("\n[ 10 NILAI GCV TERKECIL ]\n\n")
  print(dataG[1:10,]) 
  
  # ----  hitung ulang B pada knot dengan GCV terkecil ----
  knotgcv=knot2[dataG[1,2],] 
  datagcv1=matrix(ncol=3*m,nrow=N)  
  for (j in 1:(3*m))  
  {  
    b=ceiling(j/3) 
    for (k in 1:N)  
    {  
      if (data[k,(b+parameter+1)]<knotgcv[j]) datagcv1[k,j]=0 else  
        datagcv1[k,j]=data[k,(b+parameter+1)]-knotgcv[j]  
    }  
  } 
  mxgcv=as.matrix(cbind(aa,data2,datagcv1))  
  C=pinv(t(mxgcv)%*%mxgcv) 
  B=C%*%(t(mxgcv)%*%data[,1]) 
  
  # ----  estimasi parameter ----
  rownames(B) = c("b0",
                  paste0("b", 1:m, "_x", 1:m),
                  paste0("b", (m + 1):(4 * m), "_(x", rep(1:m, each = 3), "-k", rep(1:m, each = 3), ".", rep(1:3, m), ")+"))
  cat("\n[ ESTIMASI PARAMETER | TITIK KNOT KE-3 ]\n\n")
  print(B)
  cat("\n")
  
  return(list(knotgcv=knotgcv,mingcv=dataG[1,1],mxgcv=mxgcv,B=B)) 
} 
GCV3(data)
## 
## [ HASIL GCV TERKECIL | SPLINE 3 KNOT ]
## 
##   | GCV minimum  : 1.4442458 
##   | Knot ke-     : 2200 
##   | Knot X1      : 61.1324 ; 61.8541 ; 76.2867
##   | Knot X2      : 11.3820 ; 11.5367 ; 14.6306
##   | Knot X3      :  7.69224 ; 10.62041 ; 69.18367
##   | Knot X4      : 25.0255 ; 27.4492 ; 75.9227
## 
## [ 10 NILAI GCV TERKECIL ]
## 
##            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
## 
## [ ESTIMASI PARAMETER | TITIK KNOT KE-3 ]
## 
##                        [,1]
## b0              -4.87954772
## b1_x1           -0.57070096
## b2_x2            1.29861827
## b3_x3            0.20162854
## b4_x4            1.23897094
## b5_(x1-k1.1)+   -2.60712939
## b6_(x1-k1.2)+    3.03208076
## b7_(x1-k1.3)+    0.76491110
## b8_(x2-k2.1)+   13.80910095
## b9_(x2-k2.2)+  -14.12188194
## b10_(x2-k2.3)+ -19.59971920
## b11_(x3-k3.1)+  -0.22960609
## b12_(x3-k3.2)+   0.02361872
## b13_(x3-k3.3)+   0.25980650
## b14_(x4-k4.1)+  -1.94377923
## b15_(x4-k4.2)+   0.67438516
## b16_(x4-k4.3)+   0.92445503
## $knotgcv
##  [1] 61.132449 61.854082 76.286735 11.382041 11.536735 14.630612  7.692245
##  [8] 10.620408 69.183673 25.025510 27.449184 75.922653
## 
## $mingcv
##      GCV 
## 1.444246 
## 
## $mxgcv
##       aa    X1    X2    X3    X4                                         
##  [1,]  1 67.88 13.00 14.86 72.04  6.747551  6.0259184 0.0000000 1.6179592
##  [2,]  1 71.02 12.89 14.38 51.19  9.887551  9.1659184 0.0000000 1.5079592
##  [3,]  1 61.98 13.58 18.56 73.59  0.847551  0.1259184 0.0000000 2.1979592
##  [4,]  1 68.96 12.78 29.61 43.00  7.827551  7.1059184 0.0000000 1.3979592
##  [5,]  1 67.40 13.31 14.89 74.71  6.267551  5.5459184 0.0000000 1.9279592
##  [6,]  1 69.04 12.55 55.70 71.41  7.907551  7.1859184 0.0000000 1.1679592
##  [7,]  1 76.22 12.50 10.46 67.09 15.087551 14.3659184 0.0000000 1.1179592
##  [8,]  1 62.90 14.13 15.59 80.01  1.767551  1.0459184 0.0000000 2.7479592
##  [9,]  1 65.16 14.70 75.04 30.11  4.027551  3.3059184 0.0000000 3.3179592
## [10,]  1 69.24 12.90 31.21 80.02  8.107551  7.3859184 0.0000000 1.5179592
## [11,]  1 74.28 12.60 20.67 67.03 13.147551 12.4259184 0.0000000 1.2179592
## [12,]  1 75.81 12.08  8.67 47.87 14.677551 13.9559184 0.0000000 0.6979592
## [13,]  1 71.78 12.39 10.74 65.98 10.647551  9.9259184 0.0000000 1.0079592
## [14,]  1 64.14 12.33  8.54 25.74  3.007551  2.2859184 0.0000000 0.9479592
## [15,]  1 70.38 11.56 19.95 65.77  9.247551  8.5259184 0.0000000 0.1779592
## [16,]  1 60.75 11.79 28.13 67.17  0.000000  0.0000000 0.0000000 0.4079592
## [17,]  1 75.57 12.02 14.71 36.88 14.437551 13.7159184 0.0000000 0.6379592
## [18,]  1 74.09 12.04 10.28 65.69 12.957551 12.2359184 0.0000000 0.6579592
## [19,]  1 77.53 11.57  6.56 64.76 16.397551 15.6759184 1.2432653 0.1879592
## [20,]  1 73.93 11.15 25.23 25.55 12.797551 12.0759184 0.0000000 0.0000000
## [21,]  1 65.53 11.81  4.21 22.68  4.397551  3.6759184 0.0000000 0.4279592
## [22,]  1 67.71 13.64 28.93 67.95  6.577551  5.8559184 0.0000000 2.2579592
## [23,]  1 60.05 13.64 37.68 79.44  0.000000  0.0000000 0.0000000 2.2579592
## [24,]  1 63.84 12.89 10.14 41.94  2.707551  1.9859184 0.0000000 1.5079592
## [25,]  1 72.03 11.96 10.16 69.38 10.897551 10.1759184 0.0000000 0.5779592
## [26,]  1 64.68 11.92 17.31 68.86  3.547551  2.8259184 0.0000000 0.5379592
## [27,]  1 72.55 12.28 11.73 59.18 11.417551 10.6959184 0.0000000 0.8979592
## [28,]  1 74.61 12.38  5.76 66.22 13.477551 12.7559184 0.0000000 0.9979592
## [29,]  1 70.17 11.86  6.35 70.11  9.037551  8.3159184 0.0000000 0.4779592
## [30,]  1 73.15 12.10  4.65 48.85 12.017551 11.2959184 0.0000000 0.7179592
## [31,]  1 71.15 12.19  4.83 68.84 10.017551  9.2959184 0.0000000 0.8079592
## [32,]  1 70.08 12.88  3.30 65.59  8.947551  8.2259184 0.0000000 1.4979592
## [33,]  1 69.27 12.59 14.48 72.19  8.137551  7.4159184 0.0000000 1.2079592
## [34,]  1 70.16 12.36 15.39 50.71  9.027551  8.3059184 0.0000000 0.9779592
## [35,]  1 76.50 12.37  9.17 68.82 15.367551 14.6459184 0.2132653 0.9879592
## [36,]  1 62.07 13.92 21.93 77.10  0.937551  0.2159184 0.0000000 2.5379592
## [37,]  1 66.82 14.80  6.11 79.10  5.687551  4.9659184 0.0000000 3.4179592
## [38,]  1 66.44 13.29 11.21 71.94  5.307551  4.5859184 0.0000000 1.9079592
## [39,]  1 67.38 12.99 18.72 41.10  6.247551  5.5259184 0.0000000 1.6079592
## [40,]  1 67.81 12.20  5.75 66.97  6.677551  5.9559184 0.0000000 0.8179592
## [41,]  1 66.91 12.63 26.30 45.79  5.777551  5.0559184 0.0000000 1.2479592
## [42,]  1 65.65 13.73 38.11 75.83  4.517551  3.7959184 0.0000000 2.3479592
## [43,]  1 73.01 12.71 33.79 72.87 11.877551 11.1559184 0.0000000 1.3279592
## [44,]  1 67.41 12.69 56.63 71.31  6.277551  5.5559184 0.0000000 1.3079592
## [45,]  1 70.04 12.90 45.81 69.48  8.907551  8.1859184 0.0000000 1.5179592
## [46,]  1 64.68 12.54 45.53 70.22  3.547551  2.8259184 0.0000000 1.1579592
## [47,]  1 71.54 12.48 51.50 30.59 10.407551  9.6859184 0.0000000 1.0979592
## [48,]  1 65.50 12.11 66.27 68.03  4.367551  3.6459184 0.0000000 0.7279592
## [49,]  1 70.50 12.47 67.99 70.51  9.367551  8.6459184 0.0000000 1.0879592
## [50,]  1 65.04 11.98 40.96 37.58  3.907551  3.1859184 0.0000000 0.5979592
## [51,]  1 64.55 12.51 48.22 68.68  3.417551  2.6959184 0.0000000 1.1279592
## [52,]  1 72.77 12.40 43.84 68.45 11.637551 10.9159184 0.0000000 1.0179592
## [53,]  1 71.22 11.77 51.25 70.81 10.087551  9.3659184 0.0000000 0.3879592
## [54,]  1 77.73 12.82 54.56 21.39 16.597551 15.8759184 1.4432653 1.4379592
## [55,]  1 63.93 11.74 62.92 67.98  2.797551  2.0759184 0.0000000 0.3579592
## [56,]  1 62.71 14.94 61.01 80.77  1.577551  0.8559184 0.0000000 3.5579592
##                                                                                
##  [1,] 1.46326531 0.00000000  7.1677551  4.2395918 0.000000 47.0144898 44.590816
##  [2,] 1.35326531 0.00000000  6.6877551  3.7595918 0.000000 26.1644898 23.740816
##  [3,] 2.04326531 0.00000000 10.8677551  7.9395918 0.000000 48.5644898 46.140816
##  [4,] 1.24326531 0.00000000 21.9177551 18.9895918 0.000000 17.9744898 15.550816
##  [5,] 1.77326531 0.00000000  7.1977551  4.2695918 0.000000 49.6844898 47.260816
##  [6,] 1.01326531 0.00000000 48.0077551 45.0795918 0.000000 46.3844898 43.960816
##  [7,] 0.96326531 0.00000000  2.7677551  0.0000000 0.000000 42.0644898 39.640816
##  [8,] 2.59326531 0.00000000  7.8977551  4.9695918 0.000000 54.9844898 52.560816
##  [9,] 3.16326531 0.06938776 67.3477551 64.4195918 5.856327  5.0844898  2.660816
## [10,] 1.36326531 0.00000000 23.5177551 20.5895918 0.000000 54.9944898 52.570816
## [11,] 1.06326531 0.00000000 12.9777551 10.0495918 0.000000 42.0044898 39.580816
## [12,] 0.54326531 0.00000000  0.9777551  0.0000000 0.000000 22.8444898 20.420816
## [13,] 0.85326531 0.00000000  3.0477551  0.1195918 0.000000 40.9544898 38.530816
## [14,] 0.79326531 0.00000000  0.8477551  0.0000000 0.000000  0.7144898  0.000000
## [15,] 0.02326531 0.00000000 12.2577551  9.3295918 0.000000 40.7444898 38.320816
## [16,] 0.25326531 0.00000000 20.4377551 17.5095918 0.000000 42.1444898 39.720816
## [17,] 0.48326531 0.00000000  7.0177551  4.0895918 0.000000 11.8544898  9.430816
## [18,] 0.50326531 0.00000000  2.5877551  0.0000000 0.000000 40.6644898 38.240816
## [19,] 0.03326531 0.00000000  0.0000000  0.0000000 0.000000 39.7344898 37.310816
## [20,] 0.00000000 0.00000000 17.5377551 14.6095918 0.000000  0.5244898  0.000000
## [21,] 0.27326531 0.00000000  0.0000000  0.0000000 0.000000  0.0000000  0.000000
## [22,] 2.10326531 0.00000000 21.2377551 18.3095918 0.000000 42.9244898 40.500816
## [23,] 2.10326531 0.00000000 29.9877551 27.0595918 0.000000 54.4144898 51.990816
## [24,] 1.35326531 0.00000000  2.4477551  0.0000000 0.000000 16.9144898 14.490816
## [25,] 0.42326531 0.00000000  2.4677551  0.0000000 0.000000 44.3544898 41.930816
## [26,] 0.38326531 0.00000000  9.6177551  6.6895918 0.000000 43.8344898 41.410816
## [27,] 0.74326531 0.00000000  4.0377551  1.1095918 0.000000 34.1544898 31.730816
## [28,] 0.84326531 0.00000000  0.0000000  0.0000000 0.000000 41.1944898 38.770816
## [29,] 0.32326531 0.00000000  0.0000000  0.0000000 0.000000 45.0844898 42.660816
## [30,] 0.56326531 0.00000000  0.0000000  0.0000000 0.000000 23.8244898 21.400816
## [31,] 0.65326531 0.00000000  0.0000000  0.0000000 0.000000 43.8144898 41.390816
## [32,] 1.34326531 0.00000000  0.0000000  0.0000000 0.000000 40.5644898 38.140816
## [33,] 1.05326531 0.00000000  6.7877551  3.8595918 0.000000 47.1644898 44.740816
## [34,] 0.82326531 0.00000000  7.6977551  4.7695918 0.000000 25.6844898 23.260816
## [35,] 0.83326531 0.00000000  1.4777551  0.0000000 0.000000 43.7944898 41.370816
## [36,] 2.38326531 0.00000000 14.2377551 11.3095918 0.000000 52.0744898 49.650816
## [37,] 3.26326531 0.16938776  0.0000000  0.0000000 0.000000 54.0744898 51.650816
## [38,] 1.75326531 0.00000000  3.5177551  0.5895918 0.000000 46.9144898 44.490816
## [39,] 1.45326531 0.00000000 11.0277551  8.0995918 0.000000 16.0744898 13.650816
## [40,] 0.66326531 0.00000000  0.0000000  0.0000000 0.000000 41.9444898 39.520816
## [41,] 1.09326531 0.00000000 18.6077551 15.6795918 0.000000 20.7644898 18.340816
## [42,] 2.19326531 0.00000000 30.4177551 27.4895918 0.000000 50.8044898 48.380816
## [43,] 1.17326531 0.00000000 26.0977551 23.1695918 0.000000 47.8444898 45.420816
## [44,] 1.15326531 0.00000000 48.9377551 46.0095918 0.000000 46.2844898 43.860816
## [45,] 1.36326531 0.00000000 38.1177551 35.1895918 0.000000 44.4544898 42.030816
## [46,] 1.00326531 0.00000000 37.8377551 34.9095918 0.000000 45.1944898 42.770816
## [47,] 0.94326531 0.00000000 43.8077551 40.8795918 0.000000  5.5644898  3.140816
## [48,] 0.57326531 0.00000000 58.5777551 55.6495918 0.000000 43.0044898 40.580816
## [49,] 0.93326531 0.00000000 60.2977551 57.3695918 0.000000 45.4844898 43.060816
## [50,] 0.44326531 0.00000000 33.2677551 30.3395918 0.000000 12.5544898 10.130816
## [51,] 0.97326531 0.00000000 40.5277551 37.5995918 0.000000 43.6544898 41.230816
## [52,] 0.86326531 0.00000000 36.1477551 33.2195918 0.000000 43.4244898 41.000816
## [53,] 0.23326531 0.00000000 43.5577551 40.6295918 0.000000 45.7844898 43.360816
## [54,] 1.28326531 0.00000000 46.8677551 43.9395918 0.000000  0.0000000  0.000000
## [55,] 0.20326531 0.00000000 55.2277551 52.2995918 0.000000 42.9544898 40.530816
## [56,] 3.40326531 0.30938776 53.3177551 50.3895918 0.000000 55.7444898 53.320816
##               
##  [1,] 0.000000
##  [2,] 0.000000
##  [3,] 0.000000
##  [4,] 0.000000
##  [5,] 0.000000
##  [6,] 0.000000
##  [7,] 0.000000
##  [8,] 4.087347
##  [9,] 0.000000
## [10,] 4.097347
## [11,] 0.000000
## [12,] 0.000000
## [13,] 0.000000
## [14,] 0.000000
## [15,] 0.000000
## [16,] 0.000000
## [17,] 0.000000
## [18,] 0.000000
## [19,] 0.000000
## [20,] 0.000000
## [21,] 0.000000
## [22,] 0.000000
## [23,] 3.517347
## [24,] 0.000000
## [25,] 0.000000
## [26,] 0.000000
## [27,] 0.000000
## [28,] 0.000000
## [29,] 0.000000
## [30,] 0.000000
## [31,] 0.000000
## [32,] 0.000000
## [33,] 0.000000
## [34,] 0.000000
## [35,] 0.000000
## [36,] 1.177347
## [37,] 3.177347
## [38,] 0.000000
## [39,] 0.000000
## [40,] 0.000000
## [41,] 0.000000
## [42,] 0.000000
## [43,] 0.000000
## [44,] 0.000000
## [45,] 0.000000
## [46,] 0.000000
## [47,] 0.000000
## [48,] 0.000000
## [49,] 0.000000
## [50,] 0.000000
## [51,] 0.000000
## [52,] 0.000000
## [53,] 0.000000
## [54,] 0.000000
## [55,] 0.000000
## [56,] 4.847347
## 
## $B
##                        [,1]
## b0              -4.87954772
## b1_x1           -0.57070096
## b2_x2            1.29861827
## b3_x3            0.20162854
## b4_x4            1.23897094
## b5_(x1-k1.1)+   -2.60712939
## b6_(x1-k1.2)+    3.03208076
## b7_(x1-k1.3)+    0.76491110
## b8_(x2-k2.1)+   13.80910095
## b9_(x2-k2.2)+  -14.12188194
## b10_(x2-k2.3)+ -19.59971920
## b11_(x3-k3.1)+  -0.22960609
## b12_(x3-k3.2)+   0.02361872
## b13_(x3-k3.3)+   0.25980650
## b14_(x4-k4.1)+  -1.94377923
## b15_(x4-k4.2)+   0.67438516
## b16_(x4-k4.3)+   0.92445503
#UJI SIGNIFIKANSI 3 TITIK KNOT
uji=function(alpha,parameter) 
{ 
  # membaca titik knot optimal (GCV terkecil)
  knot2=read.csv("C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Data Titik Knot 3.CSV", header=TRUE) 
  knot2=as.matrix(knot2) 
  knot2=knot2[,-1] #buang kolom index baris 
  knot2=knot2[order(knot2[,1]),] #urutkan berdasarkan GCV terkecil 
  
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-parameter-1 
  dataA=data[,(parameter+2):M] 
  dataA=as.matrix(dataA) 
  knotopt=as.numeric(knot2[1,4:(3+3*m)]) #knot X1-X4 pada baris GCV terkecil (3 knot per variabel) 
  aa=rep(1,N) 
  data1=matrix(ncol=3*m,nrow=N) 
  data2=data[,2:M] #data x saja 
  
  for (j in 1:(3*m))  
  {  
    b=ceiling(j/3) 
    for (k in 1:N)  
    {  
      if (data[k,(b+parameter+1)]<knotopt[j]) data1[k,j]=0 else  
        data1[k,j]=data[k,(b+parameter+1)]-knotopt[j] 
    } 
  } 
  mx=as.matrix(cbind(aa,data2,data1)) 
  C=pinv(t(mx)%*%mx) 
  B=C%*%(t(mx)%*%data[,1]) 
  np=nrow(B) #banyaknya parameter 
  yhat=mx%*%B 
  res=data[,1]-yhat 
  SSE=sum((res)^2) 
  SSR=sum((yhat-mean(data[,1]))^2) 
  SST=sum((data[,1]-mean(data[,1]))^2) 
  MSE=SSE/(N) 
  MSR=SSR/(np-1) 
  Rsq=(SSR/(SSR+SSE))*100 
  
  rownames(B) = c("b0",
                  paste0("b", 1:m, "_x", 1:m),
                  paste0("b", (m + 1):(4 * m), "_(x", rep(1:m, each = 3), "-k", rep(1:m, each = 3), ".", rep(1:3, m), ")+"))
  
  # UJI SIMULTAN
  Fhit=MSR/MSE 
  pvalue=pf(Fhit,(np-1),(N-np),lower.tail=FALSE) 
  cat("\n[ UJI SIMULTAN | SPLINE 3 KNOT ]\n\n")
  cat("  | F hitung     :", format(Fhit, digits=8), "\n")
  cat("  | p-value      :", format(pvalue, digits=8), "\n")
  if (pvalue<=alpha) 
  { 
    cat("  | Keputusan    : Tolak Ho\n")
    cat("  | Kesimpulan   : minimal terdapat 1 variabel bebas yang signifikan\n")
  } else 
  { 
    cat("  | Keputusan    : Gagal Tolak Ho\n")
    cat("  | Kesimpulan   : semua variabel bebas tidak berpengaruh signifikan\n")
  } 
  
  # UJI PARSIAL 
  thit=rep(NA,np) 
  pval=rep(NA,np) 
  SE=sqrt(diag(MSE*C)) 
  cat("\n[ UJI PARSIAL | SPLINE 3 KNOT ]\n\n")
  for (i in 1:np) 
  { 
    thit[i]=B[i,1]/SE[i] 
    pval[i]=2*(pt(abs(thit[i]),(N-np),lower.tail=FALSE)) 
    ket=if (pval[i]<=alpha) "Signifikan (Tolak Ho)" else "Tidak signifikan (Gagal Tolak Ho)"
    cat(sprintf("  > %-14s : t = %9.4f | p = %8.6f | %s\n", rownames(B)[i], thit[i], pval[i], ket))
  } 
  
  # ANOVA 
  cat("\n[ ANALYSIS OF VARIANCE ]\n\n")
  cat(sprintf("  %-8s %4s %14s %14s %10s\n", "Sumber", "df", "SS", "MS", "Fhit"))
  cat(sprintf("  %-8s %4d %14.4f %14.4f %10.4f\n", "Regresi", np-1, SSR, MSR, Fhit))
  cat(sprintf("  %-8s %4d %14.4f %14.4f\n", "Error", N-np, SSE, MSE))
  cat(sprintf("  %-8s %4d %14.4f\n", "Total", N-1, SST))
  cat("\n  | s            :", format(sqrt(MSE), digits=6), "\n")
  cat("  | R-square     :", format(Rsq, digits=6), "%\n")
  cat("  | p-value (F)  :", format(pvalue, digits=8), "\n\n")
  
  write.csv(res, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji Residual Titik Knot 3.CSV") 
  write.csv(mx, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji MX Titik Knot 3.CSV") 
  write.csv(yhat, file="C:\\Users\\LENOVO\\OneDrive\\Documents\\SEMSTER 5\\REGNON\\TUGAS 5 REGNON MATKUL\\TUGAS 5 DATA SKRIPSI\\Output Uji yhat Titik Knot 3.CSV") 
} 
uji(0.1, 0)
## 
## [ UJI SIMULTAN | SPLINE 3 KNOT ]
## 
##   | F hitung     : 15.769172 
##   | p-value      : 2.7621416e-12 
##   | Keputusan    : Tolak Ho
##   | Kesimpulan   : minimal terdapat 1 variabel bebas yang signifikan
## 
## [ UJI PARSIAL | SPLINE 3 KNOT ]
## 
##   > b0             : t =   -0.5160 | p = 0.608760 | Tidak signifikan (Gagal Tolak Ho)
##   > b1_x1          : t =   -0.2898 | p = 0.773496 | Tidak signifikan (Gagal Tolak Ho)
##   > b2_x2          : t =    0.1294 | p = 0.897680 | Tidak signifikan (Gagal Tolak Ho)
##   > b3_x3          : t =    0.7517 | p = 0.456715 | Tidak signifikan (Gagal Tolak Ho)
##   > b4_x4          : t =    2.0245 | p = 0.049803 | Signifikan (Tolak Ho)
##   > b5_(x1-k1.1)+  : t =   -0.6448 | p = 0.522861 | Tidak signifikan (Gagal Tolak Ho)
##   > b6_(x1-k1.2)+  : t =    1.3787 | p = 0.175834 | Tidak signifikan (Gagal Tolak Ho)
##   > b7_(x1-k1.3)+  : t =    1.0472 | p = 0.301445 | Tidak signifikan (Gagal Tolak Ho)
##   > b8_(x2-k2.1)+  : t =    0.5012 | p = 0.619070 | Tidak signifikan (Gagal Tolak Ho)
##   > b9_(x2-k2.2)+  : t =   -0.7666 | p = 0.447909 | Tidak signifikan (Gagal Tolak Ho)
##   > b10_(x2-k2.3)+ : t =   -5.0586 | p = 0.000010 | Signifikan (Tolak Ho)
##   > b11_(x3-k3.1)+ : t =   -0.4422 | p = 0.660799 | Tidak signifikan (Gagal Tolak Ho)
##   > b12_(x3-k3.2)+ : t =    0.0864 | p = 0.931585 | Tidak signifikan (Gagal Tolak Ho)
##   > b13_(x3-k3.3)+ : t =    1.2935 | p = 0.203453 | Tidak signifikan (Gagal Tolak Ho)
##   > b14_(x4-k4.1)+ : t =   -1.6175 | p = 0.113823 | Tidak signifikan (Gagal Tolak Ho)
##   > b15_(x4-k4.2)+ : t =    1.0511 | p = 0.299661 | Tidak signifikan (Gagal Tolak Ho)
##   > b16_(x4-k4.3)+ : t =    5.4967 | p = 0.000003 | Signifikan (Tolak Ho)
## 
## [ ANALYSIS OF VARIANCE ]
## 
##   Sumber     df             SS             MS       Fhit
##   Regresi    16       185.9148        11.6197    15.7692
##   Error      39        41.2642         0.7369
##   Total      55       227.1789
## 
##   | s            : 0.858406 
##   | R-square     : 81.8363 %
##   | p-value (F)  : 2.7621416e-12