# MEMANGGIL LIBRARY YANG DIGUNAKAN
library(lmtest) 
library(MASS) 
library(car)
library(pastecs)
library(pracma)
library(Matrix)
# MEMANGGIL DATA
data=read.table(file.choose(),header=TRUE)
data
# ANALISIS STATISTIKA DESKRIPTIF & DETEKSI MULTIKOLINIERITAS
stat.desc(data)
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  
##    26.47106     -0.61512     -0.21398     -0.21664     -0.42017      0.92267  
##          X6  
##     0.03101
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5 + X6, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -24.041  -3.610   2.047   5.431  21.434 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 26.47106   11.16110   2.372   0.0181 *  
## X1          -0.61512    0.07038  -8.740  < 2e-16 ***
## X2          -0.21398    0.02453  -8.721  < 2e-16 ***
## X3          -0.21664    0.29665  -0.730   0.4656    
## X4          -0.42017    0.04933  -8.518  < 2e-16 ***
## X5           0.92267    0.14182   6.506 1.85e-10 ***
## X6           0.03101    0.04248   0.730   0.4657    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.209 on 507 degrees of freedom
## Multiple R-squared:  0.6801, Adjusted R-squared:  0.6763 
## F-statistic: 179.7 on 6 and 507 DF,  p-value: < 2.2e-16
vif(model)
##       X1       X2       X3       X4       X5       X6 
## 1.930060 1.842417 1.599757 1.415399 1.754443 1.155668
# PALET WARNA & FUNGSI BANTU VISUALISASI
# Satu warna khas untuk setiap variabel supaya mudah dibedakan di semua plot
var_x   = c("X1","X2","X3","X4","X5","X6")
warna   = c(X1="#E21AE4", X2="#37B871", X3="#AFAC4A",
            X4="#FF0080", X5="#4E59A3", X6="#00A600")
# versi transparan (untuk titik) dan versi lebih gelap (untuk garis)
transp  = function(col, alpha=0.6) adjustcolor(col, alpha.f=alpha)
gelap   = function(col) adjustcolor(col, red.f=0.6, green.f=0.6, blue.f=0.6)
# SCATTERPLOT (WARNA BERBEDA UNTUK SETIAP VARIABEL)
par(mfrow=c(2,3), mar=c(4.5,4.5,3,1))
for (v in var_x) {
  x = data[[v]]
  r = cor(x, data$Y)
  plot(x, data$Y,
       main=paste("Scatterplot Y dan", v),
       xlab=v, ylab="Y",
       pch=19, cex=1.3, col=transp(warna[v]))
  grid(col="grey90")
  # garis regresi linier (solid, warna lebih gelap)
  abline(lm(data$Y~x), col=gelap(warna[v]), lwd=3)
  # kurva loess (putus-putus) -> menunjukkan pola non-linier yang melandasi regresi nonparametrik
  lines(lowess(x, data$Y), col="black", lwd=2, lty=2)
  legend("topleft", bty="n", cex=0.85,
         legend=c(paste0("r = ", round(r,3)), "Linier", "Lowess"),
         col=c(NA, gelap(warna[v]), "black"), lty=c(NA,1,2), lwd=c(NA,3,2))
}

par(mfrow=c(1,1))
# HISTOGRAM & BOXPLOT
# Semua X diubah ke skala yang sama (z-score) untuk boxplot
Z = scale(data[,var_x])
par(mfrow=c(1,2), mar=c(4.5,4.5,3,1))

# Histogram Y + kurva densitas
hist(data$Y, breaks="FD", freq=FALSE, col="#99D38D", border="white",
     main="Distribusi Variabel Y", xlab="Y")
lines(density(data$Y), col="#D9027C", lwd=3)
abline(v=mean(data$Y),   col="#429E1B", lwd=2, lty=2)
abline(v=median(data$Y), col="#70AEB3", lwd=2, lty=3)
legend("topright", bty="n", cex=0.85,
       legend=c("Densitas","Rata-rata","Median"),
       col=c("#D9027C","#429E1B","#70AEB3"), lwd=c(3,2,2), lty=c(1,2,3))

