#MEMANGGIL LIBRARY YANG DIGUNAKAN#

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

#MEMANGGIL DATA#

data=read.table(file.choose(), header=TRUE)
data
##       X1    X2    X3   X4    X5   X6     Y
## 1  12.10 34.05  8.50 2.22 64.81 40.2 73.84
## 2  12.45 44.19 10.13 2.20 68.65 32.9 76.87
## 3  13.39 38.66  8.99 1.68 69.07 29.7 77.19
## 4  14.38 26.30 10.04 2.16 69.18 23.6 69.08
## 5  17.86 23.36 10.27 1.46 68.34 33.4 78.27
## 6  13.38 10.06 10.87 1.38 70.14 30.1 84.72
## 7  18.78 31.46  9.29 0.70 67.29 29.5 76.69
## 8  16.64 37.08  9.37 0.56 69.15 25.2 77.12
## 9  17.92 17.76  9.91 1.68 65.61 30.7 77.54
## 10 19.15 40.31  9.02 1.74 67.78 34.1 46.10
## 11 12.12 27.66  9.67 0.46 71.66 32.9 80.83
## 12 15.43 24.17  9.20 1.70 65.48 27.9 78.05
## 13 18.82 20.48  8.39 6.33 65.92 15.4 77.06
## 14 12.42 26.92  8.98 4.54 67.55 34.0 79.69
## 15 17.25 24.00  9.14 2.19 69.60 31.6 76.60
## 16 12.51 14.56  9.58 1.27 70.04 35.9 81.16
## 17 18.31 61.03 10.30 1.15 69.64 32.2 46.98
## 18 18.40 32.95  9.85 0.46 70.60 29.4 78.95
## 19  7.04  0.11 12.74 0.01 72.02 21.7 87.96
## 20 14.59  3.95 10.94 0.20 70.98 25.6 73.80
## 21 10.73  1.81 11.31 0.08 72.06 20.7 83.03
## 22 10.53  6.24 11.27 0.17 69.78 25.6 78.05
## 23 16.41 55.11  8.78 1.40 64.41 29.6 41.12
## 24 11.50 35.19  8.96 1.42 67.90 23.8 73.81
## 25  8.54 51.69 10.19 2.22 69.57 27.4 78.14
## 26  7.01 55.31  9.57 3.22 65.56 15.6 77.29
## 27 15.10 64.15  7.06 0.87 70.34 20.3 72.41
## 28  9.23 26.92  8.97 1.85 69.64 16.9 79.92
## 29  7.98 41.28 10.28 1.51 72.28 24.7 82.28
## 30  3.44 14.42 10.41 0.51 72.31 33.8 86.20
## 31  7.87 41.91  9.78 1.78 72.20 17.7 82.42
## 32  8.21 24.26  9.18 1.82 69.09 11.0 76.65
## 33  7.99 41.36  9.69 1.39 70.77 20.2 76.96
## 34  7.47 36.67 10.08 2.02 70.11 32.6 82.50
## 35  8.04 25.69 10.50 2.06 71.24 28.0 84.33
## 36  8.86 55.14  9.37 3.08 63.47 20.7 70.54
## 37 16.39 63.23  6.99 1.20 69.58 31.8 65.87
## 38  7.54 56.82  9.90 3.57 66.89 28.9 75.32
## 39  8.69 49.20  9.93 3.18 70.27 18.4 81.16
## 40 11.66 47.18  9.20 2.85 72.24 22.4 80.35
## 41  7.44 33.30  9.14 1.51 69.59 14.4 85.35
## 42 11.38 35.54  9.13 0.72 67.88 17.7 78.37
## 43  8.79 42.52  9.74 3.26 67.82 21.8 75.14
## 44  7.89 39.91  9.86 2.67 67.71 17.7 76.75
## 45  8.06 24.70  9.32 2.79 69.54 16.0 57.85
## 46  9.08 37.52  9.28 2.18 70.25  9.6 80.30

#ANALISIS STATISTIKA DESKRIPTIF#

