Anda di halaman 1dari 44

PENGENALAN R

R adalah bahasa pemrograman dan software environment untuk komputasi


statistik dan grafik. R dikembangkan di Bell Laboratories (sebelumnya AT&T,
sekarang Lucent Technologies) oleh John Chambers dan kawan-kawannya. R
menyediakan berbagai macam teknik statistik seperti pemodelan linier dan nonlinier, uji
statistik klasik, analisis deret waktu, klasifikasi, pengelompokan, dan teknik grafis.
Inti dari R adalah bahasa komputer yang diinterpretasikan yang memungkinkan
percabangan dan perulangan serta pemrograman modular menggunakan fungsi. R
memungkinkan integrasi dengan prosedur yang ditulis dalam bahasa C, C ++, .Net,
Python, atau FORTRAN untuk efisiensi. R tersedia secara free di bawah Lisensi Publik
Umum GNU (GNU General Public License).
Berikut ini adalah fitur-fitur penting R:
 Bahasa pemrograman yang berkembang dengan baik, sederhana dan efektif yang
mencakup kondisional, loop, fungsi rekursif yang ditentukan pengguna dan fasilitas
input dan output.
 Memiliki fasilitas penanganan dan penyimpanan data yang efektif,
 Menyediakan seperangkat operator untuk kalkulasi pada array, list, vektor, dan matriks.
 Menyediakan kumpulan alat yang besar, koheren dan terintegrasi untuk analisis data.
 Menyediakan fasilitas grafis untuk analisis data dan ditampilkan baik secara
langsung di komputer atau dicetak di kertas.
Instalasi

R dapat diunduh di https://cran.r-project.org/. R tersedia untuk sistem operasi


Windows, Mac OS X, dan Linux. Sesuaikan R yang diunduh dengan sistem operasi yang
digunakan. Pada Windows, file yang diunduh adalah file installer windows (.exe) dengan
nama "R-version-win.exe". Klik dua kali dan jalankan instalasi, bisa memilih dengan
pengaturannya secara default. R tersedia untuk arsitektur 32 bit dan 64 bit. Setelah
instalasi, program dapat dapat ditemukan dalam struktur direktori "R\R4.0.2\bin\i386\
Rgui.exe" di File Program Windows (sebagai contoh C:\Program Files\R\R- 4.0.2\bin\
i386\Rgui.exe). Dengan mengklik R-GUI, maka akan menampilkan R-GUI yang
merupakan konsol R untuk menjalankan pemrograman R.
Fungsi dan Operator Dasar

Fungsi atau kode pada lingkungan R adalah case sensitif, artinya penggunaan
huruf besar atau kecil sangat berpengaruh. Misal jika fungsi adalah setwd() ditulis
dengan huruf kecil maka perintah yang ditulis dengan SETWD() atau SetWD() tidak
akan dikenali oleh lingkungan R. Hal ini juga berpengaruh pada penulisan sintaks
program atau penulisan fungsi. Fungsi pada lingkungan R memiliki akhiran (). Tanda ()
dapat berisi parameter, seperti contoh berikut ini:
> setwd("C:/Users/NamaUser/Downloads")
> print("hello world")
R menyediakan bantuan atau manual penggunaan. Untuk mengakses halaman
bantuan atau manual tersebut dapat menggunakan fungsi berikut ini.
> help.start()
Selain itu fungsi help() dapat digunakan untuk memberikan bantuan guna
mengetahui penggunaan suatu perintah.
> help(ls)

R Studio

R Studio adalah lingkungan pengembangan terintegrasi (IDE) sumber terbuka dan


gratis untuk R, bahasa pemrograman untuk komputasi statistik dan grafik. R Studio didirikan
oleh JJ Allaire,  pencipta bahasa pemrograman ColdFusion . Hadley Wickham adalah Kepala
Ilmuwan di RStudio. 
RStudio tersedia dalam dua edisi: RStudio Desktop, di mana program dijalankan
secara lokal sebagai aplikasi desktop biasa; dan RStudio Server, yang memungkinkan
mengakses RStudio menggunakan browser web saat sedang berjalan di server Linux jarak
jauh. Distribusi prepackaged Desktop RStudio tersedia untuk Windows, macOS, dan Linux .
RStudio tersedia dalam edisi open source dan komersial dan berjalan di desktop
(Windows, macOS, dan Linux) atau di browser yang terhubung ke RStudio Server atau
RStudio Server Pro ( Debian, Ubuntu, Red Hat Linux, CentOS, openSUSE dan SLES ). 
RStudio sebagian ditulis dalam bahasa pemrograman C++ dan
menggunakan kerangka kerja Qt untuk antarmuka pengguna grafisnya . Persentase kode yang
lebih besar ditulis dalam Java. Java Script juga di antara bahasa yang digunakan. 
Operasi Matematika
Pada pemrogaman R pengguna dapat melakukan operasi matematika. Operator
adalah salah sarana yang digunakan untuk melakukan operasi matematika. Contoh di
bawah ini adalah penggunaan operasi matematika sederhana.
> 1+2
[1] 3
> 2-3
[1] -1
> 3*5
[1] 15
> 4/2
[1] 2
> 5^2
[1] 25
Selain operator matematika seperti contoh di atas, R juga memiliki operator
untuk assignment yaitu = atau tanda panah (<- atau ->). Pada contoh di bawah ini dapat
dilihat penggunaan keduanya dan perbedaannya.
> x = 5+5
>
x
[1] 10
> y <- 43*x-1
>y
[1] 429
> 5+3*y -> z
>z
[1] 1292
> 7-4 = a
Error: object 'a' not found
Dasar Pemrograman
1. Variabel
Deklarasi tipe data untuk variabel yang digunakan pada R tidak perlu dilakukan .
Tipe data variabel akan sesuai dengan data yang dimasukkan pada variabel tersebut.
>a = 3
> typeof(a)
[1] "double"
> b = "data"
> typeof(b)
[1] "character"
> c = TRUE
> typeof(c)
[1] "logical"
Dari contoh di atas dapat dilihat variabel “a” diberikan nilai angka, kemudian
variabel “b” diberikan nilai dengan tipe string dan terakhir variabel “c” diberikan nilai
boolean.
2. Tipe Data
Variabel dalam lingkungan R tidak harus dideklarasikan tipe datanya sebelum
digunakan, namun lingkungan R tetap mengenal tipe data. Pada lingkungan R tipe data
digolongkan menjadi :
a. Skalar
Contoh tipe skalar, yaitu:
1. Number, secara default digunakan double.
2. Character, selain single character juga dapat menangani string.
3. Logical, yaitu bernilai TRUE atau FALSE.
b. Vector
Pembuatan vector menggunakan fungsi c(). Vector dapat berisi tipe data
skalar seperti number, character atau logical.
> vec_number <- c(1,2,-3.5,6,-7,10)
> vec_number
[1] 1.0 2.0 -3.5 6.0 -7.0 10.0
> vec_char = c("training", "software", "statistika")
> vec_char
[1] "training" "software" "statistika"
> vec_bool = c(TRUE, FALSE, TRUE, FALSE)
> vec_bool
[1] TRUE FALSE TRUE FALSE
c. Factor
Factor dapat dibentuk dari vector. Factor digunakan untuk
mengkategorikan nilai-nilai yang dimiliki oleh suatu variabel. Contoh
mengkategori nilai akhir mata kuliah mahasiswa.
> nilai_v = c("A", "A", "C", "B", "A", "E", "B", "B", "A", "B",
"A", "A", "C", "D", "C","D", "A" ,"C")
> nilai_f = factor(nilai_v)
> nilai_f
[1] A A C B A E B B A B A A C D C D A C
Levels: A B C D E
> summary(nilai_f)
A B C D E
7 4 4 2 1
d. Matrix
Pembuatan matrix dapat mengikuti sintaks secara umum berikut ini.
> matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames =
NULL)
Keterangan fungsi :
 data: isi dari matrix. Nilai dapat diisi dari vector.
 nrow: jumlah baris.
 ncol: jumlah kolom.
 byrow: jika nilainya FALSE maka matrix diisi berdasarkan kolom, jika
TRUE akan diisi berdasarkan row.
 dimnames: digunakan untuk menentukan nama kolom dan baris.
Dalam membuat matrix harus diperhatikan bahwa:
 Seluruh kolom pada matrix harus berisi tipe data yang sama (numeric, char,
boolean).
 Seluruh kolom harus memiliki panjang yang sama.
Contoh membuat matrix di R sebagai berikut.
> x = matrix(data=1:20, nrow=4, ncol=5)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> y=matrix(data=1:20, nrow=4, ncol=5, byrow=TRUE)
> y
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
> data = c(1,3,5,7)
> nama_baris = c("R1", "R2")
> nama_kolom = c("C1", "C2")
> z = matrix(data, nrow=2, ncol=2, byrow=TRUE,
dimnames=list(nama_baris,nama_kolom))
> z
C1 C2
R1 1 3
R2 5 7
e. Array
Tipe data ini mempunyai karakteristik seperti matrix namun bedanya
dimensi yang dimiliki array dapat lebih dari 2, seperti diketahui bahwa matrix
hanya dapat memiliki dimensi N x N. Array dapat memiliki dimensi N x N x N,
N x N x N x N, dan seterusnya.
> number_arr = array(1:27, dim=c(3,3,3))
> number_arr
, , 1

[,1] [,2] [,3]