# Boxplot seluruh X (distandardisasi), tiap variabel punya warna sendiri
boxplot(Z, col=transp(warna[var_x], 0.7), border=gelap(warna[var_x]),
        main="Boxplot Variabel X (Terstandardisasi)",
        ylab="Z-score", las=1)
abline(h=0, col="grey50", lty=2)

par(mfrow=c(1,1))
# HEATMAP KORELASI
kor  = cor(data[,c("Y",var_x)])
pal  = colorRampPalette(c("#21AC67","white","#9F18B2"))(101)
p    = ncol(kor)
par(mar=c(4,4,3,1))
image(1:p, 1:p, t(kor[p:1,]), col=pal, zlim=c(-1,1),
      axes=FALSE, xlab="", ylab="", main="Heatmap Korelasi Antar Variabel")
axis(1, at=1:p, labels=colnames(kor), las=1)
axis(2, at=1:p, labels=rev(rownames(kor)), las=1)
for (i in 1:p) for (j in 1:p)
  text(j, p-i+1, sprintf("%.2f", kor[i,j]), cex=0.9,
       col=ifelse(abs(kor[i,j])>0.6,"white","black"))
box()

# DIAGNOSTIK RESIDUAL MODEL REGRESI LINIER
res_lm = residuals(model); fit_lm = fitted(model)
par(mfrow=c(1,3), mar=c(4.5,4.5,3,1))

plot(fit_lm, res_lm, pch=19, col=transp("#37B871"), cex=1.2,
     main="Residual vs Fitted", xlab="Fitted", ylab="Residual")
abline(h=0, col="#E21AE4", lwd=2, lty=2); grid(col="grey90")
lines(lowess(fit_lm, res_lm), col="black", lwd=2)

qqnorm(res_lm, pch=19, col=transp("#AFAC4A"), main="Normal Q-Q Residual")
qqline(res_lm, col="#E21AE4", lwd=2)

hist(res_lm, breaks="FD", freq=FALSE, col="#FD62AB", border="white",
     main="Histogram Residual", xlab="Residual")
curve(dnorm(x, mean(res_lm), sd(res_lm)), add=TRUE, col="#4E59A3", lwd=3)