stat.desc(data)
##                       X1          X2          X3         X4           X5
## nbr.val       46.0000000   46.000000  46.0000000 46.0000000 4.600000e+01
## nbr.null       0.0000000    0.000000   0.0000000  0.0000000 0.000000e+00
## nbr.na         0.0000000    0.000000   0.0000000  0.0000000 0.000000e+00
## min            3.4400000    0.110000   6.9900000  0.0100000 6.347000e+01
## max           19.1500000   64.150000  12.7400000  6.3300000 7.231000e+01
## range         15.7100000   64.040000   5.7500000  6.3200000 8.840000e+00
## sum          548.7700000 1546.130000 443.0700000 83.4200000 3.176010e+03
## median        11.5800000   34.620000   9.6250000  1.6900000 6.957500e+01
## mean          11.9297826   33.611522   9.6319565  1.8134783 6.904370e+01
## SE.mean        0.6135164    2.403191   0.1447615  0.1788228 3.302387e-01
## CI.mean.0.95   1.2356854    4.840275   0.2915647  0.3601677 6.651349e-01
## var           17.3145088  265.665018   0.9639716  1.4709699 5.016650e+00
## std.dev        4.1610706   16.299234   0.9818206  1.2128355 2.239788e+00
## coef.var       0.3487969    0.484930   0.1019337  0.6687896 3.244015e-02
##                        X6            Y
## nbr.val        46.0000000   46.0000000
## nbr.null        0.0000000    0.0000000
## nbr.na          0.0000000    0.0000000
## min             9.6000000   41.1200000
## max            40.2000000   87.9600000
## range          30.6000000   46.8400000
## sum          1163.3000000 3480.6100000
## median         25.6000000   77.4150000
## mean           25.2891304   75.6654348
## SE.mean         1.0659655    1.4454298
## CI.mean.0.95    2.1469647    2.9112451
## var            52.2689903   96.1063009
## std.dev         7.2297296    9.8033821
## coef.var        0.2858829    0.1295622
model=(lm(formula=Y~X1+X2+X3+X4+X5+X6,data=data))
model
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5 + X6, data = data)
## 
## Coefficients:
## (Intercept)           X1           X2           X3           X4           X5  
##    23.41040     -0.94922     -0.27140     -1.10771      1.14665      1.16243  
##          X6  
##     0.04083
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5 + X6, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -25.570  -1.203   1.673   4.395   9.708 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 23.41040   50.04453   0.468  0.64254   
## X1          -0.94922    0.35709  -2.658  0.01133 * 
## X2          -0.27140    0.09127  -2.974  0.00502 **
## X3          -1.10771    1.66417  -0.666  0.50957   
## X4           1.14665    1.18045   0.971  0.33735   
## X5           1.16243    0.65072   1.786  0.08182 . 
## X6           0.04083    0.18566   0.220  0.82708   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.933 on 39 degrees of freedom
## Multiple R-squared:  0.4325, Adjusted R-squared:  0.3452 
## F-statistic: 4.954 on 6 and 39 DF,  p-value: 0.0007463
vif(model)
##       X1       X2       X3       X4       X5       X6 
## 1.578681 1.582304 1.908965 1.465681 1.518962 1.288375

#SCATTERPLOT#

#Variabel Y dengan X1
plot(data$X1,data$Y,main="Scatterplot Variabel Y dengan X1", 
     xlab="X1", ylab="Y",col="black") 
abline(lm(data$Y~data$X1), col="darkred", lwd=3)

#Variabel Y dengan X2
plot(data$X2,data$Y,main="Scatterplot Variabel Y dengan X2", 
     xlab="X2", ylab="Y",col="black") 
abline(lm(data$Y~data$X2), col="darkred", lwd=3)

#Variabel Y dengan X3
plot(data$X3,data$Y,main="Scatterplot Variabel Y dengan X3", 
     xlab="X3", ylab="Y",col="black") 
abline(lm(data$Y~data$X3), col="darkred", lwd=3)

#Variabel Y dengan X4
plot(data$X4,data$Y,main="Scatterplot Variabel Y dengan X4", 
     xlab="X4", ylab="Y",col="black") 
abline(lm(data$Y~data$X4), col="darkred", lwd=3)

#Variabel Y dengan X5
plot(data$X5,data$Y,main="Scatterplot Variabel Y dengan X5", 
     xlab="X5", ylab="Y",col="black") 
abline(lm(data$Y~data$X5), col="darkred", lwd=3)

#Variabel Y dengan X6
plot(data$X6,data$Y,main="Scatterplot Variabel Y dengan X6", 
     xlab="X6", ylab="Y",col="black") 
abline(lm(data$Y~data$X6), col="darkred", lwd=3)

#PENGUJIAN LINIERITAS MENGGUNAKAN UJI RAMSEY RESET#

resettest(Y~X1, power=2:3, type="regressor", data=data)
## 
##  RESET test
## 
## data:  Y ~ X1
## RESET = 0.52289, df1 = 2, df2 = 42, p-value = 0.5966
resettest(Y~X2, power=2:3, type="regressor", data=data) 
## 
##  RESET test
## 
## data:  Y ~ X2
## RESET = 1.0925, df1 = 2, df2 = 42, p-value = 0.3447
resettest(Y~X3, power=2:3, type="regressor", data=data) 
## 
##  RESET test
## 
## data:  Y ~ X3
## RESET = 0.03275, df1 = 2, df2 = 42, p-value = 0.9678
resettest(Y~X4, power=2:3, type="regressor", data=data) 
## 
##  RESET test
## 
## data:  Y ~ X4
## RESET = 1.14, df1 = 2, df2 = 42, p-value = 0.3295
resettest(Y~X5, power=2:3, type="regressor", data=data) 
## 
##  RESET test
## 
## data:  Y ~ X5
## RESET = 0.93958, df1 = 2, df2 = 42, p-value = 0.3988
resettest(Y~X6, power=2:3, type="regressor", data=data) 
## 
##  RESET test
## 
## data:  Y ~ X6
## RESET = 0.054335, df1 = 2, df2 = 42, p-value = 0.9472

