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
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
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
Tabel 1. Statistika Deskriptif Variabel Penelitian Variabel n Rata-rata Median Minimum Maksimum Std. Deviasi Y 56 4,957 4,510 2,240 12,360 2,032 X_1 56 68,987 69,140 60,050 77,730 4,496 X_2 56 12,649 12,505 11,150 14,940 0,808 X_3 56 26,362 18,640 3,300 75,040 20,018 X_4 56 61,123 67,965 21,390 80,770 16,480 Interpretasi: Berdasarkan output diketahui rata-rata TPT Y adalah 4,957 dengan nilai terendah 2,24 dan tertinggi 12,36. Standar deviasinya 2,032 atau sekitar 41,0% dari rata-ratanya, sehingga TPT antar pengamatan cukup beragam. Rata-rata yang lebih besar daripada median (4,51) menunjukkan sebaran TPT miring ke kanan, yaitu sebagian kecil pengamtan memiliki TPT yang sangat tinggi. Tingkat Partisipasi Angkatan Kerja Angkatan Kerja (X_1) memiliki rata-rata 68,987 dengan rentan 60,05 sampai 77,73 dan standar deviasi 4,496. Koefisien variansinya hanya 6,5%, jadi variabel ini relatif seragam antarpengamatan. Harapan Lama Sekolah (X_2) berada pada rentang 11,15 sampai 14,94 tahun dengan rata-rata 12,65 tahun dan koefisien variasi sebesar 6,4% sehingga juga relatif seragam. PDRB Atas Dasar Harga Berlaku (X_3) adalah variabel yang paling beragam, dengan rentang 3,30 hingga 75,04 dan koefisien variasi sebesar 75,9%. Rata-rata sebesar 26,36 jauh di atas median sebesar 18,64, artinya sebagian kecil pengamatan memiliki PDRB yang sangat besar. Indeks Pembangunan Manusia (X_4 ) memiliki rata-rata sebesar 61,12 yang berada di bawah nilai median yakni sebesar 67,97 sehingga sebarannya miring ke kiri. Nilai minimum sebesar 21,39 jauh lebih rendah daripada sebagian besar pengamatan yang menandakan adanya pengamatan ekstrem pada variabel ini. Identifikasi multikolinearitas bertujuan mengetahui ada tidaknya korelasi yang kuat antarvariabel prediktor. Model regresi yang baik tidak mengandung korelasi yang tinggi antarprediktornya. Hal ini dilihat dari nilai Variance Inflation Factor (VIF), dengan ketentuan prediktor tidak mengalami multikolinearitas jika VIF ≤ 10. Tabel 2. Statistika Deskriptif Variabel Penelitian Variabel X_1 X_2 X_3 X_4 VIF 1,305 1,317 1,083 1,099 Nilai VIF keempat variabel kurang dari 10, sehingga tidak terjadi multikolinearitas dan keempat variabel prediktor layak digunakan bersama dalam model.
Model regresi nonparametrik spline truncated dengan empat variabel prediktor dan r titik knot pada setiap variabel dapat dituliskan sebagai berikut. \(\[y_i = \beta_0 + \sum_{j=1}^{4} \sum_{l=0}^{m} \beta_{jl} x_{ji}^{1} + \sum_{j=1}^{4} \sum_{h=1}^{m} \beta_{j(1+h)} (x_{ji} - k_{hj})_{+}^{1} + \varepsilon_i\]\) Dengan fungsi truncated \(\[(x_{ji} - k_{hj})_{+}^{1} = x_{ji} - k_{hj}\]\) jika \(\[x_{ji} > k_{hj}\]\) dan bernilai 0 jika x_ji<k_hj. Pada persamaat tersebut, y_i adalah Tingkat Pengangguran Terbuka (TPT) pengamtan ke-i, β_0 adalah intersept, β_jl adalah koefisien komponen linier prediktor ke-j,\(\[\beta_{j(1+h)}\]\) adalah koefisien komponen truncated pada knot ke-h, k_hj adalah titik knot ke-h pada prediktor ke-j, dan ε_i adalah galat error. Titik knot optimal dipilih berdasarkan nilai Generalized Cross Validation (GCV) minimum. Kandidat knot dibentuk dari 50 titik yang berjarak sama antara nilai minimum dan maksimum setiap variabel, dengan titik minimum dan maksimum dibuang sehingga tersisa 48 kandidat. Kandidat yang sama dipakai bersamaan untuk keempat variabel. Pemilihan dilakukan untuk 1 knot (48 kombinasi), 2 knot (1.128 kombinasi), dan 3 knot (17.296 kombinasi).
plot(data$X1,data$Y,main="Scatterplot Tingkat Pengangguran Terbuka dan
Tingkat Partisipasi Angkatan Kerja"
, xlab="Tingkat Partisipasi Angkatan Kerja (X1)"
, ylab="Tingkat Pengangguran Terbuka (Y)"
,col="black")
abline(lm(data$Y~data$X1), col="darkred", lwd=3)
plot(data$X2,data$Y,main="Scatterplot Tingkat Pengangguran Terbuka dan
Harapan Lama Sekolah"
, xlab="Harapan Lama Sekolah (X2)"
, ylab="Tingkat Pengangguran Terbuka (Y)"
,col="black")
abline(lm(data$Y~data$X2), col="darkred", lwd=3)
plot(data$X3,data$Y,main="Scatterplot Tingkat Pengangguran Terbuka dan
PDRB Atas Dasar Harga Berlaku"
, xlab="PDRB Atas Dasar Harga Berlaku (X3)"
, ylab="Tingkat Pengangguran Terbuka (Y)"
,col="black")
abline(lm(data$Y~data$X3), col="darkred", lwd=3)
plot(data$X4,data$Y,main="Scatterplot Tingkat Pengangguran Terbuka dan
Indeks Pembangunan Manusia"
, xlab="TIndeks Pembangunan Manusia (X4)"
, ylab="Tingkat Penggangguran Terbuka (Y)"
,col="black")
abline(lm(data$Y~data$X4), col="darkred", lwd=3)
## Interpetasi:
Berdasarkan scatter plot di atas, dapat dilihat bahwa data menunjukkan pola yang linear menurun, karena sebagian besar titik data mendekati garis regresi meskipun terdapat beberapa titik yang menyimpang. Secara keseluruhan, hubungan antara variabel X_1 (Tingkat Partisipasi Angkatan Kerja) dan variabel Y (Tingkat Pengangguran Terbuka) dapat dikatakan linear. Selain itu, arah hubungan antara variabel Tingkat Pengangguran Terbuka (TPT) dengan variabel Tingkat Partisipasi Angkatan Kerja adalah berbanding terbalik, yaitu semakin besar nilai variabel Tingkat Partisipasi Angkatan Kerja maka semakin kecil nilai variabel Tingkat Pengangguran Terbuka (TPT).
Berdasarkan scatter plot di atas, dapat dilihat bahwa data menunjukkan pola yang linear meningkat, karena sebagian besar titik data mendekati garis regresi meskipun terdapat beberapa titik yang menyimpang. Secara keseluruhan, hubungan antara variabel X_2 (Harapan Lama Sekolah) dan variabel Y (Tingkat Pengangguran Terbuka) dapat dikatakan linear. Selain itu, arah hubungan antara variabel Tingkat Pengangguran Terbuka (TPT) dengan variabel Tingkat Partisipasi Angkatan Kerja adalah berbanding lurus, yaitu semakin besar nilai variabel Harapan Lama Sekolah maka semakin besar nilai variabel Tingkat Pengangguran Terbuka (TPT).
Berdasarkan scatter plot di atas, dapat dilihat bahwa data menunjukkan pola yang linear meningkat, karena sebagian besar titik data mendekati garis regresi meskipun terdapat beberapa titik yang menyimpang. Secara keseluruhan, hubungan antara variabel X_3 (PDRB Atas Dasar Harga Berlaku) dan variabel Y (Tingkat Pengangguran Terbuka) dapat dikatakan linear. Selain itu, arah hubungan antara variabel Tingkat Pengangguran Terbuka (TPT) dengan variabel PDRB Atas Dasar Harga Berlaku adalah berbanding lurus, yaitu semakin besar nilai variabel PDRB Atas Harga Dasar Berlaku maka semakin besar nilai variabel Tingkat Pengangguran Terbuka (TPT).
Berdasarkan scatter plot di atas, dapat dilihat bahwa data menunjukkan pola yang linear meningkat lemah, karena sebagian besar titik data mendekati garis regresi meskipun terdapat banyak titik yang menyimpang. Secara keseluruhan, hubungan antara variabel X_4 (Indeks Pembangunan Manusia) dan variabel Y (Tingkat Pengangguran Terbuka) dapat dikatakan linear. Selain itu, arah hubungan antara variabel Tingkat Pengangguran Terbuka (TPT) dengan variabel Indeks Pembangunan Manusia adalah berbanding lurus, yaitu semakin besar nilai variabel Indeks Pembangunan Manusia maka semakin besar nilai variabel Tingkat Pengangguran Terbuka (TPT).
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\\HP\\Downloads\\REGNOPAR SKRIPSI\\DATA ALL knot 1.csv")
cat("==============================================","\n")
cat("HASIL GCV terkecil dengan 1 knot","\n")
cat("==============================================","\n")
print(((dataG[1,1:6])))
cat("Nilai GCV 10 terkecil pertama","\n")
print(dataG[1:10,])
mingcv=dataG[1,1]
knotgcv=as.matrix(knot1[dataG[1,4],])
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))
mxgcv=mxgcv[,c(2:6)]
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
## 1.508187 45.000000 76.286735 14.630612 69.183673 75.922653
## Nilai GCV 10 terkecil pertama
## GCV knot_ke
## [1,] 1.508187 45 76.28673 14.63061 69.183673 75.92265
## [2,] 1.515931 44 75.92592 14.55327 67.719592 74.71082
## [3,] 1.603414 46 76.64755 14.70796 70.647755 77.13449
## [4,] 1.615275 43 75.56510 14.47592 66.255510 73.49898
## [5,] 1.734461 42 75.20429 14.39857 64.791429 72.28714
## [6,] 1.763515 47 77.00837 14.78531 72.111837 78.34633
## [7,] 1.830095 3 61.13245 11.38204 7.692245 25.02551
## [8,] 1.861406 4 61.49327 11.45939 9.156327 26.23735
## [9,] 1.869770 41 74.84347 14.32122 63.327347 71.07531
## [10,] 1.912402 5 61.85408 11.53673 10.620408 27.44918
##
## ==============================================
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 1
## ==============================================
## [,1]
## [1,] 1.100168e+01
## [2,] -2.352118e-01
## [3,] 8.683805e-01
## [4,] -5.401921e-03
## [5,] -1.233868e-02
## [6,] 5.699848e-01
## [7,] -1.336717e+02
## [8,] 4.073604e-01
## [9,] 6.923471e+00
#UJI SIGNIFIKANSI SATU TITIK KNOT#
uji=function(alpha,para)
{
# --- baca & siapkan titik knot terbaik (GCV terkecil) ---
knot = read.csv("C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\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 = knot[1, 4:7] # ambil knot X1-X4 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])
dataA=as.matrix(dataA)
satu=rep(1,n)
n1=4 # jumlah variabel X (X1-X4)
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])
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\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI RESIDUAL knot1.csv')
write.csv(mx, file='C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI RESIDUAL knot1.csv')
write.csv(yhat, file='C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI RESIDUAL 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 0.04471309
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 6.825617e-06
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.9079879
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.006735878
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 2.184894e-06
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5049048
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.07036832
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.09074499
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 4.259298e-07
## =============================================
## nilai t hitung
## =============================================
## [,1]
## [1,] 2.0624803
## [2,] -5.0617196
## [3,] 0.1162015
## [4,] 2.8350060
## [5,] -5.3953305
## [6,] -0.6719509
## [7,] 1.8516205
## [8,] -1.7269469
## [9,] 5.8681386
## Analysis of Variance
## =============================================
## Sumber df SS MS Fhit
## Regresi 8 167.6864 20.9608 19.73027
## Error 47 59.49258 1.062368
## Total 55 227.1789
## =============================================
## s= 1.030712 Rsq= 73.81246
## pvalue(F)= 1.239e-12
Model dengan GCV minimum yaitu 1,50819 memiliki titik knot optimal k_11=76,28673,k_12=14,63061,k_13=69,18367 dan k_14=75,92265. Model ini memiliki 9 parameter dan persamaannya adalah sebagai berikut: \(\[\hat{y}_i = 10.12239 - 0.20070\,x_{1i} + 0.07285\,(x_{1i} - 76.28673)_{+} + 0.76287\,x_{2i} - 21.84375\,(x_{2i} - 14.63061)_{+} - 0.00524\,x_{3i} + 0.41514\,(x_{3i} - 69.18367)_{+} - 0.01731\,x_{4i} + 1.05311\,(x_{4i} - 75.92265)_{+}\]\)
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\\HP\\Downloads\\REGNOPAR SKRIPSI\\DATA ALL knot 2.csv")
cat("==============================================","\n")
cat("HASIL GCV terkecil dengan 2 knot","\n")
cat("==============================================","\n")
print(((dataG[1,1:10])))
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
## 1.316068 135.000000 61.132449 76.286735 11.382041 14.630612 7.692245
##
## 69.183673 25.025510 75.922653
## Nilai GCV 10 terkecil pertama
## GCV knot_ke
## [1,] 1.316068 135 61.13245 76.28673 11.38204 14.63061 7.692245 69.18367
## [2,] 1.317894 179 61.49327 76.28673 11.45939 14.63061 9.156327 69.18367
## [3,] 1.321114 178 61.49327 75.92592 11.45939 14.55327 9.156327 67.71959
## [4,] 1.321402 134 61.13245 75.92592 11.38204 14.55327 7.692245 67.71959
## [5,] 1.358738 221 61.85408 75.92592 11.53673 14.55327 10.620408 67.71959
## [6,] 1.359630 222 61.85408 76.28673 11.53673 14.63061 10.620408 69.18367
## [7,] 1.359989 138 61.13245 77.36918 11.38204 14.86265 7.692245 73.57592
## [8,] 1.388799 136 61.13245 76.64755 11.38204 14.70796 7.692245 70.64776
## [9,] 1.393180 180 61.49327 76.64755 11.45939 14.70796 9.156327 70.64776
## [10,] 1.396087 177 61.49327 75.56510 11.45939 14.47592 9.156327 66.25551
##
## [1,] 25.02551 75.92265
## [2,] 26.23735 75.92265
## [3,] 26.23735 74.71082
## [4,] 25.02551 74.71082
## [5,] 27.44918 74.71082
## [6,] 27.44918 75.92265
## [7,] 25.02551 79.55816
## [8,] 25.02551 77.13449
## [9,] 26.23735 77.13449
## [10,] 26.23735 73.49898
##
## ==============================================
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 2
## ==============================================
## [,1]
## [1,] 95.3587176
## [2,] -2.9213119
## [3,] 6.1469387
## [4,] 0.2059982
## [5,] 0.7283636
## [6,] 2.7449916
## [7,] 0.7954129
## [8,] -5.3197766
## [9,] -18.0705567
## [10,] -0.2144538
## [11,] 0.2853691
## [12,] -0.7619877
## [13,] 0.9034632
#UJI SIGNIFIKANSI DUA TITIK KNOT#
uji=function(alpha,para)
{
knot = read.csv("C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\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:11]) # 8 nilai knot terbaik (X1a,X1b,X2a,X2b,X3a,X3b,X4a,X4b)
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])
dataA=as.matrix(dataA)
satu=rep(1,n)
n1=length(baris_knot) # = 8
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])
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\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI RESIDUAL knot2.csv')
write.csv(mx,file='C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI MX knot2.csv')
write.csv(yhat,file='C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\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
## ---------------------------------------------
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2064143
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.002583234
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.004789845
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2422198
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1561285
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2229634
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 1.532736e-05
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1557346
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1498621
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1649558
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.02812549
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.02406025
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 3.439945e-06
## =============================================
## nilai t hitung
## =============================================
## [,1]
## [1,] 1.282856
## [2,] -3.199948
## [3,] 2.975107
## [4,] 1.185782
## [5,] 1.443491
## [6,] -1.236557
## [7,] -4.872993
## [8,] 1.444899
## [9,] -1.466226
## [10,] 1.412651
## [11,] 2.272317
## [12,] -2.338846
## [13,] 5.327626
## Analysis of Variance
## =============================================
## Sumber df SS MS Fhit
## Regresi 12 183.7252 15.31043 19.73097
## Error 43 43.45373 0.7759595
## Total 55 227.1789
## =============================================
## s= 0.8808856 Rsq= 80.87246
## pvalue(F)= 1.075619e-13
Pemilihan dilanjutkan dengan dua titik knot pada setiap variabel. Berdasarkan output terdapat sepuluh nilai GCV terkecil, dengan dua nilai knot pada setiap sel berturut-turut menunjukkan knot pertama dan knot kedua. Model dengan GCV minimum yaitu 1,31607 memiliki titik knot optimal k_11=61,13245 k_21=76,28673 k_12=11,382054 k_22=14,63061 k_13=7,69224 k_23=69,18367 k_14=25,02551 k_24=75,92265 Model ini memiliki 13 parameter dan persamaannya adalah sebagai berikut: \(\[\hat{y}_i = 95.35872 - 2.92131\,x_{1i} + 2.74499\,(x_{1i} - 61.13245)_{+} + 0.79541\,(x_{1i} - 76.28673)_{+} + 6.14694\,x_{2i} - 5.31978\,(x_{2i} - 11.38204)_{+} - 18.07056\,(x_{2i} - 14.63061)_{+} + 0.20600\,x_{3i} + 0.21445\,(x_{3i} - 7.69224)_{+} + 0.28537\,(x_{3i} - 69.18367)_{+} + 0.72836\,x_{4i} + 0.76199\,(x_{4i} - 25.02551)_{+} + 0.90346\,(x_{4i} - 75.92265)_{+}\]\)
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\\HP\\Downloads\\REGNOPAR SKRIPSI\\DATA ALL knot 3.csv")
cat("==============================================","\n")
cat("HASIL GCV terkecil dengan 3 knot","\n")
cat("==============================================","\n")
print(((dataG[1,1:14])))
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
## 1.444246 2200.000000 61.132449 61.854082 76.286735 11.382041
##
## 11.536735 14.630612 7.692245 10.620408 69.183673 25.025510
##
## 27.449184 75.922653
## Nilai GCV 10 terkecil pertama
## GCV knot_ke
## [1,] 1.444246 2200 61.13245 61.85408 76.28673 11.38204 11.53673 14.63061
## [2,] 1.445793 3146 61.49327 61.85408 76.28673 11.45939 11.53673 14.63061
## [3,] 1.447104 2157 61.13245 61.49327 76.28673 11.38204 11.45939 14.63061
## [4,] 1.452451 3106 61.13245 77.00837 77.36918 11.38204 14.78531 14.86265
## [5,] 1.453903 2199 61.13245 61.85408 75.92592 11.38204 11.53673 14.55327
## [6,] 1.454858 3145 61.49327 61.85408 75.92592 11.45939 11.53673 14.55327
## [7,] 1.458180 2156 61.13245 61.49327 75.92592 11.38204 11.45939 14.55327
## [8,] 1.458931 2242 61.13245 62.21490 76.28673 11.38204 11.61408 14.63061
## [9,] 1.464584 3037 61.13245 73.03939 76.28673 11.38204 13.93449 14.63061
## [10,] 1.465580 3101 61.13245 76.28673 76.64755 11.38204 14.63061 14.70796
##
## [1,] 7.692245 10.620408 69.18367 25.02551 27.44918 75.92265
## [2,] 9.156327 10.620408 69.18367 26.23735 27.44918 75.92265
## [3,] 7.692245 9.156327 69.18367 25.02551 26.23735 75.92265
## [4,] 7.692245 72.111837 73.57592 25.02551 78.34633 79.55816
## [5,] 7.692245 10.620408 67.71959 25.02551 27.44918 74.71082
## [6,] 9.156327 10.620408 67.71959 26.23735 27.44918 74.71082
## [7,] 7.692245 9.156327 67.71959 25.02551 26.23735 74.71082
## [8,] 7.692245 12.084490 69.18367 25.02551 28.66102 75.92265
## [9,] 7.692245 56.006939 69.18367 25.02551 65.01612 75.92265
## [10,] 7.692245 69.183673 70.64776 25.02551 75.92265 77.13449
##
## ==============================================
## HASIL ESTIMASI PARAMETER TITIK KNOT KE 3
## ==============================================
## [,1]
## [1,] -4.87954771
## [2,] -0.57070096
## [3,] 1.29861828
## [4,] 0.20162854
## [5,] 1.23897094
## [6,] -2.60712938
## [7,] 3.03208076
## [8,] 0.76491110
## [9,] 13.80910092
## [10,] -14.12188192
## [11,] -19.59971920
## [12,] -0.22960609
## [13,] 0.02361872
## [14,] 0.25980650
## [15,] -1.94377923
## [16,] 0.67438515
## [17,] 0.92445503
#UJI SIGNIFIKANSI TIGA TITIK KNOT#
uji=function(alpha,para)
{
knot = read.csv("C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\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:15]) # 12 nilai knot terbaik (3*m = 12)
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])
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:3],data[,3],
data.knot[,4:6],data[,4],data.knot[,7:9],
data[,5],data.knot[,10: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:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI RESIDUAL knot3.csv')
write.csv(mx,file='C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\OUTPUT UJI mx knot3.csv')
write.csv(yhat,file='C:\\Users\\HP\\Downloads\\REGNOPAR SKRIPSI\\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
## ---------------------------------------------
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.6087605
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.7734961
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.5228609
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1758342
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.3014451
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.8976796
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.6190703
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.4479088
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 1.040868e-05
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.4567152
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.6607985
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.9315849
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2034532
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 0.04980339
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.1138228
## Gagal tolak Ho yakni variabel tidak signifikan dengan pvalue 0.2996611
## Tolak Ho yakni variabel bebas signifikan dengan pvalue 2.587599e-06
## =============================================
## nilai t hitung
## =============================================
## [,1]
## [1,] -0.51601044
## [2,] -0.28981099
## [3,] -0.64475471
## [4,] 1.37873375
## [5,] 1.04722022
## [6,] 0.12943381
## [7,] 0.50116758
## [8,] -0.76664478
## [9,] -5.05857856
## [10,] 0.75174871
## [11,] -0.44218412
## [12,] 0.08640707
## [13,] 1.29348236
## [14,] 2.02451772
## [15,] -1.61753944
## [16,] 1.05114669
## [17,] 5.49666947
## Analysis of Variance
## =============================================
## Sumber df SS MS Fhit
## Regresi 16 185.9148 11.61967 15.76917
## Error 39 41.26416 0.7368601
## Total 55 227.1789
## =============================================
## s= 0.8584055 Rsq= 81.83627
## pvalue(F)= 2.762142e-12
Langkah yang sama dilakukan untuk tiga titik knot. Berdasarkan output terdapat lima nilai GCV terkecil, dengan tiga nilai knot pada setiap sel berturut-turut menunjukkan knot pertama, kedua dan knot ketiga. Model dengan GCV minimum yaitu 1,44425 memiliki titik knot optimal k_11=61,13245 k_21=61,85408 k_31=76,28673 k_12=11,382054 k_22=11,53673 k_32=14,63061 k_13=7,69224 k_23=10,62041 k_33=69,18367 k_14=25,02551 k_24=27,44918 k_34=75,92265 Model ini memiliki 17 parameter dan persamaannya adalah sebagai berikut: \(\[\hat{y}_i = -4.87955 - 0.57070\,x_{1i} + 2.60713\,(x_{1i} - 61.13245)_{+} + 3.03208\,(x_{1i} - 61.85408)_{+} + 0.76491\,(x_{1i} - 76.28673)_{+} + 1.29862\,x_{2i} + 13.80910\,(x_{2i} - 11.38204)_{+} - 14.12188\,(x_{2i} - 11.53673)_{+} - 19.59972\,(x_{2i} - 14.63061)_{+} + 0.20163\,x_{3i} - 0.22961\,(x_{3i} - 7.69224)_{+} + 0.02362\,(x_{3i} - 10.62041)_{+} + 0.25981\,(x_{3i} - 69.18367)_{+} + 1.23897\,x_{4i} - 1.94378\,(x_{4i} - 25.02551)_{+} + 0.67439\,(x_{4i} - 27.44918)_{+} + 0.92446\,(x_{4i} - 75.92265)_{+}\]\) Pada model tiga knot, beberapa fungsi truncated hanya bernilai tidak nol pada satu sampai enam pengamatan, dan matriks desainnya hanya berpangkat 16 dari 17 kolom. Akibatnya parameter pada model ini tidak dapat ditaksir secara unik (diselesaikan dengan pseudo-inverse), sehingga estimasinya tidak stabl dan sulit diinterpretasikan.
Pemilihan Model Terbaik Berdasarkan GCV Minimum Model terbaik dipilih dari nilai GCV yang paling minimum di antara model dengan satu, dua, dan tiga tiitk knot. Perbandingannya disajikan pada tabel berikut. Tabel 3. Perbandingan Model Spline Truncated Titik Knot Jumlah Parameter GCV R^2 1 9 1,50819 73,81% 2 13 1,31607 80,87% 3 17 1,44425 81,84% GCV terkecil yaitu 1,31607 diperoleh pada modle dengan dua titik knot. Model tiga knot menambah jumlah parameter tetapi GCV-nya justru naik dan R^2-nya hanya bertambah sekitar 1,0 poin. Jadi model terbaik adalah regresi nonparametrik spline truncated dengan dua titik knot.
Penaksirann Parameter Model Regresi Nonparmetrik Spline Truncated Berdasarkan titik knot optimal, hasil estimasi parameter model terbaik (dua titik knot) adalah: \(\[\hat{y}_i = 95.35872 - 2.92131\,x_{1i} + 2.74499\,(x_{1i} - 61.13245)_{+} + 0.79541\,(x_{1i} - 76.28673)_{+} + 6.14694\,x_{2i} - 5.31978\,(x_{2i} - 11.38204)_{+} - 18.07056\,(x_{2i} - 14.63061)_{+} + 0.20600\,x_{3i} + 0.21445\,(x_{3i} - 7.69224)_{+} + 0.28537\,(x_{3i} - 69.18367)_{+} + 0.72836\,x_{4i} + 0.76199\,(x_{4i} - 25.02551)_{+} + 0.90346\,(x_{4i} - 75.92265)_{+}\]\) Model ini memilki nilai koefisien determinasi 〖(R〗^2) sebesar 80,87246% yang artinya sekitar 80,87% keragaman TPT dapat dijelasikan oleh keempat variabel prediktor, sedangkan sisanya dijelaskan oleh faktor lain di luar model. Nilai ini jauh lebih tinggi daripada regresi linier berganda yang hanya mencapai 52,60%.
Pengujian Signifikansi Parameter Model Regresi Spline Truncated Pengujian signifikansi dilakukan untuk mengetahui apakah variabel prediktor berpengaruh terhadap TPT, melalui uji simultan dan uji parsial. Uji parsial dilakukan apabila hasil uji simultan menunjukkan minimal satu parameter signifikan. Pada kedua uji ini, kuadrat tengah galat dihitung sebagai JK Galat / (n - p), dengan n = 56 dan p = 13.
Pengujian Signifikansi Parameter Secara Simultan Hipotesis H_0 ∶
β_11=β_12=⋯=β_43=0 (Secara simultan keempat variabel prediktor yaitu
Tingkat Partisipasi Angkatan Kerja, Harapan Lama Sekolah, PDRB Atas
Dasar Harga Berlaku dan Indeks Pembangunan Manusia tidak berpengaruh
secara signifikan terhadap Tingkat Pengangguran Terbuka) H_1 ∶minimal
terdapat satu β_(j(1+h))≠0,dengan j=1,2,3,4 dan h=1,2,3 (Secara simultan
keempat variabel prediktor yaitu Tingkat Partisipasi Angkatan Kerja,
Harapan Lama Sekolah, PDRB Atas Dasar Harga Berlaku dan Indeks
Pembangunan Manusia berpengaruh secara signifikan terhadap Tingkat
Pengangguran Terbuka) Taraf Signifikasi α=0,05 Statistik Uji Uji F
Daerah Kritis H_0 ditolak jikap-value<α atau F_hitung>F_tabel Statistik
Hitung Tabel 4. Analisis Ragam Model Dua Titik Knot Sumber Variasi DB
Jumlah Kuadrat Kuadrat Tengah F_hitung p-value Regresi 12 183,72521
15,31043 15,15057 9,57×10^(-12) Galat 43 43,45373 1,01055
Total 55 227,17894
Keputusan H_0 ditolak karena p-value=9,57×10^(-12)<α=0,05 dan
F_hitung=15,15057>F_tabel (0,05;(12,43))=2,00 Kesimpulan Secara
simultan keempat variabel prediktor yaitu Tingkat Partisipasi Angkatan
Kerja, Harapan Lama Sekolah, PDRB Atas Dasar Harga Berlaku dan Indeks
Pembangunan Manusia berpengaruh secara signifikan terhadap Tingkat
Pengangguran Terbuka
Pengujian Signifikansi Parameter Secara Parsial Hipotesis H_0 ∶ β_jl=β_(j(1+h))=0 dimana j=1,2,3,4 dan h=1,2,3 (Secara parsial variabel Tingkat Partisipasi Angkatan Kerja, Harapan Lama Sekolah, PDRB Atas Dasar Harga Berlaku dan Indeks Pembangunan Manusia tidak berpengaruh secara signifikan terhadap Tingkat Pengangguran Terbuka) H_1 ∶ Minimal terdapat satu β_jl=β_(j(1+h))≠0; dengan j=1,2,3,4 dan h=1,2,3 (Secara parsial variabel Tingkat Partisipasi Angkatan Kerja, Harapan Lama Sekolah, PDRB Atas Dasar Harga Berlaku dan Indeks Pembangunan Manusia berpengaruh secara signifikan terhadap Tingkat Pengangguran Terbuka) Taraf Signifikasi α=0,05 Statistik Uji Uji t Daerah Kritis H_0 ditolak jikap-value<α atau t_hitung>t_tabel Statistik Hitung Tabel 5. Hasil Uji Parsial Parameter Model Dua Titik Knot Variabel Parameter Estimasi t_hitung p-value Keputusan y β_0 95,35872 1,1241 0,2672 Tidak Signifikan x_1 β_1,1 -2,92121 -2,8040 0,0075 Signifikan β_1,2 2,74499 2,6070 0,0125 Signifikan β_1,3 0,79541 1,0391 0,3046 Tidak Signifikan x_2 β_2,1 6,14694 1,2649 0,2127 Tidak Signifikan β_2,2 -5,31978 -1,0836 0,2846 Tidak Signifikan β_2,3 -18,07056 -4,2701 0,0001 Signifikann x_3 β_3,1 0,20600 1,2661 0,2123 Tidak Signifikan β_3,2 -0,21445 -1,2848 0,2057 Tidak Signifikan β_3,3 0,28537 1,2379 0,2225 Tidak Signifikan x_4 β_4,1 0,72836 1,9912 0,0528 Tidak Signifikan β_4,2 -0,76199 -2,0495 0,0465 Signifikan β_4,3 0,90346 4,6685 <0,0001 Signifikan Keputusan H_0 ditolak untuk parameter β_1,1,β_1,2,β_2,3,β_4,2, dan β_4,3 karena p-value<α=0,05 sedangkan H_0 gagal ditolak untuk parameter β_0,β_1,3,β_2,1,β_2,2,β_3,1,β_3,2,β_3,3, dan β_4,1 karena p-value>α=0,05 Kesimpulan Secara parsial dari 13 parameter pada model dua titik knot terdapat 5 parameter yang signifikan, yaitu β_1,1, β_1,2, β_2,3, β_4,2 , dan β_4,3. Kemudian 8 parameter lainnya, yaitu konstanta β_0,β_1,3,β_2,1,β_2,2,β_3,1,β_3,2,β_3,3,dan β_4,1, tidak signifikan secara parsial. Dengan demikian variabel yang berpengaruh signifikan secara parsial adalah Tingkat Partisipasi Angkatan Kerja (X_1), Harapan Lama Sekolah (X_2), dan Indeks Pembangunan Manusia (X_4), sedangkan PDRB Atas Dasar Harga Berlaku (X_3) tidak berpengaruh signifikan
Interpretasi Model Regresi Nonparametrik Spline Truncated Interpretasi dilakukan pada model dua titik knot. Pengaruh setiap variabel diuraikan dengan menganggap variabel prediktor lainnya konstan, sehingga fungsi yang diinterpretasikan hanya memuat suku-suku dari variabel yang bersangkutan. Karena TPT dinyatakan dalam persen, perubahan TPT dinyatakan dalam poin persen. Pengaruh Variabel X_1 (Tingkat Partisipasi Angkatan Kerja) Apabila variabel lain dianggap konstan, pengaruh Tingkat Partisipasi Angkatan Kerja terhadap TPT adalah \(\[\hat{y}_i = -2.92131\,X_{1} + 2.74499\,(X_{1} - 61.13245) + 0.79541\,(X_{1} - 76.28673)_{+}\]\), yang dapat dituliskan per rentang sebagai berikut. \(\[\{-2.92131\,X_{1},\; -0.17632\,X_{1} - 167.80806,\; 0.61909\,X_{1} - 228.48751\}\]\)
\(\[\{\, X_1 < 61.13245,\; 61.13245 \leq X_1 < 76.28673,\; X_1 > 76.28673 \,\}\]\)
Interpretasi: Jika tingkat partisipasi angkatan kerja kurang dari 61,13245, setiap kenaikan 1 poin persen akan menurunkan TPT sebesar 2,92131 poin persen. Jika nilainya antara 61,13245 dan kurang dari 76,28673, setiap kenaikan 1 poin persen akan menurunkan TPT sebesar 0,17632 poin persen. Jika nilainya 76,28673 atau lebih, setiap kenaikan 1 poin persen akan menaikkan TPT sebesar 0,61909 poin persen. Parameter komponen linier dan knot pertama signifikan, sedangkan knot kedua tidak signifikan.
Pengaruh Variabel X_2 (Harapan Lama Sekolah)
Apabila variabel lain dianggap konstan, pengaruh Harapan Lama Sekolah terhadap TPT adalah ŷ = 6,14694X2 - 5,31978(X_2 - 11,38204)+ - 18,07056〖(X_2 - 14,63061)〗_+, yang dapat dituliskan per rentang sebagai berikut. \(\[\{\, 6.14694\,X_{2},\; 0.82716\,X_{2} + 60.54991,\; -17.24339\,X_{2} + 324.93322 \,\}\]\)
\(\[\{\, X_{2} < 11.38204,\; 11.38204 \leq X_{2} < 14.63061,\; X_{2} > 14.63061 \,\}\]\)
Interpretasi: Jika harapan lama sekolah kurang dari 11,38204, setiap kenaikan 1 tahun akan menaikkan TPT sebesar 6,14694 poin persen. Jika nilainya antara 11,38204 dan kurang dari 14,63061, setiap kenaikan 1 tahun akan menaikkan TPT sebesar 0,82716 poin persen. Jika nilainya 14,63061 atau lebih, setiap kenaikan 1 tahun akan menurunkan TPT sebesar 17,24339 poin persen. Hanya komponen knot kedua yang signifikan komponen linier dan knot pertama tidak signifikan.
Pengaruh Variabel X_3 (PDRB Atas Dasar Harga Berlaku)
Apabila variabel lain dianggap konstan, pengaruh PDRB Atas Dasar Harga Berlaku terhadap TPT adalah ŷ = 0,20600X3 - 0,21445(X_3 - 7,69224)+ + 0,28537〖(X_3 - 69,18367)〗_+, yang dapat dituliskan per rentang sebagai berikut. \(\[\{\, 0.20600\,X_{3},\; -0.00846\,X_{3} + 1.64963,\; 0.27691\,X_{3} - 18.09325 \,\}\]\)
\(\[\{\, X_{3} < 7.69224,\; 7.69224 \leq X_{3} < 69.18367,\; X_{3} > 69.18367 \,\}\]\)
Interpretasi: Jika PDRB atas dasar harga berlaku kurang dari 7,69224, setiap kenaikan 1 satuan akan menaikkan TPT sebesar 0,20600 poin persen. Jika nilainya antara 7,69224 dan kurang dari 69,18367, setiap kenaikan 1 satuan akan menurunkan TPT sebesar 0,00846 poin persen. Jika nilainya 69,18367 atau lebih, setiap kenaikan 1 satuan akan menaikkan TPT sebesar 0,27691 poin persen. Seluruh komponen tidak signifikan, sehingga pola pada variabel ini tidak dapat dinyatakan berpengaruh nyata terhadap TPT.
Pengaruh Variabel X_4 (Indeks Pembangunan Manusia)
Apabila variabel lain dianggap konstan, pengaruh Indeks Pembangunan Manusia terhadap TPT adalah ŷ = 0,72836X4 - 0,76199(X_4 - 25,02551)+ + 0,90346〖(X_4- 75,92265)〗_+, yang dapat dituliskan per rentang sebagai berikut. \(\[\{\, 0.72836\,X_{4},\; -0.03362\,X_{4} + 19.06913,\; 0.86984\,X_{4} - 49.52419 \,\}\]\)
\(\[\{\, X_{4} < 25.02551,\; 25.02551 \leq X_{4} < 75.92265,\; X_{4} > 75.92265 \,\}\]\) Interpretasi: Jika indeks pembangunan manusia kurang dari 25,02551, setiap kenaikan 1 poin akan menaikkan TPT sebesar 0,72836 poin persen. Jika nilainya antara 25,02551 dan kurang dari 75,92265, setiap kenaikan 1 poin akan menurunkan TPT sebesar 0,03362 poin persen. Jika nilainya 75,92265 atau lebih, setiap kenaikan 1 poin akan menaikkan TPT sebesar 0,86984 poin persen. Seluruh komponen (linier, knot pertama, dan knot kedua) signifikan.