par(mfrow=c(1,1))
# 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:\\Semester 5\\REGNON\\Tugas 6\\DATA ALL knot 1.csv")
  cat("==============================================","\n") 
  cat("HASIL GCV terkecil dengan 1 knot","\n") 
  cat("==============================================","\n") 
  print(((dataG[1,1:(2+m)]))) 
  cat("Nilai GCV 10 terkecil pertama","\n") 
  print(dataG[1:10,]) 
  mingcv=dataG[1,1] 
  knotgcv=as.matrix(knot1[dataG[1,"knot_ke"],]) 
  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))  
  # hitung ulang B dari titik knot dengan GCV TERKECIL
  Cgcv=pinv(t(mxgcv)%*%mxgcv) 
  B=Cgcv%*%(t(mxgcv)%*%data[,1]) 
  mxgcv=mxgcv[,2:(2*m+1)] 
  list(knotgcv=knotgcv1,mingcv=mingcv,mxgcv=mxgcv) 
  cat("\n")  
  cat("==============================================","\n") 
  cat("HASIL ESTIMASI PARAMETER TITIK KNOT KE 1","\n") 
  cat("==============================================","\n") 
  print(B) 
  cat("\n") 
} 
GCV1(data)
## ============================================== 
## HASIL GCV terkecil dengan 1 knot 
## ============================================== 
##       GCV   knot_ke                                                             
## 20.206458 27.000000 54.892653  7.594694 47.839592 67.958163 27.661224 59.450408 
## Nilai GCV 10 terkecil pertama 
##            GCV knot_ke                                                      
##  [1,] 20.20646      27 54.89265 7.594694 47.83959 67.95816 27.66122 59.45041
##  [2,] 20.21553      28 56.92571 7.828571 49.61143 68.41143 28.68571 61.12857
##  [3,] 20.25827      26 52.85959 7.360816 46.06776 67.50490 26.63673 57.77224
##  [4,] 20.29451      25 50.82653 7.126939 44.29592 67.05163 25.61224 56.09408
##  [5,] 20.33676      29 58.95878 8.062449 51.38327 68.86469 29.71020 62.80673
##  [6,] 20.33968      24 48.79347 6.893061 42.52408 66.59837 24.58776 54.41592
##  [7,] 20.43170      23 46.76041 6.659184 40.75224 66.14510 23.56327 52.73776
##  [8,] 20.53707      30 60.99184 8.296327 53.15510 69.31796 30.73469 64.48490
##  [9,] 20.70568      22 44.72735 6.425306 38.98041 65.69184 22.53878 51.05959
## [10,] 20.75155      31 63.02490 8.530204 54.92694 69.77122 31.75918 66.16306
## 
## ============================================== 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 1 
## ============================================== 
##              [,1]
##  [1,] 97.52697136
##  [2,]  0.02229463
##  [3,] -1.90990877
##  [4,] -0.02161166
##  [5,] -0.67330763
##  [6,]  0.04263029
##  [7,] -0.44524953
##  [8,] -0.10100488
##  [9,]  1.28323925
## [10,] -0.07209349
## [11,]  0.36647397
## [12,]  0.32940003
## [13,]  0.39371960
# UJI SIGNIFIKANSI SATU TITIK KNOT
uji=function(alpha,para) 
{ 
  # --- baca & siapkan titik knot terbaik (GCV terkecil) ---
  knot = read.csv("C:\\Semester 5\\REGNON\\Tugas 6\\DATA ALL knot 1.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:9])  # ambil knot X1-X6 pada baris GCV terkecil
  
  data=as.matrix(data) 
  ybar=mean(data[,1]) 
  m=para+2 
  n=nrow(data) 
  q=ncol(data) 
  dataA=cbind(data[,m],data[,m+1], 
              data[,m+2],data[,m+3], 
              data[,m+4],data[,m+5]) 
  dataA=as.matrix(dataA) 
  satu=rep(1,n) 
  n1=6                              # jumlah variabel X (X1-X6)
  data.knot=matrix(ncol=n1,nrow=n) 
  
  # --- hitung fungsi basis knot (loop i untuk variabel, j untuk observasi) ---
  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:1],data[,3], 
           data.knot[,2:2],data[,4],data.knot[,3:3], 
           data[,5],data.knot[,4:4], 
           data[,6],data.knot[,5:5], 
           data[,7],data.knot[,6: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 
  
  #-------------------------------------------------------# 
  # 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
  { 
    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:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI RESIDUAL knot1.csv') 
  write.csv(mx, file='C:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI MX knot1.csv') 
  write.csv(yhat, file='C:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI yhat knot1.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 2.602376e-15 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1979433 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.04436058 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.0001218067 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.02607293 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5293206 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5875557 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.0001343102 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.104349 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2043021 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.0001457498 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 5.379056e-12 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 3.442012e-07 
## ============================================= 
## nilai t hitung 
## ============================================= 
##             [,1]
##  [1,]  8.1662945
##  [2,]  1.2891429
##  [3,] -2.0157396
##  [4,] -3.8729010
##  [5,]  2.2317506
##  [6,] -0.6294819
##  [7,] -0.5427320
##  [8,] -3.8483117
##  [9,]  1.6270791
## [10,]  1.2710459
## [11,]  3.8276411
## [12,] -7.0657268
## [13,]  5.1669305
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  12   16391.04   1365.92   71.15179 
## Error  501   9867.395   19.19727 
## Total  513   26258.43 
## ============================================= 
## s= 4.381469  Rsq= 62.422 
## pvalue(F)= 5.200845e-100
# 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:\\Semester 5\\REGNON\\Tugas 6\\DATA ALL knot 2.csv") 
  cat("==============================================","\n") 
  cat("HASIL GCV terkecil dengan 2 knot","\n")  
  cat("==============================================","\n") 
  print(((dataG[1,1:(2+2*m)])))  
  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(data)
## ============================================== 
## HASIL GCV terkecil dengan 2 knot 
## ============================================== 
##        GCV    knot_ke                                                        
##  18.985476 921.000000  56.925714  63.024898   7.828571   8.530204  49.611429 
##                                                                              
##  54.926939  68.411429  69.771224  28.685714  31.759184  61.128571  66.163061 
## Nilai GCV 10 terkecil pertama 
##            GCV knot_ke                                                      
##  [1,] 18.98548     921 56.92571 63.02490 7.828571 8.530204 49.61143 54.92694
##  [2,] 18.98686     920 56.92571 60.99184 7.828571 8.296327 49.61143 53.15510
##  [3,] 19.04751     901 54.89265 63.02490 7.594694 8.530204 47.83959 54.92694
##  [4,] 19.10503     939 58.95878 60.99184 8.062449 8.296327 51.38327 53.15510
##  [5,] 19.12689     919 56.92571 58.95878 7.828571 8.062449 49.61143 51.38327
##  [6,] 19.12877     900 54.89265 60.99184 7.594694 8.296327 47.83959 53.15510
##  [7,] 19.13558     940 58.95878 63.02490 8.062449 8.530204 51.38327 54.92694
##  [8,] 19.15718     880 52.85959 63.02490 7.360816 8.530204 46.06776 54.92694
##  [9,] 19.19519     902 54.89265 65.05796 7.594694 8.764082 47.83959 56.69878
## [10,] 19.21913     922 56.92571 65.05796 7.828571 8.764082 49.61143 56.69878
##                                                            
##  [1,] 68.41143 69.77122 28.68571 31.75918 61.12857 66.16306
##  [2,] 68.41143 69.31796 28.68571 30.73469 61.12857 64.48490
##  [3,] 67.95816 69.77122 27.66122 31.75918 59.45041 66.16306
##  [4,] 68.86469 69.31796 29.71020 30.73469 62.80673 64.48490
##  [5,] 68.41143 68.86469 28.68571 29.71020 61.12857 62.80673
##  [6,] 67.95816 69.31796 27.66122 30.73469 59.45041 64.48490
##  [7,] 68.86469 69.77122 29.71020 31.75918 62.80673 66.16306
##  [8,] 67.50490 69.77122 26.63673 31.75918 57.77224 66.16306
##  [9,] 67.95816 70.22449 27.66122 32.78367 59.45041 67.84122
## [10,] 68.41143 70.22449 28.68571 32.78367 61.12857 67.84122
## 
## ============================================== 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 2 
## ============================================== 
##              [,1]
##  [1,] 91.36884400
##  [2,] -0.01679699
##  [3,] -0.92744459
##  [4,] -0.03116134
##  [5,] -0.52954211
##  [6,]  0.02368497
##  [7,] -0.62717611
##  [8,]  0.47186143
##  [9,] -0.68801713
## [10,] -0.40340313
## [11,]  0.81801155
## [12,]  1.06073557
## [13,] -1.35431420
## [14,] -0.59686929
## [15,]  1.14374483
## [16,]  0.45300042
## [17,] -0.18233420
## [18,]  1.73075599
## [19,] -1.34946890
# UJI SIGNIFIKANSI DUA TITIK KNOT
uji=function(alpha,para) 
{ 
  knot = read.csv("C:\\Semester 5\\REGNON\\Tugas 6\\DATA ALL knot 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:15])  # 12 nilai knot terbaik (X1a,X1b,X2a,X2b,...,X6a,X6b) 
  
  data=as.matrix(data) 
  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],data[,m+3],data[,m+3], 
              data[,m+4],data[,m+4],data[,m+5],data[,m+5]) 
  dataA=as.matrix(dataA) 
  satu=rep(1,n) 
  n1=length(baris_knot)                   # = 12 
  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], 
           data[,5],data.knot[,7:8], 
           data[,6],data.knot[,9:10], 
           data[,7],data.knot[,11:12]) 
  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:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI RESIDUAL knot2.csv') 
  write.csv(mx,file='C:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI MX knot2.csv') 
  write.csv(yhat,file='C:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI yhat knot2.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 1.096726e-13 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.3412052 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.04027877 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.01106055 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.07696369 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.7405573 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.4393531 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.3614774 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1200001 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.09558417 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.002218409 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2971753 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.03743297 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.4752954 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.08462063 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5674028 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 1.343222e-18 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 5.923075e-12 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 7.181441e-09 
## ============================================= 
## nilai t hitung 
## ============================================= 
##             [,1]
##  [1,]  7.6446775
##  [2,] -0.9527036
##  [3,]  2.0562849
##  [4,] -2.5503812
##  [5,] -1.7722766
##  [6,] -0.3313011
##  [7,]  0.7739106
##  [8,] -0.9133989
##  [9,]  1.5574613
## [10,] -1.6698352
## [11,] -3.0754024
## [12,] -1.0436099
## [13,]  2.0866275
## [14,]  0.7144344
## [15,]  1.7279513
## [16,] -0.5722642
## [17,] -9.1629162
## [18,]  7.0531017
## [19,] -5.8889379
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  18   17208.01   956.0008   54.29409 
## Error  495   9050.421   17.60782 
## Total  513   26258.43 
## ============================================= 
## s= 4.196168  Rsq= 65.53328 
## pvalue(F)= 1.059424e-104
#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:\\Semester 5\\REGNON\\Tugas 6\\DATA ALL knot 3.csv") 
  cat("==============================================","\n") 
  cat("HASIL GCV terkecil dengan 3 knot","\n") 
  cat("==============================================","\n") 
  print(((dataG[1,1:(2+3*m)]))) 
  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(data)
## ============================================== 
## HASIL GCV terkecil dengan 3 knot 
## ============================================== 
##          GCV      knot_ke                                                     
##    18.636070 14057.000000    42.694286    46.760408    69.124082     6.191429 
##                                                                               
##     6.659184     9.231837    37.208571    40.752245    60.242449    65.238571 
##                                                                               
##    66.145102    71.131020    21.514286    23.563265    34.832653    49.381429 
##                           
##    52.737755    71.197551 
## Nilai GCV 10 terkecil pertama 
##            GCV knot_ke                                                      
##  [1,] 18.63607   14057 42.69429 46.76041 69.12408 6.191429 6.659184 9.231837
##  [2,] 18.63904   16006 56.92571 63.02490 69.12408 7.828571 8.530204 9.231837
##  [3,] 18.64996   14058 42.69429 46.76041 71.15714 6.191429 6.659184 9.465714
##  [4,] 18.65976   16005 56.92571 63.02490 67.09102 7.828571 8.530204 8.997959
##  [5,] 18.66287   13706 40.66122 46.76041 69.12408 5.957551 6.659184 9.231837
##  [6,] 18.66361   13707 40.66122 46.76041 71.15714 5.957551 6.659184 9.465714
##  [7,] 18.67131   16007 56.92571 63.02490 71.15714 7.828571 8.530204 9.465714
##  [8,] 18.69623   15816 54.89265 63.02490 69.12408 7.594694 8.530204 9.231837
##  [9,] 18.69868   14382 44.72735 46.76041 69.12408 6.425306 6.659184 9.231837
## [10,] 18.70235   15831 54.89265 65.05796 67.09102 7.594694 8.764082 8.997959
##                                                                              
##  [1,] 37.20857 40.75224 60.24245 65.23857 66.14510 71.13102 21.51429 23.56327
##  [2,] 49.61143 54.92694 60.24245 68.41143 69.77122 71.13102 28.68571 31.75918
##  [3,] 37.20857 40.75224 62.01429 65.23857 66.14510 71.58429 21.51429 23.56327
##  [4,] 49.61143 54.92694 58.47061 68.41143 69.77122 70.67776 28.68571 31.75918
##  [5,] 35.43673 40.75224 60.24245 64.78531 66.14510 71.13102 20.48980 23.56327
##  [6,] 35.43673 40.75224 62.01429 64.78531 66.14510 71.58429 20.48980 23.56327
##  [7,] 49.61143 54.92694 62.01429 68.41143 69.77122 71.58429 28.68571 31.75918
##  [8,] 47.83959 54.92694 60.24245 67.95816 69.77122 71.13102 27.66122 31.75918
##  [9,] 38.98041 40.75224 60.24245 65.69184 66.14510 71.13102 22.53878 23.56327
## [10,] 47.83959 56.69878 58.47061 67.95816 70.22449 70.67776 27.66122 32.78367
##                                          
##  [1,] 34.83265 49.38143 52.73776 71.19755
##  [2,] 34.83265 61.12857 66.16306 71.19755
##  [3,] 35.85714 49.38143 52.73776 72.87571
##  [4,] 33.80816 61.12857 66.16306 69.51939
##  [5,] 34.83265 47.70327 52.73776 71.19755
##  [6,] 35.85714 47.70327 52.73776 72.87571
##  [7,] 35.85714 61.12857 66.16306 72.87571
##  [8,] 34.83265 59.45041 66.16306 71.19755
##  [9,] 34.83265 51.05959 52.73776 71.19755
## [10,] 33.80816 59.45041 67.84122 69.51939
## 
## ============================================== 
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 3 
## ============================================== 
##               [,1]
##  [1,]  95.37246209
##  [2,]  -0.03266317
##  [3,]   0.78251791
##  [4,]  -0.06708851
##  [5,]  -0.84045363
##  [6,]   0.01901839
##  [7,]  -0.37636772
##  [8,]   0.25879501
##  [9,]  -0.21956394
## [10,]  -0.12011621
## [11,] -12.11865938
## [12,]  10.65241559
## [13,]  -0.05039049
## [14,]  -0.07747172
## [15,]   0.64210012
## [16,]  -1.01592956
## [17,]   3.19168414
## [18,]  -3.26669072
## [19,]   1.23141797
## [20,]  -0.20262179
## [21,]   0.39611079
## [22,]   0.22850765
## [23,]  -2.53034180
## [24,]   3.09616317
## [25,]  -0.44966092
# UJI SIGNIFIKANSI TIGA TITIK KNOT
uji=function(alpha,para) 
{ 
  knot = read.csv("C:\\Semester 5\\REGNON\\Tugas 6\\DATA ALL knot 3.csv", header=TRUE) 
  knot = as.matrix(knot) 
  knot = knot[,-1] 
  knot = knot[order(knot[,1]), ] 
  baris_knot = as.numeric(knot[1, 4:21])   # 18 nilai knot terbaik (3*m = 18) 
  
  data=as.matrix(data) 
  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], 
              data[,m+3],data[,m+3],data[,m+3], 
              data[,m+4],data[,m+4],data[,m+4], 
              data[,m+5],data[,m+5],data[,m+5]) 
  dataA=as.matrix(dataA) 
  satu=rep(1,n) 
  n1=length(baris_knot)              # = 18 
  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], 
           data[,5],data.knot[,10:12], 
           data[,6],data.knot[,13:15], 
           data[,7],data.knot[,16:18]) 
  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:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI RESIDUAL knot3.csv') 
  write.csv(mx,file='C:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI mx knot3.csv') 
  write.csv(yhat,file='C:\\Semester 5\\REGNON\\Tugas 6\\OUTPUT UJI yhat knot3.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 7.543555e-05 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.143479 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2966555 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.4534026 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.3737844 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.414443 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.006623752 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.01045749 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.9309305 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1263923 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.9247796 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5158068 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.01937242 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.01916318 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.03426407 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.01574818 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 6.17516e-06 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.7070754 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5589676 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2869932 
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2078166 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.002999219 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 2.204262e-06 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 5.139071e-10 
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 1.522783e-06 
## ============================================= 
## nilai t hitung 
## ============================================= 
##              [,1]
##  [1,]  3.99244848
##  [2,] -1.46530994
##  [3,]  1.04474833
##  [4,] -0.75035375
##  [5,] -0.89022218
##  [6,]  0.81679564
##  [7,] -2.72685961
##  [8,]  2.57024868
##  [9,] -0.08671882
## [10,] -1.53109623
## [11,] -0.09446360
## [12,]  0.65029547
## [13,] -2.34604214
## [14,] -2.35013381
## [15,]  2.12289898
## [16,] -2.42316052
## [17,]  4.57031285
## [18,]  0.37600610
## [19,] -0.58477674
## [20,]  1.06590374
## [21,]  1.26125979
## [22,] -2.98276846
## [23,] -4.79098178
## [24,]  6.34291011
## [25,] -4.86815459
## Analysis of Variance 
## ============================================= 
## Sumber df SS MS Fhit 
## Regresi  24   17588.64   732.8599   43.44853 
## Error  489   8669.797   16.86731 
## Total  513   26258.43 
## ============================================= 
## s= 4.106983  Rsq= 66.98281 
## pvalue(F)= 5.17654e-105