#MELIHAT OUTLIER PADA VARIABEL X MENGGUNAKAN BOXPLOT#

#MEMBUAT BOXPLOT
boxplot(data$X1, main="Boxplot X1", ylab="X1")

boxplot(data$X2, main="Boxplot X2", ylab="X2")

boxplot(data$X3, main="Boxplot X3", ylab="X3")

boxplot(data$X4, main="Boxplot X4", ylab="X4")

boxplot(data$X5, main="Boxplot X5", ylab="X5")

boxplot(data$X6, main="Boxplot X6", ylab="X6")

#ELIMINASI VARIABEL YANG TIDAKMEMILIKI OUTLIER#

data2 <- subset(data, select = -c(X1, X2, X6))
data2
##       X3   X4    X5     Y
## 1   8.50 2.22 64.81 73.84
## 2  10.13 2.20 68.65 76.87
## 3   8.99 1.68 69.07 77.19
## 4  10.04 2.16 69.18 69.08
## 5  10.27 1.46 68.34 78.27
## 6  10.87 1.38 70.14 84.72
## 7   9.29 0.70 67.29 76.69
## 8   9.37 0.56 69.15 77.12
## 9   9.91 1.68 65.61 77.54
## 10  9.02 1.74 67.78 46.10
## 11  9.67 0.46 71.66 80.83
## 12  9.20 1.70 65.48 78.05
## 13  8.39 6.33 65.92 77.06
## 14  8.98 4.54 67.55 79.69
## 15  9.14 2.19 69.60 76.60
## 16  9.58 1.27 70.04 81.16
## 17 10.30 1.15 69.64 46.98
## 18  9.85 0.46 70.60 78.95
## 19 12.74 0.01 72.02 87.96
## 20 10.94 0.20 70.98 73.80
## 21 11.31 0.08 72.06 83.03
## 22 11.27 0.17 69.78 78.05
## 23  8.78 1.40 64.41 41.12
## 24  8.96 1.42 67.90 73.81
## 25 10.19 2.22 69.57 78.14
## 26  9.57 3.22 65.56 77.29
## 27  7.06 0.87 70.34 72.41
## 28  8.97 1.85 69.64 79.92
## 29 10.28 1.51 72.28 82.28
## 30 10.41 0.51 72.31 86.20
## 31  9.78 1.78 72.20 82.42
## 32  9.18 1.82 69.09 76.65
## 33  9.69 1.39 70.77 76.96
## 34 10.08 2.02 70.11 82.50
## 35 10.50 2.06 71.24 84.33
## 36  9.37 3.08 63.47 70.54
## 37  6.99 1.20 69.58 65.87
## 38  9.90 3.57 66.89 75.32
## 39  9.93 3.18 70.27 81.16
## 40  9.20 2.85 72.24 80.35
## 41  9.14 1.51 69.59 85.35
## 42  9.13 0.72 67.88 78.37
## 43  9.74 3.26 67.82 75.14
## 44  9.86 2.67 67.71 76.75
## 45  9.32 2.79 69.54 57.85
## 46  9.28 2.18 70.25 80.30
#ANALISIS STATISTIKA DESKRIPTIF MODEL KEDUA (VARIABEL YANG TIDAK MEMILIKI OUTLIER)#
stat.desc(data2)
##                       X3         X4           X5            Y
## nbr.val       46.0000000 46.0000000 4.600000e+01   46.0000000
## nbr.null       0.0000000  0.0000000 0.000000e+00    0.0000000
## nbr.na         0.0000000  0.0000000 0.000000e+00    0.0000000
## min            6.9900000  0.0100000 6.347000e+01   41.1200000
## max           12.7400000  6.3300000 7.231000e+01   87.9600000
## range          5.7500000  6.3200000 8.840000e+00   46.8400000
## sum          443.0700000 83.4200000 3.176010e+03 3480.6100000
## median         9.6250000  1.6900000 6.957500e+01   77.4150000
## mean           9.6319565  1.8134783 6.904370e+01   75.6654348
## SE.mean        0.1447615  0.1788228 3.302387e-01    1.4454298
## CI.mean.0.95   0.2915647  0.3601677 6.651349e-01    2.9112451
## var            0.9639716  1.4709699 5.016650e+00   96.1063009
## std.dev        0.9818206  1.2128355 2.239788e+00    9.8033821
## coef.var       0.1019337  0.6687896 3.244015e-02    0.1295622
model2=(lm(formula=Y~X3+X4+X5,data=data2))
model2
## 
## Call:
## lm(formula = Y ~ X3 + X4 + X5, data = data2)
## 
## Coefficients:
## (Intercept)           X3           X4           X5  
##     -72.432        2.458        1.723        1.757
summary(model2)
## 
## Call:
## lm(formula = Y ~ X3 + X4 + X5, data = data2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -30.2321  -0.2201   2.2969   3.9418  10.4568 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) -72.4324    46.7464  -1.549   0.1288  
## X3            2.4580     1.4844   1.656   0.1052  
## X4            1.7226     1.2421   1.387   0.1728  
## X5            1.7568     0.6893   2.549   0.0146 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.891 on 42 degrees of freedom
## Multiple R-squared:  0.2324, Adjusted R-squared:  0.1775 
## F-statistic: 4.238 on 3 and 42 DF,  p-value: 0.01052
vif(model2)
##       X3       X4       X5 
## 1.209244 1.292062 1.357045