[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

, , 2

[,1] [,2] [,3]


[1,] 10 13 16
[2,] 11 14 17
[3,] 12 15 18

, , 3

[,1] [,2] [,3]


[1,] 19 22 25
[2,] 20 23 26
[3,] 21 24 27
f. Data Frame
Frame lebih general jika dibandingkan dengan matrix, karena dapat
memiliki tipe data skalar yang berbeda, namun jumlah elemen seluruh kolom
tetap harus sama. Membuat kumpulan vector menjadi data frame dapat
dijalankan dengan fungsi secara umum sebagai berikut.
> data.frame(..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
Contoh pembuatan data frame :

> a = c(11,21,30,43)
> b = c("green", "yellow", "white", "red")
> c = c(TRUE,FALSE,TRUE,FALSE)
> data_frame = data.frame(a,b,c)
> names(data_frame) = c("ID","Color","Passed")
> data_frame
ID Color Passed
1 11 green TRUE
2 21 yellow FALSE
3 30 white TRUE
4 43 red FALSE
g. List
Fungsi list() dapat digunakan untuk membuat variabel yang terdiri dari
banyak objek dengan tipe data yang beragam. Contoh pembuatan list seperti di
bawah ini.
> colors = c("green", "yellow", "red")
> int_numbers = c(1,21,3,43)
> list_data <- list(colors, int_numbers, TRUE, 51.23, 119.1)
> print(list_data)
[[1]]
[1] "green" "yellow" "red"

[[2]]
[1] 1 21 3 43

[[3]]
[1] TRUE

[[4]]
[1] 51.23

[[5]]
[1] 119.1
REGRESI NONPARAMETRIK: SPLINE TRUNCATED

A. Regresi Parametrik
Analisis regresi merupakan salah satu teknik statistik yang digunakan secara luas
dalam ilmu pengetahuan terapan. Disamping digunakan untuk mengetahui bentuk
hubungan antara 2 variabel atau lebih, regresi juga dapat dipergunakan untuk
peramalan. Variabel-variabel dalam regresi ada 2 jenis yaitu variabel independen
(variabel prediktor/variabel bebas/variabel yang menerangkan) dan variabel dependen
(variabel respon/variabel terikat/ variabel yang diterangkan).
Jika pola datanya membentuk pola tertentu misalnya berpola garis lurus,
eksponensial, atau yang lainnya, maka pendekatan regresinya menggunakan regresi
parametrik. Dalam kasus parame trik, metode kuadrat terkecil biasa digunakan untuk
mencocokkan garis-garis regresi dengan data sampel yang teramati, dan peng ambilan
kesimpulan yang menyangkut parameter populasi berlandaskan pada asumsi-asumsi
yang harus dipenuhi. Apabila asumsi-asumsi ini dapat dipenuhi, maka prosedur-
prosedur kesimpulan parametrik dapat digunakan. Namun demikian, jika asumsi-
asumsi tersebut dilanggar, penerapan prosedur kesimpulan parametrik akan
menyesatkan. Untuk mengatasi hal tersebut maka prosedur nonparametrik digunakan
sebagai penggantinya. Adapun asumsi yang harus dipenuhi dalam model parametrik
adalah error menyebar NID ¿).
B. Regresi Nonparametrik
Pada prinsipnya pendekatan nonparametrik dilakukan untuk memodelkan data
yang tidak diketahui bentuk fungsinya. Jenis data yang fluktuatif dan tidak
membentuk suatu pola hubungan tertentu akan sulit didekati dengan regresi
parametrik sehingga pendekatan nonparametrik merupakan pendekatan yang paling
tepat digunakan dalam hal ini. Kurva regresi berdasarkan pendekatan nonparametrik
ini diwakili oleh model yang disebut regresi nonparametrik. Dalam regresi
nonparametrik tidak mengharuskan adanya asumsi yang ketat seperti halnya pada
regresi parametrik.
Meskipun regresi nonparametrik merupakan regresi untuk mengatasi pemodelan
data yang tidak membentuk pola hubungan tertentu, akan tetapi model regresi
nonparametrik tetap dapat di gunakan untuk memodelkan data yang berbentuk apa
saja, baik linier maupun nonlinier dikarenakan tidak adanya asumsi yang harus
dipenuhi. Model regresi nonparametrik secara matematis dapat ditulis:
Y i=m ( x i ) +ε i
Dengan ε i adalah galat yang diasumsikan terdistribusi di sekitar 0, m(x) adalah
sebuah fungsi yang mewakili perilaku intrinsik dari data. Ada beberapa teknik
pendugaan m(x) dalam regresi nonparametrik yakni metode Kernel, Spline,
Polinomial Lokal, Deret Fourier, dan Wavelet.
C. Regresi Nonparametrik Spline Truncated
Regresi spline merupakan model regresi yang mempunyai interpretasi statistik
dan visual sangat khusus dan sangat baik disamping itu juga mampu menangani
karakter data yang mulus (smooth). Spline dalam regresi nonparametrik mempunyai
sifat fleksibel dan mempunyai kemampuan mengestimasi perilaku data yang
cenderung berbeda pada interval yang berlainan (Eubank, 1999 dan Budiantara,
2005). Spline merupakan potongan (truncated) polinomial tersegmen yang kontinu,
sehingga memiliki kemampuan menyesuaikan diri lebih efektif dari karakteristik data.
Secara umum fungsi spline keluarga polinomial truncated berorder (m+1)
didefinisikan sebagai fungsi dengan titik-titik knot ξ 1 ,ξ 2 , … , ξk (a<ξ 1 <ξ 2< …<ξ k <b)
yang disajikan dalam bentuk sebagai berikut:
m k
f (x)=∑ β j x + ∑ β j+ m ( x−ξ j )+¿ ¿
j
m

j=0 j =1

Dengan fungsi truncated,


(x−ξ j) m
m
(x−ξ j) ; x−ξ j ≥0
+¿ ={ ¿
0 ; x−ξ j <0

Dalam hal ini koefisien β j , merupakan konstanta yang bernilai real dengan
j=0 , 1, … , m−1 , m, m+1 ,… ,k + m. Biasanya a diambil dari nilai minimum x dan b
diambil dari nilai maksimum x. Penyajian fungsi spline dengan titik knot memiliki
interpretasi matematika dan statistika yang baik dan sederhana. Persoalan optimasi
yang digunakan dapat menggunakan metode optimasi least square biasa.
Jika diberikan pilihan untuk knot ∏ ¿ {ξ 1 , … , ξ k }maka f(x) dapat diestimasi
dengan mengestimasi koefisien persamaan fungsi spline. Salah satu metode yang
memenuhi pendekatan ini adalah dengan menggunakan least square spline (Eubank,
1999). Apabila diberikan model nonparametrik:
y i=f ( x i) + ε i

dengan i=1,2 , ...dan ε i merupakan residual dengan mean nol dan varian σ 2, bentuk
umum regresi spline keluarga polinomial truncated order ke-(m+1) dengan satu
variabel prediktor adalah:
m k
y=∑ β j x + ∑ β j+m+1 (x−ξ j )+¿ + ε ¿
j
m

j=0 j=1

Spline Multivariabel

Diberikan data ( x 1 i , x 2 i , … , x pi , y i ) dan hubungan antara ( x 1 i , x 2 i , … , x pi ) dan y i


diasumsikan mengikuti model regresi nonparametrik, y i=f ( x 1i , x2 i , … , x pi ) +ε i, untuk
i=1,2 , … , n dengan y i variabel respon, f kurva regresi yang tidak diketahui
bentuknya. Apabila f dihampiri dengan fungsi spline multivariabel maka regresi
spline multivariabel dapat ditulis menjadi :

y i=f 1 ( x1 i ) + f 2 ( x 2 i ) +…+ f p ( x pi ) + ε i

Sehingga model ini secara sederhana dapat ditulis menjadi :

p
y i=∑ f l ( x li ) + ε i
l =1

Dengan p merupakan banyaknya variabel prediktor. Orde setiap variabel ( m+1 )


dengan titik knot sebanyak r. Sehingga regresi spline multivariabel orde m+1 dengan r
titik knot dapat ditulis menjadi :

m r
f ( x li )=∑ akl x kli + ∑ βlj ( xli −K jl )+¿ ¿ m

k=0 j=1

p
y i=∑ ¿¿
l =1

p p
y i=∑ a0 l x li +∑ ¿ ¿
0

l =1 l=1

p m p r
y i=a00+ ∑ ∑ a kl xli + ∑ ∑ β lj ( x li −K jl )+¿ +ε i ¿
k
m

l=1 k=0 l=1 j=1

Dengan

( x li −K jl )
{( }
m
m xli −K jl ) , xli −K jl ≥0
+¿ = ¿
0 ,x li −K jl <0
Fungsi penduga dari f(x) untuk regresi spline multivariabel dengan p variabel
prediktor, orde setiap variabel adalah (m+1) dan banyaknya titik knot setiap variabel
adalah r.

^f ( x )=X β^
П П П

−1
¿ X П ( X TП X П ) X TП Y =H П Y

−1
Dengan H П =X П ( X TП X П ) X TП matriks simetris dan definit positif (Eubank,
1999).

Penentuan Titik Knot Optimal


Titik knot merupakan titik perpaduan bersama dimana terdapat perubahan
perilaku pola pada interval yang berlainan. Untuk mendapatkan spline optimal perlu
dipilih banyaknya titik-titik knot dan letak titik-titik knot yang optimal. Ada beberapa
metode dalam pemilihan letak titik-titik knot, diantaranya dengan metode proyeksi
variabel, metode CV (Cross Validation), metode GCV (Generalized Cross Validation
). Adapun penejelasan untuk masing-masing pemilihan titik knot maksimum adalah
sebagai berikut:
1. Metode Proyeksi Variabel
Metode proyeksi variabel adalah suatu metode untuk memilih titik-titik knot
dengan meminimalkan RSS.
n
RSS ( Π )=∑ ( y i− ^f Π ( x i ))2
i=1

2. Metode CV
Metode CV adalah suatu metode untuk memilih titik-titik knot dengan
meminimalkan CV.
n
CV ( Π ) =∑ ( y i −f^ Π (i) )
2

i=1

Dengan ^f Π (i ) menyatakan prediksi dari y i yang hanya menggunakan n-1 titik-titik


data yaitu dengan meninggalkan data ke-i.
^f =f^ −h ( y − ^f )/(1−h )
Π (i ) Πi i i fΠi i

3. Metode GCV
Metode GCV adalah suatu metode untuk memilih titik-titik knot dengan
meminimalkan GCV.
−1
n RSS ( Π )
GCV ( Π )= 2
( n−1 trace [ I −H ( Π ) ] )
Ada beberapa aturan dalam menempatkan posisi knot antara lain:
1. Untuk spline linier (orde 2 atau m-1), tempatkan knot pada titik dimana terjadi
perubahan slope data.
2. Untuk spline kuadratik (orde 3 atau m=2) tempatkan knot dekat maksimum,
minimum atau titik perubahan pada data.
3. Untuk spline kubik (orde 4 atau m=3) , susun knot agar dekat titik perubahan
pada data dan tidak lebih dari satu titik ekstrim (maksimum atau minimum)
dan satu titik perubahan terjadi diantara dua titik knot.
REGRESI SPLINE UNIVARIAT DENGAN R STUDIO

Langkah-langkah penyelesaian masalah dengan R:


1. Penyiapan data
2. Install package MLmetric, untuk menghitung MAPE
3. Penentuan titik knot optimal untuk setiap orde
4. Memilih model optimum dengan GCV terkecil
5. Mestimasi model dan menggambar model terbaik

Sintaks Pendefinisian Variabel Data pada Model Spline Univariat


data=read.csv(file.choose(),sep=";",header=T)
head(data)
str(data)
summary(data)
x=matrix(data$Mileage,ncol=1)
y=matrix(data$Price,ncol=1)

Sintaks untuk Menghitung Invers Matriks


MPL<-function(x,eps=1e-009)
{
x<-as.matrix(x)
xsvd<-svd(x)
diago<-xsvd$d[xsvd$d>eps]
if(length(diago)==1)
{
xplus<-as.matrix(xsvd$v[,1])%*%t(as.matrix(xsvd$u[,1])/diago)
}
else
{
xplus<-xsvd$v[,1:length(diago)]%*%diag(1/diago)%*
%t(xsvd$u[,1:length(diago)])
}
return(xplus)
}

Sintaks untuk Menghitung Nilai Truncated


trun<-function(data,c,power)
{
data[data<c]<-c
(data-c)^power
}

Sintaks untuk Menghitung Nilai GCV pada Model 1 Knot


gcv1<-function(x,y,m)
{
#m=orde
n=length(y)
r<-length(x)
#k : ttk knot pada data
k<-x[2:r-1]
# titik knot dlm interval
#k=seq(min(x)+0.1,max(x)-0.1,length=10)
v<-length(k)
Gcv<-matrix(nrow=v,ncol=1)
for (j in 1:v)
{
w<-matrix(0,ncol=m+1,nrow=n)
for (i in 1:m)
w[,i]<-x^(i-1)
for (i in m+1)
w[,i]<-trun(x,k[j],m-1)
wtw<- t(w) %*% w
z<- MPL(wtw)
beta<- z %*% (t(w) %*% y)
h<- w %*% z %*% t(w)
mu<-w%*%beta
MSE<- t(y-mu) %*% (y-mu)/n
I<-matrix(0,ncol=n,nrow=n)
for(i in 1: n)
I[i,i]<-1
GCV<-(n^2*MSE)/(sum(diag(I-h)))^2
Gcv[j]<-GCV
}
R<-matrix(c(k,Gcv),nrow=v)
sort.R<-R[order(R[,2]),]
S<-sort.R[1:5,]
cat("Untuk spline order",m,"dengan 1 titik knot, diperoleh knot
optimal=",S[1,1]," dengan GCV minimum=",S[1,2])
cat("\nBerikut nilai GCV dan letak titik knotnya:\n")
cat("======================\n")
cat(" No Ttk knot GCV\n")
cat("======================\n")
S
}

Sintaks untuk Menghitung Nilai GCV pada Model 2 Knot


gcv2<-function(x,y,m)
{
n=length(y)
r<-length(x)
t<-x[2:r-1]
comb<-combn(t,2,fun=NULL)
k<-t(comb)
k1<-k[,1]
k2<-k[,2]
v<-length(k1)
n<-length(x)
Gcv<-matrix(nrow=v,ncol=1)
for (j in 1:v)
{
w<-matrix(0,ncol=m+2,nrow=n)
for (i in 1:m)
w[,i]<-x^(i-1)
for (i in m+1)
w[,i]<-trun(x,k1[j],m-1)
for (i in m+2)
w[,i]<-trun(x,k2[j],m-1)
wtw<- t(w) %*% w
z<- MPL(wtw)
beta<- z %*% (t(w) %*% y)
h<- w %*% z %*% t(w)
mu<-w%*%beta
MSE<- t(y-mu) %*% (y-mu)/n
I<-matrix(0,ncol=n,nrow=n)
for(i in 1: n)
I[i,i]<-1
GCV<-(n^2*MSE)/(sum(diag(I-h)))^2
Gcv[j]<-GCV
}
R<-matrix(c(k1,k2,Gcv),nrow=v)
sort.R<-R[order(R[,3]),]
S<-sort.R[1:5,]
cat("Untuk spline order",m,"dengan 2 titik knot, diperoleh knot
optimal=c(",S[1,1],",",S[1,2],") dengan GCV minimum=",S[1,3])
cat("\nBerikut 5 nilai GCV terkecil dan letak titik knotnya:\n")
cat("======================\n")
cat(" No knot1 knot2 GCV\n")
cat("======================\n")
S
}

Sintaks untuk Menghitung Nilai GCV pada Model 3 Knot


gcv3<-function(x,y,m)
{
n=length(y)
r<-length(x)
t<-x[2:r-1]
comb<-combn(t,3,fun=NULL)
k<-t(comb)
k1<-k[,1]
k2<-k[,2]
k3<-k[,3]
v<-length(k1)
n<-length(x)
Gcv<-matrix(nrow=v,ncol=1)
for (j in 1:v)
{
w<-matrix(0,ncol=m+3,nrow=n)
for (i in 1:m)
w[,i]<-x^(i-1)
for (i in m+1)
w[,i]<-trun(x,k1[j],m-1)
for (i in m+2)
w[,i]<-trun(x,k2[j],m-1)
for (i in m+3)
w[,i]<-trun(x,k3[j],m-1)
wtw<- t(w) %*% w
z<- MPL(wtw)
beta<- z %*% (t(w) %*% y)
h<- w %*% z %*% t(w)
mu<-w%*%beta
MSE<- t(y-mu) %*% (y-mu)/n
I<-matrix(0,ncol=n,nrow=n)
for(i in 1: n)
I[i,i]<-1
GCV<-(n^2*MSE)/(sum(diag(I-h)))^2
Gcv[j]<-GCV
}
R<-matrix(c(k1,k2,k3,Gcv),nrow=v)
sort.R<-R[order(R[,4]),]
S<-sort.R[1:5,]
cat("Untuk spline order",m,"dengan 3 titik knot, diperoleh knot
optimal=c(",S[1,1],",",S[1,2],",",S[1,3],") dengan GCV minimum=",S[1,4])
cat("\nBerikut 5 nilai GCV terkecil dan letak titik knotnya:\n")
cat("==============================\n")
cat(" No knot1 knot2 knot3 GCV\n")
cat("==============================\n")
S
}

Sintaks untuk Menghitung Estimasi Model Spline dan Gambarnya


model.spline<-function(prediktor,respon,m,knots=c(...))
{
#m:orde
y<-respon
n<-length(y)
k<-length(knots)
w<-matrix(0, ncol=m+k, nrow=n)
for (i in 1:m)
w[,i]<-prediktor^(i-1)
for(i in (m+1):(m+k))
w[,i]<-trun(prediktor,knots[i-m],m-1)
wtw<-t(w)%*%w
z<-MPL(wtw)
beta<-z%*%t(w)%*%y
yfits<-w%*%beta
res<-y-yfits
MSE<-t(y-yfits)%*%(y-yfits)/n
MAPE<-MAPE(yfits,y)
R2=1-(sum((y-yfits)^2)/sum((y-mean(y))^2))
I<-matrix(0,ncol=n,nrow=n)
for(i in 1:n)
I[i,i]<-1
h<-w%*%MPL(wtw)%*%t(w)
GCV<-(n^2*MSE)/((sum(diag(I-h)))^2)
q<-seq(min(prediktor),max(prediktor),length=1000)
u<-matrix(0,ncol=m+k,nrow=1000)
for(i in 1:m)
u[,i]<-q^(i-1)
for(i in (m+1):(m+k))
u[,i]<-trun(q,knots[i-m],m-1)
festu<-u%*%beta
cat("\n Spline orde",m)
cat("\n Titik Knots = c( ",format(knots),")")
cat("\n Nilai GCV = ",format(GCV),
"\n Nilai MSE = ",format(MSE),
"\n Nilai MAPE = ",format(MAPE),
"\n Nilai R-square=",format(R2),"\n")
cat("\n ************************")
cat("\n Koefisen Estimasi")
cat("\n **************************")
for(i in 1:(m+k))
cat("\n beta[",i-1,"] ",format(beta[i]))
cat("\n **************************")
plot(prediktor,respon, type="p",xlim=c(min(prediktor),max(prediktor)),
ylim=c(min(respon)-2,max(respon)+2),
xlab="Mileage",ylab="Price")
title("Spline Fit")
par(new=T)
plot(q,festu, type="l",col="red",
xlim=c(min(prediktor),max(prediktor)),
ylim=c(min(respon)-2,max(respon)+2),
xlab=" ",ylab=" ")
}
STUDI KASUS

Akan dilakukan pemodelan regresi non parametrik Spline terhadap data harga mobil
Toyota (Price) sebagai variabel Y dan jarak tempuh yang digunakan (Mileage) sebagai
varaibel X yang bersumber dari website https://www.kaggle.com. Data yang digunakan
berjumlah 64 data, yaitu sebagai berikut:
Price Mileage Price Mileage Price Mileage
No No No
(Y) (X) (Y) (X) (Y) (X)
1 16000 24089 23 26995 2680 45 23995 1557
2 15995 18615 24 17000 14345 46 17500 14000
3 13998 27469 25 19995 15525 47 23997 4500
4 18998 14736 26 31000 3000 48 17102 21000
5 17498 36284 27 15995 19460 49 24995 2488
6 15998 26919 28 18490 31231 50 19995 26000
7 18522 10456 29 24990 339 51 29769 999
8 18995 12340 30 13981 30500 52 25850 4442
9 27998 516 31 13991 38126 53 13495 24667
10 13990 37999 32 27060 3348 54 18495 13930
11 10495 72000 33 20695 5260 55 25499 614
12 17990 12597 34 25999 100 56 18621 18544
13 16995 36100 35 11575 50584 57 25121 7056
14 23995 995 36 20995 6445 58 17500 11898
15 18498 35228 37 14999 18389 59 11599 28335
16 23980 1751 38 27000 100 60 17249 10089
17 17995 16444 39 15000 28321 61 25995 3250
18 12998 25499 40 22200 16241 62 13000 39761
19 23495 3934 41 24990 3150 63 17250 19420
20 25780 5123 42 25995 8912 64 27950 489
21 26995 1500 43 19500 9639
22 23998 913 44 18250 20219
HASIL RUNNING

1. Pendefinisian Variabel Data pada Model Spline


> data=read.delim("clipboard")
> head(data)
No Price Mileage
1 1 16000 24089
2 2 15995 18615
3 3 13998 27469
4 4 18998 14736
5 5 17498 36284
6 6 15998 26919
> str(data)
‘data.frame’: 64 obs. Of 3 variables:
$ No : int 1 2 3 4 5 6 7 8 9 10 ...
$ Price : int 16000 15995 13998 18998 17498 15998 18522 18995 27998
13990 ...
$ Mileage: int 24089 18615 27469 14736 36284 26919 10456 12340 516
37999 ...
> summary(data)
No Price Mileage
Min. : 1.00 Min. :10495 Min. : 100
1st Qu.:16.75 1st Qu.:16746 1st Qu.: 3225
Median :32.50 Median :18808 Median :13264
Mean :32.50 Mean :20201 Mean :15632
3rd Qu.:48.25 3rd Qu.:24991 3rd Qu.:24875
Max. :64.00 Max. :31000 Max. :72000
> x=matrix(data$Mileage,ncol=1)
> y=matrix(data$Price,ncol=1)

2. Perhitungan Nilai GCV pada Model 1 Knot


> gcv1(x,y,2)
Untuk spline order 2 dengan 1 titik knot, diperoleh knot optimal= 12597
dengan GCV minimum= 5e+06
Berikut nilai GCV dan letak titik knotnya:
No Ttk knot GCV
[,1] [,2]
[1,] 12597 5000000
[2,] 12340 5007392
[3,] 13930 5014297
[4,] 14000 5016037
[5,] 11898 5021427

> gcv1(x,y,3)
Untuk spline order 3 dengan 1 titik knot, diperoleh knot optimal= 28335
dengan GCV minimum= 5187775
Berikut nilai GCV dan letak titik knotnya:
No Ttk knot GCV
[,1] [,2]
[1,] 28335 5187775
[2,] 28321 5187895
[3,] 27469 5192200
[4,] 26919 5196115
[5,] 30500 5196786
3. Perhitungan Nilai GCV pada Model 2 Knot
> gcv2(x,y,2)
Untuk spline order 2 dengan 2 titik knot, diperoleh knot optimal=c( 8912
, 10089 ) dengan GCV minimum= 4588999
Berikut 5 nilai GCV terkecil dan letak titik knotnya:
No knot1 knot2 GCV
[,1] [,2] [,3]
[1,] 8912 10089 4588999
[2,] 8912 9639 4589902
[3,] 10456 8912 4688223
[4,] 9639 10089 4769244
[5,] 3000 11898 4870054

> gcv2(x,y,3)
Untuk spline order 3 dengan 2 titik knot, diperoleh knot
optimal=c( 36100 , 35228 ) dengan GCV minimum= 5051193
Berikut 5 nilai GCV terkecil dan letak titik knotnya:
No knot1 knot2 GCV
[,1] [,2] [,3]
[1,] 36100 35228 5051193
[2,] 36284 35228 5052655
[3,] 9639 11898 5060786
[4,] 10456 10089 5061168
[5,] 36284 36100 5062410

4. Perhitungan Nilai GCV pada Model 3 Knot


> gcv3(x,y,2)
Untuk spline order 2 dengan 3 titik knot, diperoleh knot optimal=c( 6445
, 8912 , 9639 ) dengan GCV minimum= 4550094
Berikut 5 nilai GCV terkecil dan letak titik knotnya:
No knot1 knot2 knot3 GCV
[,1] [,2] [,3] [,4]
[1,] 6445 8912 9639 4550094
[2,] 72000 8912 10089 4588999
[3,] 72000 8912 9639 4589902
[4,] 6445 8912 10089 4593555
[5,] 8912 9639 7056 4596809

> gcv3(x,y,3)
Untuk spline order 3 dengan 3 titik knot, diperoleh knot
optimal=c( 27469 , 516 , 999 ) dengan GCV minimum= 723707.4
Berikut 5 nilai GCV terkecil dan letak titik knotnya:
No knot1 knot2 knot3 GCV
[,1] [,2] [,3] [,4]
[1,] 27469 516 999 723707.4
[2,] 516 30500 4442 831622.9
[3,] 37999 913 5260 873012.3
[4,] 25499 339 7056 992637.3
[5,] 25499 913 7056 1037475.4

5. Pemilihan Model Optimal dengan GCV Terkecil


Berikut merupkan tabel ringkasan nilai GCV untuk orde 2 dan 3 pada titik knot 1, 2, dan
3:

Banyak Orde
Letak Titik Knot Nilai GCV
Knot Model
2 12597 5000000
1
3 28335 5187775
2 (8912; 100894) 4588999
2
3 (36100; 35228) 5051193
2 (6445; 8912; 9639) 4550094
3
3 (27469; 516; 999) 723707.4

Dari tabel ringkasan diatas dapat diketahui bahwa nilai GCV terkecil sebesar 723707,4
terletak pada model Spline orde 3 dengan 3 titik knot. Maka model inilah yang akan
digunakan untuk estimasi.
6. Pengestimasian Model dan Penggambaran Model Terbaik
> model.spline(x,y,3,knots = c( 27469 , 516 , 999 ))

Spline orde 3
Titik Knots = c( 27469 516 999 )
Nilai GCV = 723707.4
Nilai MSE = 6884008
Nilai MAPE = 0.1018596
Nilai R-square= 0.7342887

************************
Koefisen Estimasi
**************************
beta[ 0 ] 11070.08
beta[ 1 ] 83.87553
beta[ 2 ] -0.09302043
beta[ 3 ] -1.51405e-05
beta[ 4 ] 0.1047716
beta[ 5 ] -0.01173759
**************************

Dari hasil estimasi diatas, diperoleh model regresi Spline orde 3 dengan 3 titik knot (
27469; 516; 999 ) sebagai berikut:
m k
^y =∑ ^
β j x + ∑ ^β j+m+1 (x−ξ j )+¿ ¿
j
m

j=0 j=1

^y =β 0 + β 1 x + β 2 x 2 + ^β 3 (x−ξ 1)+¿ + ^β (x−ξ )


1
4 2 + ¿ 1 ++ ^β 5 ( x−ξ3 ) ¿
1 ¿
+¿ ¿

^y =11070.08+ 83.87553 x−0.09302043 x 2−1.51405 e−05 3 ( x−27469 )+¿ +0.1047716 ( x−516 ) 1


1 ¿
+¿ −0.01173759 (x−999) ¿
+¿1 ¿

Dan diperoleh plot data sebagai berikut


Dari gambar diatas, data olyno digambarkan bulat-bulat kecil, sedangkan estimasi
modelnya digambarkan dengan garis merah. Dapat dilihat bahwa pada estimasi model
terbentuk 3 titik patahan ditengah garis yang mendandakan titik knotnya.
REGRESI SPLINE MULTIVARIAT DENGAN R STUDIO

Langkah-langkah penyelesaian masalah dengan R:


1. Penyiapan data
2. Install package Mlmetric, untuk menghitung MAPE
3. Penentuan titik knot optimal untuk setiap variabel olynomia secara simultan
4. Memilih model optimum dengan GCV terkecil
5. Mestimasi model dan menggambar model terbaik

Sintaks Pendefinisian Variabel Data pada Model Spline Multivariat


library(Mlmetrics)
data=read.csv(file.choose(),sep=”;”)
data=read.delim(“clipboard”)
str(data)
y=data[,1]
x1=data[,2]
x2=data[,3]
x3=data[,4]
plot(x1,y)
plot(x2,y)
plot(x3,y)

Sintaks untuk Menghitung Invers Matriks


MPL<-function (x, eps=1e-009)
{
x<-as.matrix (x)
xsvd<-svd (x)
diago<-xsvd$d[xsvd$d>eps]
if (length (diago) ==1)
{
xplus<-as.matrix (xsvd$v[, 1])*t (as.matrix(xsvd$u[, 1]) /diago)
}
else
{
xplus<-xsvd$v[,1:length(diago)]%*%diag(1/diago)%*
%t(xsvd$u[,1:length(diago)])
}
return (xplus)
}

Sintaks untuk Menghitung Nilai Truncated


trun <- function (gdp, a, power)
{
gdp[gdp<a]<-a
(gdp-a)^power
}

Sintaks Penentuan Titik Knot dengan Metode GCV


gcv.knots<-function(respon, x1, x2, x3, orde, knots=c (...))
{
h<-length (knots)
m<-orde
kn<-rep (0,h)
if (h==3)
{
y <- respon
n <- length (y)
cat ("\nOrde Polinomial: ", format (m+1))
cat ("\n Titik knots GCV")
for (j in 1:h)
{
for(i in 1:h)
{kn [i]<-knots [i] }
g<-kn [j]+0.1
while (kn [j]<=g)
{
k1<-kn [1]
k2<-kn [2]
k3<-kn [3]
w <- matrix (0,n, 3*m+4)
w[,1]<-1
for (i in 2: (m+1))
{
w[,i] <-x1 ^(i-1)
w[,m+i]<-x2^(i-1)
w[,2*m+i]<-x3^(i-1)
}
w[,(3*m+2)] <- trun (x1, k1,m)
w[,(3*m+3)] <- trun (x2, k2,m)
w[,(3*m+4)] <- trun (x3, k3,m)
wtw <-t (w)%*%w
C<- MPL(wtw)
beta <-C%*%t(w)%*%y
H<-w %*% MPL(wtw) %*% t(w)
mu <-w %*%beta
MSE <- t (y-mu) %*% (y-mu) /n
I <- matrix (0, ncol=n, nrow =n)
for (i in 1:n)
{ I[i, i] <-1 }
GCV <- (n^2*MSE)/(sum (diag (I-H)))^2
cat ("\n ", k1," ",k2," ",k3," ",format (GCV))
kn [j]<-kn [j]+0.01
kn [j]<-kn [j]+0.01
}
cat ("\n")
}
}
else if(h==9)
{
y <- respon
n <- length(y)
kn<-rep (0,h)
cat ("\nOrde Polinomial : ",format (m+1))
cat ("\n Titik knots GCV")
for (j in 1:h)
{
for (i in 1:h)
{kn [i]<-knots [i]}
g<-kn [j]+0.1
while (kn [j]<=g)
{
k1<-kn [1]
k2<-kn [2]
k3<-kn [3]
k4<-kn [4]
k5<-kn [5]
k6<-kn [6]
k7<-kn [7]
k8<-kn [8]
k9<-kn [9]
w<-matrix (0,n, 3*m+10)
w[,1]<-1
for (i in 2: (m+1))
w[,i] <-x1^(i-1)
w[,m+i]<-x2^(i-1)
w[,2*m+i]<-x3^(i-1)
}
w[, (3*m+2)] <-trun (x1, k1, m)
w[, (3*m+3)] <-trun (x2, k2, m)
w[, (3*m+4)] <-trun (x3, k3, m)
w[, (3*m+5)] <-trun (x1, k4, m)
w[, (3*m+6)] <-trun (x2, k5, m)
w[, (3*m+7)] <-trun (x3, k6, m)
w[, (3*m+8)] <-trun (x1, k7, m)
w[, (3*m+9)] <-trun (x2, k8, m)
w[, (3*m+10)] <-trun (x3, k9, m)
wtw <- t (w) %*% w
beta <- MPL (wtw) %*% t(w) %*% y
H <-w %*% MPL (wtw) %*% t(w)
mu <-w %*% beta
MSE <-t (y -mu) %*% (y -mu)/n
I <- matrix (0, ncol = n, nrow =n)
for (i in 1:n)
{ I[i, i] <-1}
GCV <-(n^2 *MSE) / (sum (diag (I-H))) ^2
cat ("\n", k1, " ", k2, " ", k3," ", k4," ",k5," ", k6," ",k7,"
",k8," ", k9," ", format (GCV))
kn [j]<-kn [j]+0.01
kn [1]<-kn [1]+0.01
}
kn [2]<-kn[2]+0.01
kn [3]<-kn[3]+0.01
kn [4]<-kn[4]+0.01
kn [5]<-kn[5]+0.01

cat ("\n")
}
else if (h==6)
{
y <- respon
n <- length (y)
kn<-rep (0,h)
cat ("\nOrde polinomial : ",format (m+1))
cat ("\n Titik knots GCV")
for (j in 1:h)
{
for (i in 1:h)
{kn [i]<-knots [i]}
g<-kn [j]+0.1
while (kn [j]<=g)
{
k1<-kn[1]
k2<-kn[2]
k3<-kn[3]
k4<-kn[4]
k5<-kn[5]
k6<-kn[6]
w <-matrix (0,n, 3*m+7)
w[,1]<-1
for (i in 2: (m+1))
{
w[,i] <-x1^(i-1)
w[,m+i]<-x2^(i-1)
w[,2*m+i]<-x3^(i-1)
}
w[, (3*m+2)] <-trun (x1, k1, m)
w[, (3*m+3)] <-trun (x2, k2, m)
w[, (3*m+4)] <-trun (x3, k3, m)
w[, (3*m+5)] <-trun (x1, k4, m)
w[, (3*m+6)] <-trun (x2, k5, m)
w[, (3*m+7)] <-trun (x3, k6, m)
wtw <- t (w) %*% w
beta <- MPL (wtw) %*% t(w) %*% y
H <-w %*% MPL (wtw) %*% t(w)
mu <-w %*% beta
MSE <-t (y -mu) %*% (y -mu)/n
I <- matrix (0, ncol = n, nrow =n)
for (i in 1:n)
{ I[i, i] <-1}
GCV <-(n^2 *MSE) / (sum (diag (I-H))) ^2
cat ("\n", k1, " ", k2, " ", k3," ", k4," ",k5," ", k6," ",
format (GCV))
kn [j]<-kn [j]+0.01
kn [1]<-kn [1]+0.01
}
kn [2]<-kn[2]+0.01
kn [3]<-kn[3]+0.01
}
cat ("\n")
}
}

Sintaks Estimasi Parameter dengan Model Spline Multivariat


spline.knots<-function (respon, x1, x2, x3, orde, knots=c(...))
{
y<-respon
n <- length(y)
r <- length(knots)
k<-r/3
m<-orde
v<- matrix (0, n, 1+3*(m+k))
v[,1]<-1
for (i in 2: (m+1))
{
v[,i] <-x1^(i-1)
v[,i+m] <-x2^(i-1)
v[,2*m+i] <-x3^(i-1)
}
for (i in 1:k)
{
v[,3*m+2*i+i-1] <-trun (x1, knots [1+3*(i-1)],m)
v[,3*m+2*i+i] <- trun (x2, knots [2+3*(i-1)],m)
v[,3*m+2*i+i+1] <-trun (x3, knots[3+3*(i-1)],m)
}
cat("\nBerikut hasil estimasi spline orde",m+1,"dengan",k,"titik knot:\
n")
vtv <-t(v) %*% v
C <-MPL(vtv)
beta <- MPL (vtv) %*% t(v) %*% y
for (i in 1: (3*(m+k) +1))
{
cat ("Beta ke-",i,"=",beta[i],"\n")
}
h <-v %*% MPL (vtv) %*% t(v)
ytopi <-v %*% beta
error<-y-ytopi
MSE<-sum ((error) ^2) /n
MAPE<-MAPE(ytopi,y)
yb<-as.vector (ytopi)
n<-length(y)
B<-0
for (i in 1:n)
{
b<-(y [i]-mean (y)) * (yb[i]-mean (yb))
B<-B+b
}
jkr<-B^2
C<-0
for (i in 1:n)
{
c<-(y [i]-mean (y))^2
C<-C+c
}
D<-0
for (i in 1:n)
{
d<-(yb[i]-mean (yb))^2
D<-D+d
}
jkt <-C*D
R<-jkr/jkt
cat ("=============================================")
cat ("\ny\t\tytopi\t\terror")
cat ("\n ==========================================")
for (i in 1:n)
{
cat ("\n",y[i],"\t",ytopi[i],"\t", error[i])
}
cat ("\n===========================================\n")
cat ("\n MSE=",MSE,"\n")
cat ("\n MAPE=",MAPE,"\n")
cat ("\n R-Square =",R, "\n")
}
STUDI KASUS

Akan dilakukan pemodelan regresi non parametrik Spline pada data Usia Harapan Hidup saat
Lahir (X1), Harapan Lama Sekolah (X2), Rata-rata Lama Sekolah (X3), dan Indeks
Pembangunan Manusia (Y) Jawa Tengah yang bersumber dari website
https://jateng.bps.go.id/indicator/26/83/1/indeks-pembangunan-manusia-metode-baru-.html.
Kabupaten x1 x2 x3 y
Kabupaten Cilacap 73 12.50 6.97 69.95
.73
Kabupaten Banyumas 73 12.85 7.52 71.98
.72
Kabupaten Purbalingga 73 11.99 7.24 68.97
.14
Kabupaten Banjarnegara 74 11.46 6.74 67.45
.18
Kabupaten Kebumen 73 13.34 7.54 69.81
.40
Kabupaten Purworejo 74 13.50 8.12 72.68
.72
Kabupaten Wonosobo 71 11.75 6.81 68.22
.82
Kabupaten Magelang 73 12.54 7.78 69.87
.72
Kabupaten Boyolali 75 12.56 7.84 74.25
.95
Kabupaten Klaten 76 13.25 8.58 75.56
.78
Kabupaten Sukoharjo 77 13.83 9.34 76.98
.65
Kabupaten Wonogiri 76 12.49 7.33 70.25
.16
Kabupaten Karanganyar 77 13.68 8.56 75.86
.47
Kabupaten Sragen 75 12.83 7.65 73.95
.71
Kabupaten Grobogan 74 12.30 6.91 69.87
.75
Kabupaten Blora 74 12.20 6.83 68.84
.41
Kabupaten Rembang 74 12.11 7.16 70.02
.55
Kabupaten Pati 76 12.65 7.44 71.77
.22
Kabupaten Kudus 76 13.23 8.75 75.00
.60
Kabupaten Jepara 75 12.75 7.68 71.99
.84
Kabupaten Demak 75 13.31 7.71 72.22
.40
Kabupaten Semarang 75 12.97 8.02 74.10
.73
Kabupaten Temanggung 75 12.14 7.24 69.57
.58
Kabupaten Kendal 74 12.95 7.45 72.29
.43
Kabupaten Batang 74 12.01 6.87 68.65
.69
Kabupaten Pekalongan 73 12.41 6.91 69.63
.69
Kabupaten Pemalang 73 11.95 6.42 66.32
.40
Kabupaten Tegal 71 12.67 6.98 68.39
.60
Kabupaten Brebes 69 12.04 6.21 66.11
.33
Kota Magelang 76 14.14 10.39 78.99
.85
Kota Surakarta 77 14.87 10.69 82.21
.22
Kota Salatiga 77 15.41 10.42 83.14
.40
Kota Semarang 77 15.52 10.53 83.05
.34
Kota Pekalongan 74 12.84 8.96 74.98
.38
Kota Tegal 74 13.05 8.51 75.07
.46
HASIL RUNNING

1. Pendefinisian Variabel Data pada Model Spline Multivariabel


> data=read.delim("clipboard")
> str(data)
'data.frame': 35 obs. of 5 variables:
$ Kabupaten: Factor w/ 35 levels "Kabupaten Banjarnegara",..: 7 2 20 1
12 21 29 16 5 14 ...
$ x1 : num 73.7 73.7 73.1 74.2 73.4 ...
$ x2 : num 12.5 12.8 12 11.5 13.3 ...
$ x3 : num 6.97 7.52 7.24 6.74 7.54 8.12 6.81 7.78 7.84 8.58 ...
$ y : num 70 72 69 67.5 69.8 ...
> x1=data[,2]
> x2=data[,3]
> x3=data[,4]
> y=data[,5]
> plot(x1,y)
> plot(x2,y)

> plot(x3,y)

2. Perhitungan Nilai GCV pada Model 1 Knot


> gcv.knots(y, x1, x2, x3, 1, knots=c(0,0,0))

Orde Polinomial: 2
Titik knots GCV
0 0 0 0.9784534
0.02 0 0 0.9784534
0.04 0 0 0.9784534
0.06 0 0 0.9784534
0.08 0 0 0.9784534
0.1 0 0 0.9784534

0 0 0 0.9784534
0 0.02 0 0.9784534
0 0.04 0 0.9784534
0 0.06 0 0.9784534
0 0.08 0 0.9784534
0 0.1 0 0.9784534
0 0 0 0.9784534
0 0 0.02 0.9784534
0 0 0.04 0.9784534
0 0 0.06 0.9784534
0 0 0.08 0.9784534
0 0 0.1 0.9784534

> gcv.knots(y, x1, x2, x3, 2, knots=c(1,1,1))

Orde Polinomial: 3
Titik knots GCV
1 1 1 2932.454
1.02 1 1 2.587204
1.04 1 1 31.62422
1.06 1 1 15478.86
1.08 1 1 44.61876
1.1 1 1 153.8276

1 1 1 2932.454
1 1.02 1 190.0572
1 1.04 1 12412.87
1 1.06 1 229.1525
1 1.08 1 14.90658
1 1.1 1 1.130247

1 1 1 2932.454
1 1 1.02 115.1886
1 1 1.04 5453.402
1 1 1.06 38.79694
1 1 1.08 8.752773
1 1 1.1 1.327964

> gcv.knots(y, x1, x2, x3, 3, knots=c(2,1,1))

Orde Polinomial: 4
Titik knots GCV
2 1 1 11547.58
2.02 1 1 6336.581
2.04 1 1 12.9851
2.06 1 1 997.467
2.08 1 1 339.0425
2.1 1 1 207655.2

2 1 1 11547.58
2 1.02 1 204.1997
2 1.04 1 585.43
2 1.06 1 6592.795
2 1.08 1 305.0508
2 1.1 1 1003.364

2 1 1 11547.58
2 1 1.02 5124.618
2 1 1.04 64977.54
2 1 1.06 5272.75
2 1 1.08 3721.321
2 1 1.1 22990.68

3. Perhitungan Nilai GCV pada Model 2 Knot


> gcv.knots(y, x1, x2, x3, 1, knots=c(0,0,0,0,0,0))

Orde polinomial : 2
Titik knots GCV
0 0 0 0 0 0 0.9784534
0.02 0 0 0 0 0 0.9784534
0.04 0 0 0 0 0 0.9784534
0.06 0 0 0 0 0 0.9784534
0.08 0 0 0 0 0 0.9784534
0.1 0 0 0 0 0 0.9784534

0 0 0 0 0 0 0.9784534
0.01 0.01 0 0 0 0 0.9784534
0.02 0.02 0 0 0 0 0.9784534
0.03 0.03 0 0 0 0 0.9784534
0.04 0.04 0 0 0 0 0.9784534
0.05 0.05 0 0 0 0 0.9784534
0.06 0.06 0 0 0 0 0.9784534
0.07 0.07 0 0 0 0 0.9784534
0.08 0.08 0 0 0 0 0.9784534
0.09 0.09 0 0 0 0 0.9784534
0.1 0.1 0 0 0 0 0.9784534

0 0 0 0 0 0 0.9784534
0.01 0 0.01 0 0 0 0.9784534
0.02 0 0.02 0 0 0 0.9784534
0.03 0 0.03 0 0 0 0.9784534
0.04 0 0.04 0 0 0 0.9784534
0.05 0 0.05 0 0 0 0.9784534
0.06 0 0.06 0 0 0 0.9784534
0.07 0 0.07 0 0 0 0.9784534
0.08 0 0.08 0 0 0 0.9784534
0.09 0 0.09 0 0 0 0.9784534
0.1 0 0.1 0 0 0 0.9784534

0 0 0 0 0 0 0.9784534
0.01 0 0 0.01 0 0 0.9784534
0.02 0 0 0.02 0 0 0.9784534
0.03 0 0 0.03 0 0 0.9784534
0.04 0 0 0.04 0 0 0.9784534
0.05 0 0 0.05 0 0 0.9784534
0.06 0 0 0.06 0 0 0.9784534
0.07 0 0 0.07 0 0 0.9784534
0.08 0 0 0.08 0 0 0.9784534
0.09 0 0 0.09 0 0 0.9784534
0.1 0 0 0.1 0 0 0.9784534

0 0 0 0 0 0 0.9784534
0.01 0 0 0 0.01 0 0.9784534
0.02 0 0 0 0.02 0 0.9784534
0.03 0 0 0 0.03 0 0.9784534
0.04 0 0 0 0.04 0 0.9784534
0.05 0 0 0 0.05 0 0.9784534
0.06 0 0 0 0.06 0 0.9784534
0.07 0 0 0 0.07 0 0.9784534
0.08 0 0 0 0.08 0 0.9784534
0.09 0 0 0 0.09 0 0.9784534
0.1 0 0 0 0.1 0 0.9784534

0 0 0 0 0 0 0.9784534
0.01 0 0 0 0 0.01 0.9784534
0.02 0 0 0 0 0.02 0.9784534
0.03 0 0 0 0 0.03 0.9784534
0.04 0 0 0 0 0.04 0.9784534
0.05 0 0 0 0 0.05 0.9784534
0.06 0 0 0 0 0.06 0.9784534
0.07 0 0 0 0 0.07 0.9784534
0.08 0 0 0 0 0.08 0.9784534
0.09 0 0 0 0 0.09 0.9784534
0.1 0 0 0 0 0.1 0.9784534

> gcv.knots(y, x1, x2, x3, 2, knots=c(1,1,1,1,1,1))

Orde polinomial : 3
Titik knots GCV
1 1 1 1 1 1 120.7558
1.02 1 1 1 1 1 53784.24
1.04 1 1 1 1 1 6464.437
1.06 1 1 1 1 1 5522.371
1.08 1 1 1 1 1 4492.666
1.1 1 1 1 1 1 9458.899

1 1 1 1 1 1 120.7558
1.01 1.01 1 1 1 1 4533.04
1.02 1.02 1 1 1 1 506.7102
1.03 1.03 1 1 1 1 134.2398
1.04 1.04 1 1 1 1 429.0429
1.05 1.05 1 1 1 1 716.8649
1.06 1.06 1 1 1 1 1126.941
1.07 1.07 1 1 1 1 4713.808
1.08 1.08 1 1 1 1 178195.1
1.09 1.09 1 1 1 1 17563.02
1.1 1.1 1 1 1 1 12573.23

1 1 1 1 1 1 120.7558
1.01 1 1.01 1 1 1 14938.85
1.02 1 1.02 1 1 1 79996.55
1.03 1 1.03 1 1 1 167.9769
1.04 1 1.04 1 1 1 349026
1.05 1 1.05 1 1 1 18294.47
1.06 1 1.06 1 1 1 1549.891
1.07 1 1.07 1 1 1 3827.135
1.08 1 1.08 1 1 1 4907.352
1.09 1 1.09 1 1 1 1366.427
1.1 1 1.1 1 1 1 4915.559

1 1 1 1 1 1 120.7558
1.01 1 1 1.01 1 1 4.583201
1.02 1 1 1.02 1 1 57.86339
1.03 1 1 1.03 1 1 3.071309
1.04 1 1 1.04 1 1 509.1652
1.05 1 1 1.05 1 1 326.6233
1.06 1 1 1.06 1 1 1858.796
1.07 1 1 1.07 1 1 26.91195
1.08 1 1 1.08 1 1 19050.82
1.09 1 1 1.09 1 1 353.4012
1.1 1 1 1.1 1 1 111.0855

1 1 1 1 1 1 120.7558
1.01 1 1 1 1.01 1 5.643675
1.02 1 1 1 1.02 1 4773.459
1.03 1 1 1 1.03 1 1100.836
1.04 1 1 1 1.04 1 290027.1
1.05 1 1 1 1.05 1 2343.766
1.06 1 1 1 1.06 1 4395.879
1.07 1 1 1 1.07 1 2.621496
1.08 1 1 1 1.08 1 275.8801
1.09 1 1 1 1.09 1 4970.87
1.1 1 1 1 1.1 1 1236.447

1 1 1 1 1 1 120.7558
1.01 1 1 1 1 1.01 7717.795
1.02 1 1 1 1 1.02 13801.46
1.03 1 1 1 1 1.03 54.5188
1.04 1 1 1 1 1.04 1024.068
1.05 1 1 1 1 1.05 13929.25
1.06 1 1 1 1 1.06 180.5254
1.07 1 1 1 1 1.07 27.65002
1.08 1 1 1 1 1.08 37.63795
1.09 1 1 1 1 1.09 133581.9
1.1 1 1 1 1 1.1 420.4413

> gcv.knots(y, x1, x2, x3, 3, knots=c(2,1,1,2,1,1))

Orde polinomial : 4
Titik knots GCV
2 1 1 2 1 1 7245.772
2.02 1 1 2 1 1 19871.36
2.04 1 1 2 1 1 55.68647
2.06 1 1 2 1 1 15065.46
2.08 1 1 2 1 1 43195.08
2.1 1 1 2 1 1 2867.324

2 1 1 2 1 1 7245.772
2.01 1.01 1 2 1 1 111960.2
2.02 1.02 1 2 1 1 143.6711
2.03 1.03 1 2 1 1 269.1024
2.04 1.04 1 2 1 1 27148.48
2.05 1.05 1 2 1 1 23558.6
2.06 1.06 1 2 1 1 286.0452
2.07 1.07 1 2 1 1 2415.271
2.08 1.08 1 2 1 1 18176.61
2.09 1.09 1 2 1 1 8389.94
2.1 1.1 1 2 1 1 60640.89
2 1 1 2 1 1 7245.772
2.01 1 1.01 2 1 1 46768865
2.02 1 1.02 2 1 1 1555.202
2.03 1 1.03 2 1 1 1786.451
2.04 1 1.04 2 1 1 2425.519
2.05 1 1.05 2 1 1 1738997
2.06 1 1.06 2 1 1 3380.055
2.07 1 1.07 2 1 1 121488.8
2.08 1 1.08 2 1 1 1809.663
2.09 1 1.09 2 1 1 835.2379
2.1 1 1.1 2 1 1 8151.681

2 1 1 2 1 1 7245.772
2.01 1 1 2.01 1 1 3517.28
2.02 1 1 2.02 1 1 10076.34
2.03 1 1 2.03 1 1 452.0002
2.04 1 1 2.04 1 1 92.33617
2.05 1 1 2.05 1 1 3212.017
2.06 1 1 2.06 1 1 58.88691
2.07 1 1 2.07 1 1 38683.25
2.08 1 1 2.08 1 1 1044
2.09 1 1 2.09 1 1 3.382985
2.1 1 1 2.1 1 1 19849.35

2 1 1 2 1 1 7245.772
2.01 1 1 2 1.01 1 12248.16
2.02 1 1 2 1.02 1 3311.238
2.03 1 1 2 1.03 1 14921.15
2.04 1 1 2 1.04 1 10061.37
2.05 1 1 2 1.05 1 377.5353
2.06 1 1 2 1.06 1 11472.29
2.07 1 1 2 1.07 1 1166.762
2.08 1 1 2 1.08 1 8193.276
2.09 1 1 2 1.09 1 10944.24
2.1 1 1 2 1.1 1 5222.323

2 1 1 2 1 1 7245.772
2.01 1 1 2 1 1.01 21653.08
2.02 1 1 2 1 1.02 42220.17
2.03 1 1 2 1 1.03 5103.943
2.04 1 1 2 1 1.04 29086.48
2.05 1 1 2 1 1.05 13386.28
2.06 1 1 2 1 1.06 21874.29
2.07 1 1 2 1 1.07 1164.248
2.08 1 1 2 1 1.08 220977.6
2.09 1 1 2 1 1.09 2605.214
2.1 1 1 2 1 1.1 22132.02

4. Hasil Estimasi Model 1 Knot


> spline.knots(y, x1, x2, x3, 1, knots=c(0.02,0,0))

Berikut hasil estimasi spline orde 2 dengan 1 titik knot:


Beta ke- 1 = 10.46588
Beta ke- 2 = 0.2914924
Beta ke- 3 = 0.6319955
Beta ke- 4 = 1.123762
Beta ke- 5 = 0.08217477
Beta ke- 6 = 0.6319955
Beta ke- 7 = 1.123762
=============================================
y ytopi error
==========================================
69.95 69.47984 0.4701565
71.98 71.15464 0.8253586
68.97 69.22158 -0.2515757
67.45 67.81651 -0.3665128
69.81 71.69937 -1.889374
72.68 73.69842 -1.018417
68.22 67.45854 0.7614578
69.87 71.34716 -1.47716
74.25 72.34057 1.909431
75.56 75.18603 0.373966
76.98 77.95236 -0.9723569
70.25 71.18432 -0.9343233
75.86 75.94243 -0.08243006
73.95 72.16514 1.784863
69.87 69.47333 0.3966655
68.84 69.04009 -0.2000867
70.02 69.72032 0.2996765
71.77 71.65621 0.1137906
75 75.47557 -0.475573
71.99 72.18002 -0.1900205
72.22 72.79087 -0.5708676
74.1 73.18115 0.918847
69.57 70.32292 -0.7529224
72.29 71.38902 0.9009824
68.65 68.99446 -0.3444561
69.63 69.21629 0.4137138
66.32 67.4252 -1.105201
68.39 68.92129 -0.531286
66.11 65.54615 0.5638457
78.99 80.40516 -1.41516
82.21 82.14039 0.06961314
83.14 82.28337 0.8566292
83.05 82.64722 0.4027827
74.98 74.62506 0.3549448
75.07 73.909 1.160999
===========================================

MSE= 0.7675867

MAPE= 0.009929302

R-Square = 0.9596374

> spline.knots(y, x1, x2, x3, 2, knots=c(1,1.1,1))

Berikut hasil estimasi spline orde 3 dengan 1 titik knot:


Beta ke- 1 = 134.4097
Beta ke- 2 = -2.750135
Beta ke- 3 = -0.3511313
Beta ke- 4 = 51.28555
Beta ke- 5 = -25.69842
Beta ke- 6 = 46.84487
Beta ke- 7 = -20.5858
Beta ke- 8 = 0.3770421
Beta ke- 9 = 25.96451
Beta ke- 10 = 20.35414
=============================================
y ytopi error
==========================================
69.95 69.18552 0.7644763
71.98 71.02939 0.9506138
68.97 69.42888 -0.4588772
67.45 68.09155 -0.6415549
69.81 71.53883 -1.728826
72.68 73.6432 -0.9632048
68.22 67.74202 0.4779782
69.87 71.41821 -1.548211
74.25 72.41981 1.83019
75.56 75.23376 0.326242
76.98 77.96924 -0.9892439
70.25 71.11623 -0.8662302
75.86 76.10197 -0.2419651
73.95 72.08191 1.868092
69.87 69.20759 0.6624141
68.84 68.7804 0.0595962
70.02 69.72879 0.2912106
71.77 71.57802 0.1919798
75 75.48567 -0.485671
71.99 72.13677 -0.146771
72.22 72.6464 -0.4264003
74.1 73.16169 0.9383122
69.57 70.36866 -0.7986625
72.29 71.18294 1.107062
68.65 68.88436 -0.2343649
69.63 68.92636 0.7036404
66.32 67.04659 -0.7265884
68.39 68.80421 -0.4142095
66.11 65.63193 0.4780709
78.99 79.71205 -0.7220543
82.21 81.64304 0.5669578
83.14 82.59627 0.5437258
83.05 82.97043 0.07956607
74.98 74.57821 0.4017887
75.07 73.88727 1.182728
===========================================

MSE= 0.7233095

MAPE= 0.009815711

R-Square = 0.9621437

> spline.knots(y, x1, x2, x3, 3, knots=c(2.04,1,1))

Berikut hasil estimasi spline orde 4 dengan 1 titik knot:


Beta ke- 1 = 6197.9
Beta ke- 2 = -289.8529
Beta ke- 3 = 5.154205
Beta ke- 4 = -0.2282193
Beta ke- 5 = -136.4049
Beta ke- 6 = 265.4411
Beta ke- 7 = -91.74555
Beta ke- 8 = 1195.137
Beta ke- 9 = -1179.478
Beta ke- 10 = 392.6898
Beta ke- 11 = 0.2109251
Beta ke- 12 = 92.01912
Beta ke- 13 = -392.6347
=============================================
y ytopi error
==========================================
69.95 73.51274 -3.562741
71.98 76.05853 -4.07853
68.97 72.74952 -3.779524
67.45 69.64554 -2.195538
69.81 77.1436 -7.333601
72.68 79.71323 -7.033233
68.22 70.22968 -2.009676
69.87 76.05656 -6.186558
74.25 77.22445 -2.974446
75.56 80.95895 -5.398949
76.98 84.3088 -7.3288
70.25 75.65284 -5.402839
75.86 82.07675 -6.216752
73.95 77.25367 -3.30367
69.87 73.25682 -3.386823
68.84 72.55726 -3.71726
70.02 73.45872 -3.438716
71.77 76.39222 -4.62222
75 81.27888 -6.278882
71.99 77.19841 -5.208406
72.22 78.43272 -6.212719
74.1 78.59599 -4.495987
69.57 74.24263 -4.672631
72.29 76.40305 -4.113051
68.65 72.27182 -3.621824
69.63 73.06771 -3.43771
66.32 69.88853 -3.568534
68.39 73.38549 -4.995495
66.11 69.79268 -3.682679
78.99 87.67679 -8.68679
82.21 91.64999 -9.439994
83.14 94.42196 -11.28196
83.05 95.51955 -12.46955
74.98 80.0072 -5.027204
75.07 79.4717 -4.401698
===========================================

MSE= 33.00648

MAPE= 0.07110983

R-Square = 0.9537169

5. Hasil Estimasi Model 2 Knot


> spline.knots(y, x1, x2, x3, 1, knots=c(0.02,0,0,0,0,0))

Berikut hasil estimasi spline orde 2 dengan 2 titik knot:


Beta ke- 1 = 10.46394
Beta ke- 2 = 0.1943153
Beta ke- 3 = 0.4213303
Beta ke- 4 = 0.7491744
Beta ke- 5 = -0.01496341
Beta ke- 6 = 0.4213303
Beta ke- 7 = 0.7491744
Beta ke- 8 = 0.1943153
Beta ke- 9 = 0.4213303
Beta ke- 10 = 0.7491744
=============================================
y ytopi error
==========================================
69.95 69.47984 0.4701565
71.98 71.15464 0.8253586
68.97 69.22158 -0.2515757
67.45 67.81651 -0.3665128
69.81 71.69937 -1.889374
72.68 73.69842 -1.018417
68.22 67.45854 0.7614578
69.87 71.34716 -1.47716
74.25 72.34057 1.909431
75.56 75.18603 0.373966
76.98 77.95236 -0.9723569
70.25 71.18432 -0.9343233
75.86 75.94243 -0.08243006
73.95 72.16514 1.784863
69.87 69.47333 0.3966655
68.84 69.04009 -0.2000867
70.02 69.72032 0.2996765
71.77 71.65621 0.1137906
75 75.47557 -0.475573
71.99 72.18002 -0.1900205
72.22 72.79087 -0.5708676
74.1 73.18115 0.918847
69.57 70.32292 -0.7529224
72.29 71.38902 0.9009824
68.65 68.99446 -0.3444561
69.63 69.21629 0.4137138
66.32 67.4252 -1.105201
68.39 68.92129 -0.531286
66.11 65.54615 0.5638457
78.99 80.40516 -1.41516
82.21 82.14039 0.06961314
83.14 82.28337 0.8566292
83.05 82.64722 0.4027827
74.98 74.62506 0.3549448
75.07 73.909 1.160999
===========================================

MSE= 0.7675867

MAPE= 0.009929302

R-Square = 0.9596374

> spline.knots(y, x1, x2, x3, 2, knots=c(1.07,1,1,1,1.07,1))

Berikut hasil estimasi spline orde 3 dengan 2 titik knot:


Beta ke- 1 = 135.026
Beta ke- 2 = -3.747086
Beta ke- 3 = 0.1126461
Beta ke- 4 = 50.22713
Beta ke- 5 = -26.26426
Beta ke- 6 = 50.17323
Beta ke- 7 = -22.25079
Beta ke- 8 = -0.4762499
Beta ke- 9 = 4.909564
Beta ke- 10 = 11.00977
Beta ke- 11 = 0.3894168
Beta ke- 12 = 21.62194
Beta ke- 13 = 11.00951
=============================================
y ytopi error
==========================================
69.95 68.30632 1.643677
71.98 70.1515 1.828498
68.97 68.55885 0.4111464
67.45 67.20352 0.246482
69.81 70.66816 -0.8581591
72.68 72.75112 -0.07111906
68.22 66.89371 1.326293
69.87 70.5396 -0.6696025
74.25 71.50303 2.746974
75.56 74.30521 1.254789
76.98 77.02878 -0.04878045
70.25 70.19539 0.05461279
75.86 75.1632 0.6967971
73.95 71.16993 2.780071
69.87 68.31058 1.559424
68.84 67.88902 0.9509816
70.02 68.83497 1.185028
71.77 70.65657 1.11343
75 74.56034 0.4396645
71.99 71.22232 0.7676836
72.22 71.74155 0.4784512
74.1 72.25002 1.849982
69.57 69.4572 0.1128009
72.29 70.29327 1.99673
68.65 67.98794 0.6620616
69.63 68.04762 1.582377
66.32 66.17195 0.1480518
68.39 67.96107 0.4289261
66.11 64.82444 1.285562
78.99 78.78872 0.2012824
82.21 80.71868 1.491322
83.14 81.67289 1.467109
83.05 82.04927 1.000732
74.98 73.69005 1.289949
75.07 72.99807 2.071931
===========================================

MSE= 1.632965

MAPE= 0.01440127

R-Square = 0.9621192

> spline.knots(y, x1, x2, x3, 3, knots=c(2.09,1,1,2.09,1,1))

Berikut hasil estimasi spline orde 4 dengan 2 titik knot:


Beta ke- 1 = 5155.417
Beta ke- 2 = -238.7265
Beta ke- 3 = -7.934137
Beta ke- 4 = 1.812755
Beta ke- 5 = 1061.677
Beta ke- 6 = -929.9094
Beta ke- 7 = 306.6416
Beta ke- 8 = 1230.566
Beta ke- 9 = -1214.977
Beta ke- 10 = 404.5224
Beta ke- 11 = -0.9142846
Beta ke- 12 = -153.1846
Beta ke- 13 = -202.2361
Beta ke- 14 = -0.9142538
Beta ke- 15 = -153.1845
Beta ke- 16 = -202.2355
=============================================
y ytopi error
==========================================
69.95 70.19812 -0.2481169
71.98 71.62489 0.3551093
68.97 70.26774 -1.297737
67.45 68.55437 -1.104366
69.81 71.44898 -1.638978
72.68 73.3807 -0.7006999
68.22 68.26609 -0.04608921
69.87 72.16096 -2.29096
74.25 73.56084 0.689163
75.56 75.24029 0.3197056
76.98 76.534 0.4459973
70.25 72.50516 -2.255158
75.86 75.37836 0.4816365
73.95 73.06286 0.8871435
69.87 70.54179 -0.6717945
68.84 70.04607 -1.206072
70.02 70.97041 -0.9504113
71.77 72.83138 -1.061375
75 75.43553 -0.4355253
71.99 73.19435 -1.20435
72.22 72.97881 -0.7588099
74.1 73.82251 0.2774892
69.57 71.7956 -2.225599
72.29 71.87016 0.4198389
68.65 70.16186 -1.511864
69.63 69.97585 -0.3458529
66.32 67.94617 -1.626171
68.39 69.39883 -1.008834
66.11 67.13457 -1.024566
78.99 77.70381 1.286195
82.21 79.10698 3.103016
83.14 80.42223 2.717769
83.05 80.98151 2.068487
74.98 74.58999 0.3900121
75.07 73.94666 1.123339
===========================================

MSE= 1.749641

MAPE= 0.01496109

R-Square = 0.9596918

6. Pemilihan Model Optimal


Berikut merupkan tabel ringkasan nilai GCV untuk orde 2, 3, dan 4 pada titik knot 1 dan
2:
Banyak Orde R-
Letak Titik Knot MSE MAPE
Knot Model SQUARE
2 (0.02,0,0) 0.767587 0.009929 0.9596374
1 3 (1,1.1,1) 0.72331 0.009816 0.9621437
4 (2.04,1,1) 33.00648 0.07111 0.9537169
2 (0.02,0,0,0,0,0) 0.767587 0.009929 0.9596374
2 3 (1.07,1,1,1,1.07,1) 1.632965 0.014401 0.9621192
4 (2.09,1,1,2.09,1,1) 1.749641 0.014961 0.9596918
Dari tabel ringkasan diatas dapat diketahui bahwa nilai MSE dan MAPE terkecil, serta R 2
terletak pada model Spline orde 3 dengan 1 titik knot dengan model regresi:
^y =134.4097−2.750135 x 1−0.3511313 x 12 +51.28555 x 2−25.69842 x 22+ 46.84487 x3 −20.5858 x 32 +0.3770421

Anda mungkin juga menyukai