#PEMILIHAN 1 TITIK KNOT#

GCV1=function(data) 
{ 
  para=0 
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-para-1 
  dataA=data[,(para+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) 
  { 
    for (j in 1:m)  
    {  
      for (k in 1:N)  
      {  
        if (data[k,(j+para+1)]<knot1[i,j]) data1[k,j]=0 else  
          data1[k,j]=data[k,(j+para+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\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_DATA ALL knot 1_DATASET 2.csv")
  cat("==============================================","\n") 
  cat("HASIL GCV terkecil dengan 1 knot","\n") 
  cat("==============================================","\n")
  print(dataG[1,]) 
  cat("Nilai GCV 10 terkecil pertama","\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+para+1)]<knotgcv[j,1]) datagcv1[k,j]=0 else  
        datagcv1[k,j]=data[k,(j+para+1)]-knotgcv[j,1]  
    }  
  } 
  mxgcv=as.matrix(cbind(aa,data2,datagcv1)) 
  Cgcv=pinv(t(mxgcv)%*%mxgcv) 
  B=Cgcv%*%(t(mxgcv)%*%data[,1]) 
  cat("\n")  
  cat("==============================================","\n") 
  cat("HASIL ESTIMASI PARAMETER TITIK KNOT KE 1","\n") 
  cat("==============================================","\n") 
  print(B) 
  cat("\n") 
} 
GCV1(data2)
## ============================================== 
## HASIL GCV terkecil dengan 1 knot 
## ============================================== 
##        GCV    knot_ke                                  
##  0.6901338  3.0000000  0.3969388 64.0112245 43.9877551 
## Nilai GCV 10 terkecil pertama 
##             GCV knot_ke                            
##  [1,] 0.6901338       3 0.3969388 64.01122 43.98776
##  [2,] 0.6917694       4 0.5259184 64.19163 44.94367
##  [3,] 0.7066303       5 0.6548980 64.37204 45.89959
##  [4,] 0.7078490       2 0.2679592 63.83082 43.03184
##  [5,] 0.7369098       6 0.7838776 64.55245 46.85551
##  [6,] 0.7657321       1 0.1389796 63.65041 42.07592
##  [7,] 0.7772190       7 0.9128571 64.73286 47.81143
##  [8,] 0.8237902       8 1.0418367 64.91327 48.76735
##  [9,] 0.8388712      47 6.0720408 71.94918 86.04816
## [10,] 0.8414790      48 6.2010204 72.12959 87.00408
## 
## ============================================== 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 1 
## ============================================== 
##             [,1]
## [1,] 60.09480600
## [2,] -6.53104185
## [3,] -0.70809198
## [4,] -0.08313209
## [5,]  6.52384619
## [6,]  0.78096884
## [7,]  0.10144753

#UJI SIGNIFIKANSI SATU TITIK KNOT#

uji=function(alpha,para) 
{ 
  # --- baca & siapkan titik knot terbaik (GCV terkecil) ---
  knot = read.csv("C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_DATA ALL knot 1_DATASET 2.csv", header=TRUE)
  knot = as.matrix(knot)
  knot = knot[,-1]                 # buang kolom index baris
  knot = knot[order(knot[,1]), ]   # urutkan berdasarkan GCV (kolom 1) terkecil
  baris_knot = as.numeric(knot[1, 4:6])        # ambil knot X5-X5 pada baris GCV terkecil
  
  data=as.matrix(data2) 
  ybar=mean(data[,1]) 
  m=para+2 
  n=nrow(data) 
  q=ncol(data) 
  dataA=cbind(data[,m],data[,m+1],data[,m+2]) 
  dataA=as.matrix(dataA) 
  satu=rep(1,n) 
  n1=3                                    # jumlah variabel X (X3, X4, X5)
  data.knot=matrix(ncol=n1,nrow=n) 
  
  for (i in 1:n1) 
  { 
    for (j in 1:n) 
    { 
      if(dataA[j,i] < baris_knot[i]) data.knot[j,i]=0 
      else data.knot[j,i] = dataA[j,i] - baris_knot[i] 
    } 
  } 
  
  mx=cbind(satu,data[,2],data.knot[,1],data[,3], 
           data.knot[,2],data[,4],data.knot[,3]) 
  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) 
  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) 
  if(pvalue<=alpha) 
  { 
    cat('---------------------------------------','\n') 
    cat('Kesimpulan hasil uji simultan','\n') 
    cat('---------------------------------------','\n') 
    cat('Tolak Ho yakni minimal terdapat 1 variabel bebas yang signifikan','\n') 
    cat('','\n') 
  } 
  else                                # <-- perbaikan: "Else" jadi "else"
  { 
    cat('---------------------------------------','\n') 
    cat('Kesimpulan hasil uji simultan','\n') 
    cat('---------------------------------------','\n') 
    cat('Gagal Tolak Ho 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('Tolak Ho yakni variabel bebas signifikan dengan pvalue',pval[i],'\n') 
    else cat('Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue',pval[i],'\n') 
  } 
  thit=as.matrix(thit) 
  cat('=============================================','\n') 
  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="C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI RESIDUAL knot1_DATASET 2.csv") 
  write.csv(mx, file="C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI MX knot1_DATASET 2.csv") 
  write.csv(yhat, file='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI yhat knot1_DATASET 2.csv') 
}

uji(0.1, 0)
## --------------------------------------- 
## Kesimpulan hasil uji simultan 
## --------------------------------------- 
## Tolak Ho yakni minimal terdapat 1 variabel bebas yang signifikan 
##  
## --------------------------------------------- 
## Kesimpulan hasil uji parsial 
## --------------------------------------------- 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5242894 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 3.543925e-05 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 5.00291e-05 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.6212239 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5917596 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.7816552 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.7400535 
## ============================================= 
## nilai t hitung 
## ============================================= 
##            [,1]
## [1,]  0.6425288
## [2,] -4.6684586
## [3,]  4.5575425
## [4,] -0.4980814
## [5,]  0.5407436
## [6,] -0.2790837
## [7,]  0.3341542
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  6   20.5593   3.42655   6.90733 
## Error  39   22.81942   0.4960744 
## Total  45   43.37872 
## ============================================= 
## s= 0.7043255  Rsq= 47.39489 
## pvalue(F)= 4.736693e-05

#PEMILIHAN DUA TITIK KNOT#

GCV2=function(data)  
{  
  para=0 
  data=as.matrix(data)  
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-para-1 
  dataA=data[,(para+2):M]  
  dataA=as.matrix(dataA)  
  F=diag(N)  
  nk=50 
  knot1=matrix(ncol=m,nrow=nk)  
  for (i in (1:m)) 
  { 
    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] 
  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)  
  {  
    for (j in 1:(2*m))  
    {  
      if (mod(j,2)==1) b=floor(j/2)+1 else b=j/2  
      for (k in 1:N)  
      { 
        if (data[k,(b+para+1)]<knot2[i,j]) data1[k,j]=0 else  
          data1[k,j]=data[k,(b+para+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\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_DATA ALL knot 2_DATASET 2.csv") 
  cat("==============================================","\n") 
  cat("HASIL GCV terkecil dengan 2 knot","\n")  
  cat("==============================================","\n") 
  print(dataG[1,])  
  cat("Nilai GCV 10 terkecil pertama","\n") 
  print(dataG[1:10,]) 
  
  # --- PERBAIKAN: hitung ulang B dari titik knot dengan GCV TERKECIL ---
  # (sebelumnya B yang dicetak = B dari kombinasi knot TERAKHIR yang dicoba, bukan yang terbaik)
  baris_terbaik = dataG[1, "knot_ke"] 
  knotgcv = knot2[baris_terbaik, ] 
  datagcv1=matrix(ncol=2*m,nrow=N)  
  for (j in 1:(2*m)) 
  {  
    if (mod(j,2)==1) b=floor(j/2)+1 else b=j/2  
    for (k in 1:N)  
    { 
      if (data[k,(b+para+1)]<knotgcv[j]) datagcv1[k,j]=0 else 
        datagcv1[k,j]=data[k,(b+para+1)]-knotgcv[j] 
    } 
  } 
  mxgcv=as.matrix(cbind(aa,data2,datagcv1)) 
  Cgcv=pinv(t(mxgcv)%*%mxgcv) 
  B=Cgcv%*%(t(mxgcv)%*%data[,1]) 
  
  cat("\n")  
  cat("==============================================","\n") 
  cat("HASIL ESTIMASI PARAMETER TITIK KNOT KE 2","\n") 
  cat("==============================================","\n") 
  print(B) 
  cat("\n") 
} 
GCV2(data2)
## ============================================== 
## HASIL GCV terkecil dengan 2 knot 
## ============================================== 
##         GCV     knot_ke                                                 
##   0.4882595 240.0000000   0.7838776   2.7185714  64.5524490  67.2585714 
##                         
##  46.8555102  61.1942857 
## Nilai GCV 10 terkecil pertama 
##             GCV knot_ke                                                       
##  [1,] 0.4882595     240 0.7838776 2.718571 64.55245 67.25857 46.85551 61.19429
##  [2,] 0.4894738     239 0.7838776 2.589592 64.55245 67.07816 46.85551 60.23837
##  [3,] 0.4915948     203 0.6548980 3.363469 64.37204 68.16061 45.89959 65.97388
##  [4,] 0.4928773     241 0.7838776 2.847551 64.55245 67.43898 46.85551 62.15020
##  [5,] 0.4938041     242 0.7838776 2.976531 64.55245 67.61939 46.85551 63.10612
##  [6,] 0.4944269     202 0.6548980 3.234490 64.37204 67.98020 45.89959 65.01796
##  [7,] 0.4954953     271 0.9128571 1.428776 64.73286 65.45449 47.81143 51.63510
##  [8,] 0.4955458     245 0.7838776 3.363469 64.55245 68.16061 46.85551 65.97388
##  [9,] 0.4960685     243 0.7838776 3.105510 64.55245 67.79980 46.85551 64.06204
## [10,] 0.4961434     238 0.7838776 2.460612 64.55245 66.89776 46.85551 59.28245
## 
## ============================================== 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 2 
## ============================================== 
##             [,1]
##  [1,] 34.7150973
##  [2,] -3.7775798
##  [3,] -0.4657660
##  [4,]  0.1579646
##  [5,]  4.4301418
##  [6,] -1.1407490
##  [7,]  0.6304440
##  [8,] -0.2489428
##  [9,] -0.3134173
## [10,]  0.2556658

#UJI SIGNIFIKANSI DUA TITIK KNOT#

uji=function(alpha,para) 
{ 
  knot = read.csv("C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_DATA ALL knot 2_DATASET 2.csv", header=TRUE) 
  knot = as.matrix(knot) 
  knot = knot[,-1]                        # buang kolom index baris 
  knot = knot[order(knot[,1]), ]          # urutkan berdasarkan GCV terkecil 
  baris_knot = as.numeric(knot[1, 4:9])   # 2 knot x 3 variabel = 6 nilai
  
  data=as.matrix(data2) 
  ybar=mean(data[,1]) 
  m=para+2 
  n=nrow(data) 
  q=ncol(data) 
  dataA=cbind(data[,m],data[,m],data[,m+1],data[,m+1], 
              data[,m+2],data[,m+2]) 
  dataA=as.matrix(dataA) 
  satu=rep(1,n) 
  n1=length(baris_knot)                   # = 6 
  data.knot=matrix(ncol=n1,nrow=n) 
  for (i in 1:n1) 
  { 
    for (j in 1:n) 
    { 
      if(dataA[j,i]<baris_knot[i]) data.knot[j,i]=0 
      else data.knot[j,i]=dataA[j,i]-baris_knot[i] 
    } 
  } 
  mx=cbind(satu,data[,2],data.knot[,1:2],data[,3], 
           data.knot[,3:4],data[,4],data.knot[,5:6]) 
  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) 
  MSR=SSR/(n1-1) 
  SST=sum((data[,1]-ybar)^2) 
  Rsq=(SSR/(SSR+SSE))*100 
  Fhit=MSR/MSE 
  pvalue=pf(Fhit,(n1-1),(n-n1),lower.tail=FALSE) 
  if(pvalue<=alpha) 
  { 
    cat('---------------------------------------','\n') 
    cat('Kesimpulan hasil uji simultan','\n') 
    cat('---------------------------------------','\n') 
    cat('Tolak Ho yakni minimal terdapat 1 variabel bebas yang signifikan','\n') 
    cat('','\n') 
  } 
  else 
  { 
    cat('---------------------------------------','\n') 
    cat('Kesimpulan hasil uji simultan','\n') 
    cat('---------------------------------------','\n') 
    cat('Gagal Tolak Ho yakni semua variabel bebas tidak berpengaruh signifikan','\n') 
    cat('','\n') 
  } 
  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('Tolak Ho yakni variabel bebas signifikan dengan pvalue',pval[i],'\n') 
    else cat('Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue',pval[i],'\n') 
  } 
  thit=as.matrix(thit) 
  cat('=============================================','\n') 
  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='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI RESIDUAL knot2_DATASET 2.csv') 
  write.csv(mx,file='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI MX knot2_DATASET 2.csv') 
  write.csv(yhat,file='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI yhat knot2_DATASET 2.csv') 
} 
uji(0.1, 0)
## --------------------------------------- 
## Kesimpulan hasil uji simultan 
## --------------------------------------- 
## Tolak Ho yakni minimal terdapat 1 variabel bebas yang signifikan 
##  
## --------------------------------------------- 
## Kesimpulan hasil uji parsial 
## --------------------------------------------- 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.412631 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 5.239999e-08 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 7.708623e-08 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.0001899029 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.464176 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.3937852 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2474525 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2760619 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.06775125 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 3.805276e-05 
## ============================================= 
## nilai t hitung 
## ============================================= 
##             [,1]
##  [1,]  0.8288861
##  [2,] -6.8454770
##  [3,]  6.7183628
##  [4,] -4.1574954
##  [5,] -0.7398712
##  [6,]  0.8631205
##  [7,] -1.1756473
##  [8,]  1.1060026
##  [9,] -1.8833519
## [10,]  4.6946236
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  9   29.62254   3.291394   11.00626 
## Error  36   13.75618   0.2990474 
## Total  45   43.37872 
## ============================================= 
## s= 0.5468523  Rsq= 68.28818 
## pvalue(F)= 5.339187e-08
#PEMILIHAN TIGA TITIK KNOT# 
GCV3=function(data) 
{ 
  para=0 
  data=as.matrix(data) 
  N=nrow(data) 
  M=ncol(data) 
  m=ncol(data)-para-1 
  dataA=data[,(para+2):M] 
  dataA=as.matrix(dataA) 
  F=diag(N) 
  nk=50 
  knot1=matrix(ncol=m,nrow=nk) 
  for (i in (1:m)) 
  { 
    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] 
  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) 
  { 
    for (j in 1:(3*m)) 
    { 
      b=ceiling(j/3) 
      for (k in 1:N) 
      { 
        if (data[k,(b+para+1)]<knot2[i,j]) data1[k,j]=0 else  
          data1[k,j]=data[k,(b+para+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\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_DATA ALL knot 3_DATASET 2.csv") 
  cat("==============================================","\n") 
  cat("HASIL GCV terkecil dengan 3 knot","\n") 
  cat("==============================================","\n") 
  print(dataG[1,]) 
  cat("Nilai GCV 10 terkecil pertama","\n") 
  print(dataG[1:10,]) 
  
  # --- PERBAIKAN: hitung ulang B dari titik knot dengan GCV TERKECIL --- 
  baris_terbaik = dataG[1, "knot_ke"] 
  knotgcv = knot2[baris_terbaik, ] 
  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+para+1)]<knotgcv[j]) datagcv1[k,j]=0 else 
        datagcv1[k,j]=data[k,(b+para+1)]-knotgcv[j] 
    } 
  } 
  mxgcv=as.matrix(cbind(aa,data2,datagcv1)) 
  Cgcv=pinv(t(mxgcv)%*%mxgcv) 
  B=Cgcv%*%(t(mxgcv)%*%data[,1]) 
  
  cat("\n")  
  cat("==============================================","\n") 
  cat("HASIL ESTIMASI PARAMETER TITIK KNOT KE 3","\n") 
  cat("==============================================","\n") 
  print(B) 
  cat("\n") 
} 
GCV3(data2)
## ============================================== 
## HASIL GCV terkecil dengan 3 knot 
## ============================================== 
##          GCV      knot_ke                                                     
##    0.3372663 4998.0000000    0.7838776    1.0418367    1.2997959   64.5524490 
##                                                                  
##   64.9132653   65.2740816   46.8555102   48.7673469   50.6791837 
## Nilai GCV 10 terkecil pertama 
##             GCV knot_ke                                                        
##  [1,] 0.3372663    4998 0.7838776 1.0418367 1.299796 64.55245 64.91327 65.27408
##  [2,] 0.3696023    4176 0.6548980 1.1708163 1.299796 64.37204 65.09367 65.27408
##  [3,] 0.3706538     302 0.1389796 1.1708163 1.299796 63.65041 65.09367 65.27408
##  [4,] 0.3711936    4137 0.6548980 1.0418367 1.299796 64.37204 64.91327 65.27408
##  [5,] 0.3715966    3273 0.5259184 1.1708163 1.299796 64.19163 65.09367 65.27408
##  [6,] 0.3718303    5037 0.7838776 1.1708163 1.299796 64.55245 65.09367 65.27408
##  [7,] 0.3726929    2327 0.3969388 1.1708163 1.299796 64.01122 65.09367 65.27408
##  [8,] 0.3726987    1337 0.2679592 1.1708163 1.299796 63.83082 65.09367 65.27408
##  [9,] 0.4075038    4959 0.7838776 0.9128571 1.428776 64.55245 64.73286 65.45449
## [10,] 0.4096701    3234 0.5259184 1.0418367 1.299796 64.19163 64.91327 65.27408
##                                 
##  [1,] 46.85551 48.76735 50.67918
##  [2,] 45.89959 49.72327 50.67918
##  [3,] 42.07592 49.72327 50.67918
##  [4,] 45.89959 48.76735 50.67918
##  [5,] 44.94367 49.72327 50.67918
##  [6,] 46.85551 49.72327 50.67918
##  [7,] 43.98776 49.72327 50.67918
##  [8,] 43.03184 49.72327 50.67918
##  [9,] 46.85551 47.81143 51.63510
## [10,] 44.94367 48.76735 50.67918
## 
## ============================================== 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 3 
## ============================================== 
##              [,1]
##  [1,]  -2.3924422
##  [2,]  -3.9669314
##  [3,]   0.1387718
##  [4,]   0.1040700
##  [5,] -15.3065219
##  [6,]  42.7433321
##  [7,] -23.6507191
##  [8,]  -5.0449951
##  [9,]   9.0166921
## [10,]  -4.0902882
## [11,]  36.8461367
## [12,] -73.9534811
## [13,]  37.0299008

#UJI SIGNIFIKANSI TIGA TITIK KNOT#

uji=function(alpha,para) 
{ 
  knot = read.csv("C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_DATA ALL knot 3_DATASET 2.csv", header=TRUE) 
  knot = as.matrix(knot) 
  knot = knot[,-1] 
  knot = knot[order(knot[,1]), ] 
  baris_knot = as.numeric(knot[1, 4:12])  # 3 knot x 3 variabel = 9 nilai
  
  data=as.matrix(data2) 
  ybar=mean(data[,1]) 
  m=para+2 
  n=nrow(data) 
  q=ncol(data) 
  dataA=cbind(data[,m],data[,m],data[,m], 
              data[,m+1],data[,m+1],data[,m+1], 
              data[,m+2],data[,m+2],data[,m+2]) 
  dataA=as.matrix(dataA) 
  satu=rep(1,n) 
  n1=length(baris_knot)                   # = 9 
  data.knot=matrix(ncol=n1,nrow=n) 
  for (i in 1:n1) 
  { 
    for (j in 1:n) 
    { 
      if(dataA[j,i]<baris_knot[i]) data.knot[j,i]=0 
      else data.knot[j,i]=dataA[j,i]-baris_knot[i] 
    } 
  } 
  mx=cbind(satu,data[,2],data.knot[,1:3],data[,3], 
           data.knot[,4:6],data[,4],data.knot[,7:9]) 
  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) 
  MSR=SSR/(n1-1) 
  SST=sum((data[,1]-ybar)^2) 
  Rsq=(SSR/(SSR+SSE))*100
  Fhit=MSR/MSE 
  pvalue=pf(Fhit,(n1-1),(n-n1),lower.tail=FALSE) 
  if(pvalue<=alpha) 
  { 
    cat('---------------------------------------','\n') 
    cat('Kesimpulan hasil uji simultan','\n') 
    cat('---------------------------------------','\n') 
    cat('Tolak Ho yakni minimal terdapat 1 variabel bebas yang signifikan','\n') 
    cat('','\n') 
  } 
  else 
  { 
    cat('---------------------------------------','\n') 
    cat('Kesimpulan hasil uji simultan','\n') 
    cat('---------------------------------------','\n') 
    cat('Gagal Tolak Ho yakni semua variabel bebas tidak berpengaruh signifikan','\n') 
    cat('','\n') 
  } 
  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('Tolak Ho yakni variabel bebas signifikan dengan pvalue',pval[i],'\n') 
    else cat('Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue',pval[i],'\n') 
  } 
  thit=as.matrix(thit) 
  cat('=============================================','\n') 
  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='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI RESIDUAL knot3_DATASET 2.csv') 
  write.csv(mx,file='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI mx knot3_DATASET 2.csv') 
  write.csv(yhat,file='C:\\Users\\tokok\\Downloads\\SEMESTER 5\\REGNON\\2407016002_Rini Rahmah_OUTPUT UJI yhat knot3_DATASET 2.csv') 
} 
uji(0.1, 0)
## --------------------------------------- 
## Kesimpulan hasil uji simultan 
## --------------------------------------- 
## Tolak Ho yakni minimal terdapat 1 variabel bebas yang signifikan 
##  
## --------------------------------------------- 
## Kesimpulan hasil uji parsial 
## --------------------------------------------- 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.004382544 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 7.004142e-08 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.001016416 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 3.426018e-06 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 4.115288e-07 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1563207 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.02840475 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.02645588 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.03036821 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.4434886 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 7.090667e-06 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 4.590781e-06 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 3.481292e-06 
## ============================================= 
## nilai t hitung 
## ============================================= 
##             [,1]
##  [1,] -3.0592831
##  [2,] -6.9001707
##  [3,] -3.6050037
##  [4,]  5.5702179
##  [5,] -6.2903524
##  [6,]  1.4506367
##  [7,] -2.2922343
##  [8,]  2.3235522
##  [9,] -2.2625816
## [10,]  0.7756337
## [11,]  5.3240192
## [12,] -5.4711582
## [13,]  5.5647996
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  12   34.90308   2.90859   15.78583 
## Error  33   8.475648   0.1842532 
## Total  45   43.37872 
## ============================================= 
## s= 0.4292473  Rsq= 80.46128 
## pvalue(F)= 2.318546e-10