Analisis regresi umumnya digunakan untuk data dengan hubungan antara peubah respon (Y) dengan peubah prediktor (X) yang linear dalam parameter. Linear dalam parameter menunjukkan hubungan berordo satu antara peubah respon dengan peubah prediktornya. Oleh karena itu, model regresi adalah Y = Xb + e. Namun dalam banyak kasus, hubungan antara Y dan X tidak linear dalam parameter melainkan memiliki pola hubungan eksponensial dan lainnya. Untuk menangani kasus data yang seperti ini, analisis regresi tak linear adalah solusinya.
Analisis regresi nonlinier terutama menyangkut prediksi respons, inferensi statistik dari estimasi parameter, dan kecocokan model non-linier (Huang et al. 2010) . Konsep dari analisis ini adalah membagi data dalam beberapa bagian kemudian melakukan regresi pada setiap bagian ataupun pemulusan untuk mendekati bentuk regresi. Adapun model regresi nonlinear adalah Y = F(x)+e.
Berikut ini beberapa metode natau teknik yang dapat digunakan dalam analisis regresi non linear dan penerapannya di R.
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.7 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(ggplot2)
library(dplyr)
library(purrr)
library(rsample)
## Warning: package 'rsample' was built under R version 4.2.2
library(readxl)
set.seed(123)
data.x <- rnorm(1000,1,1)
err <- rnorm(1000)
y <- 6+3*data.x+5*data.x^2+err
plot(data.x,y)
data.x adalah data yang dibangkitkan berdasarkan persamaan kuadratik.
Oleh sebab itu, data.x adalah data non linear berordo 2. Plot di atas
memberikan gambaran bentuk pola kuadratik yang menunjukkan pola data
tidak linear(garis lurus).
Selanjutnya kita akan membandingkan metode regresi manakah yang paling baik digunakan untuk pola data kuadratik seperti pola di atas.
lin.mod <-lm( y~data.x)
plot( data.x,y)
lines(data.x,lin.mod$fitted.values,col="red")
summary(lin.mod)
##
## Call:
## lm(formula = y ~ data.x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.651 -4.283 -2.606 1.855 45.603
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.3740 0.3115 17.25 <2e-16 ***
## data.x 13.5729 0.2194 61.86 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.878 on 998 degrees of freedom
## Multiple R-squared: 0.7931, Adjusted R-squared: 0.7929
## F-statistic: 3826 on 1 and 998 DF, p-value: < 2.2e-16
Berdasarkan diagaram pencar hasil model regresi linear, garis regresi banyak yang menyimpang dari kondisi data sebenernya. Cukup terlihat bahwa banyak amatan yang sangat jauh dari garis dugaan regresinya. Hal ini memberikan dugaan kasar bahwa error dari hasil regresi linear yang diperoleh cenderung besar.
Walaupun demikian, hasil R-squared model regresi tersebut cukup baik sebab dapat menjelaskan 79% keragaman data dan 21% lainnya dijelaskan oleh faktor lainnya di luar model.
Regresi non linear dapat menggunakan beberapa metode, diantaranya : - Polynomial - Fungsi tangga - logaritma - Fungsi Gausian - Metode Fitting/ - Kurva Lorenz
Regresi polinomial dapat diduga dengan menggunakan MKT (OLS), karena setara dengan linier model dengan prediktornya adalah xi, xi^2, xi^3,…
Model regresi polynomial : yi = b0 + b1Xi + b2Xi^2 + b3Xi^3+…+ bnXi^n dengan i = 1,2,3,… n = banyaknya ordo polynomial
Berdasarkan pola data yang ditunjukkan scatter plot, hubungan antara Y dengan X cenderung kuadratik. Oleh karena itu, polynomial berordo 2 dapat digunakan dengan bantuan asumsi hasil eksplorasi ini.
pol.mod <- lm( y~data.x+I(data.x^2))
ix <- sort( data.x,index.return=T)$ix
plot(data.x,y)
lines(data.x[ix], pol.mod$fitted.values[ix],col="blue", cex=2)
summary(pol.mod)
##
## Call:
## lm(formula = y ~ data.x + I(data.x^2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.0319 -0.6942 0.0049 0.7116 3.2855
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.95193 0.04568 130.31 <2e-16 ***
## data.x 3.10732 0.05861 53.02 <2e-16 ***
## I(data.x^2) 4.99081 0.02338 213.48 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.007 on 997 degrees of freedom
## Multiple R-squared: 0.9956, Adjusted R-squared: 0.9956
## F-statistic: 1.121e+05 on 2 and 997 DF, p-value: < 2.2e-16
Plot tebaran hasil model regresi nonlinear dengan metode polynomial menunjukkan bahwa hasil metode tersebut sudah menghasilkan garis dugaan regresi yang mengikuti pola data dan cenderung menghasilkan error yang kecil karena sebagian besar amatan berhimpitan, bersinggungan, atau berpotongan dengan garis dugaan regresinya. Model regresi polynomial ini menghasilkan R-squared sebesar 0.9956 yang menunjukkan bahwa 99,56% data amatan dapat dijelaskan oleh model.
Fungsi tangga menggunakan konsep regresi linear terhadap daerah tertentu dalam data. Fungsi ini membagi data menjadi beberapa daerah (tangga) dan melakukan regresi di setiap daerah tersebut.
range( data.x)
## [1] -1.809775 4.241040
c1 <- as.factor(ifelse(data.x<=0.5,1,0))
c2 <- as.factor(ifelse(data.x<=1 & data.x>0.5,1,0))
c3 <- as.factor(ifelse(data.x<=2.5 & data.x>1,1,0))
c4 <- as.factor(ifelse(data.x>2.5,1,0))
step.mod <- lm(y~c1+c2+c3+c4)
plot(data.x,y,xlim=c(-2,5), ylim=c(-10,70))
lines(data.x,lin.mod$fitted.values,col="red")
summary(step.mod)
##
## Call:
## lm(formula = y ~ c1 + c2 + c3 + c4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.762 -2.689 -0.441 1.854 49.141
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 59.3994 0.7317 81.18 <2e-16 ***
## c11 -52.5604 0.8183 -64.23 <2e-16 ***
## c21 -48.1373 0.8564 -56.21 <2e-16 ***
## c31 -35.0367 0.7920 -44.24 <2e-16 ***
## c41 NA NA NA NA
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.294 on 996 degrees of freedom
## Multiple R-squared: 0.8271, Adjusted R-squared: 0.8266
## F-statistic: 1588 on 3 and 996 DF, p-value: < 2.2e-16
Berdasarkan hasil regresi dengan fungsi tangga, garis pendugaan regresi yang didapatkan tidak terlalu jauh bersimpangan dengan amatan aslinya. Walaupum demikian, masih cukuo banyak amatan yang berada dilar garis dugaan regresi nonlinear. Hasil model regresi ini dapat menjelaskan 79,29% keragaman amatan dan sisanya oleh faktor lainnya.
Piecewise Cubic Polynomial adalah model lanjutan dari model polynomial berordo 3. Perbedaannya dibandingkan polynomial ordo 3 terletak pada operasi data yang dipartisi terlebih dahulu berdasarkan sebuah atau beberapa kategori lalu dilakukan teknik regresi Non Linear polynomial ordo 3.
dt.all <-cbind(data.x,y)
dt1 <- dt.all[data.x <=1,]
dim(dt1)
## [1] 495 2
dt2 <- dt.all[data.x > 1,]
dim(dt2)
## [1] 505 2
Data dt1 ddan dt2 merupakan data hasil partisi dengan membagi data menjadi 2 bagian dengan jumlah 495 amatan pada dt1 dan 505 pada dt2. Selanjutnya, dt1 dan dt2 akan diregresikan menggunakan metode polynomial ordo 3.
plot(data.x,y, pch=16,col="red")
cub.mod1 <-lm(dt1[,2]~dt1[,1]+I(dt1[,1]^1)+I(dt1[,1]^3))
ix <- sort(dt1[,1],index.return=T)$ix
lines(dt1[ix,1],cub.mod1$fitted.values[ix],col="blue", lwd=2)
cub.mod2 <- lm(dt2[,2]~dt2[,1]+I(dt2[,1]^1)+I(dt2[,1]^3))
ix2 <- sort(dt2[,1],index.return=T)$ix
lines(dt2[ix2,1],cub.mod2$fitted.values[ix2],col="blue",lwd=2)
Plot di atas adalah hasil pemodelan regresi dengan Piecewise Cubic
Polynominal. Kekurangan dari teknik ini adalah hasil regresi yang tidak
menyatu antara regresi dt1 dan dt2, seperti dalam grafik di atas. Untuk
memperoleh hasil model yang menghasilkan grafik regresi bersambung,
truncated power basis dapat digunakan.
nilai_AIC <- rbind(AIC(lin.mod),
AIC(pol.mod),
AIC(step.mod))
nama_model <- c("Linear","Poly (ordo=2)","Tangga (breaks=3)")
data.frame(nama_model,nilai_AIC)
## nama_model nilai_AIC
## 1 Linear 6698.451
## 2 Poly (ordo=2) 2856.470
## 3 Tangga (breaks=3) 6523.108
Berdasarkan hasil perbandingan model regresi di atas, model regresi non linear polynomial merupakan model regresi terbaik untuk mengetahui pola hubungan antara Y dan X karena nilai AIC model tersebut adalah yang paling kecil dibandingkan model lainnya.
Data yang digunakan dalam ilustrasi berasal dari suatu pemeriksaan terhadap 618 siswa di suatu sekolah. Data ini menghimpun data kebiasaan siswa dalam melakukan kegiatan jarak dekat (seperti membaca, bekerja/bermain komputer, menonton televisi, dan sebagainya) dengan tingkat resiko siswa tersebut terkena rabun jauh atau miopi. Kegiatan jarak dekat ini diukur dalam peubah diopter hour, yakni akumulasi jam dalam seminggu secara rata-rata siswa melakukan aktivitas jarak dekat.
Data ini saya himpun melalui laman https://bagusco.staff.ipb.ac.id/eksplorasi-data/
Resmio <- read_excel("C:/Users/ASUS/OneDrive/Documents/Kuliah/Semester 5/Pengantar Sains Data/PDS Project/Resikomiopi.xlsx")
## New names:
## • `` -> `...1`
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
Pola hubungan yang terbentuk pada plot tebaran tidak terlihat jelas,
walaupun ada kecenderungan pola data bergerak dari kiri bawah ke kanan
atas. Hal ini mengindikasikan bahwa hubungan anatar diopeter hour dengan
resiko miopi positif yang menunjukkan bahwa siswa dengan jam aktivitas
jarak dekatnya banyak, cenderung berisiko untuk menderita miopi.
miop_linear = lm(resiko~diopterhr,data=Resmio)
summary(miop_linear)
##
## Call:
## lm(formula = resiko ~ diopterhr, data = Resmio)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.11668 -0.06495 -0.01610 0.03101 0.25688
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1107959 0.0060959 18.175 < 2e-16 ***
## diopterhr 0.0007792 0.0001995 3.905 0.000105 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07945 on 616 degrees of freedom
## Multiple R-squared: 0.02416, Adjusted R-squared: 0.02258
## F-statistic: 15.25 on 1 and 616 DF, p-value: 0.0001045
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
lines(Resmio$diopterhr,miop_linear$fitted.values,col="red")
Berdasarkan diagaram pencar hasil model regresi linear di atas, garis
dugaan regresi terlihat tidak mampu mewakili keadaan data amatan.
Terlihat jelas bahwa banyak amatan yang sangat jauh dari garis dugaan
regresinya. Hal ini mengindikasikan bahwa error dari hasil regresi
linear yang diperoleh cenderung besar.Hal ini didukung oleh hasil
R-squared model regresi tersebut yang hanya dapat menjelaskan 2,26%
keragaman data. Hal ini jelas menunjukkan bahwa model regresi linear
tidak baik digunakan dalam data ini.
Data resikomiopi ini memiliki pola antara Y dan X yang tidak begitu jelas. Hal ini menyulitkan kita untuk menentukan pola polynomial yang tepat. Namun, pola data tersebut cenderung memiliki sebuah pola berpangkat genap sebab data tidak pernah bernilai negatif. Oleh karena itu, trial and error dilakukan untuk mendapatkan model terbaik dengan pangkat genap.
pol2.mod <- lm( Resmio$resiko~Resmio$diopterhr+I(Resmio$diopterhr^2))
ix <- sort( Resmio$diopterhr,index.return=T)$ix
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
lines(Resmio$diopterhr[ix], pol2.mod$fitted.values[ix],col="blue", cex=2)
summary(pol2.mod)
##
## Call:
## lm(formula = Resmio$resiko ~ Resmio$diopterhr + I(Resmio$diopterhr^2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.13570 -0.06617 -0.01571 0.03204 0.21502
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.269e-01 9.857e-03 12.871 <2e-16 ***
## Resmio$diopterhr -4.246e-04 6.141e-04 -0.691 0.4896
## I(Resmio$diopterhr^2) 1.633e-05 7.882e-06 2.072 0.0387 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07924 on 615 degrees of freedom
## Multiple R-squared: 0.03092, Adjusted R-squared: 0.02777
## F-statistic: 9.813 on 2 and 615 DF, p-value: 6.383e-05
Berdasarkan diagaram pencar hasil model regresi non linear polynomial ordo 2 di atas, garis dugaan regresi terlihat tidak mampu mewakili keadaan data amatan. Terlihat jelas bahwa banyak amatan yang sangat jauh dari garis dugaan regresinya. Hal ini mengindikasikan bahwa error dari hasil regresi non linear polynomial ordo 2 yang diperoleh cenderung besar.Hal ini didukung oleh hasil R-squared model regresi tersebut yang hanya dapat menjelaskan 2,27% keragaman data. Hal ini jelas menunjukkan bahwa model regresi non linear polynomial ordo 2 tidak baik digunakan dalam data ini.
pol4.mod <- lm( Resmio$resiko~Resmio$diopterhr+I(Resmio$diopterhr^4))
ix <- sort( Resmio$diopterhr,index.return=T)$ix
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
lines(Resmio$diopterhr[ix], pol4.mod$fitted.values[ix],col="blue", cex=2)
summary(pol4.mod)
##
## Call:
## lm(formula = Resmio$resiko ~ Resmio$diopterhr + I(Resmio$diopterhr^4))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.15050 -0.06582 -0.01566 0.03304 0.20913
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.230e-01 7.368e-03 16.699 < 2e-16 ***
## Resmio$diopterhr 1.474e-04 2.934e-04 0.502 0.61563
## I(Resmio$diopterhr^4) 1.723e-09 5.898e-10 2.922 0.00361 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07897 on 615 degrees of freedom
## Multiple R-squared: 0.03752, Adjusted R-squared: 0.03439
## F-statistic: 11.99 on 2 and 615 DF, p-value: 7.819e-06
Berdasarkan diagaram pencar hasil model regresi non linear polynomial ordo 2 di atas, garis dugaan regresi terlihat tidak mampu mewakili keadaan data amatan. Terlihat jelas bahwa banyak amatan yang sangat jauh dari garis dugaan regresinya. Hal ini mengindikasikan bahwa error dari hasil regresi non linear polynomial ordo 2 yang diperoleh cenderung besar.Hal ini didukung oleh hasil R-squared model regresi tersebut yang hanya dapat menjelaskan 3,44% keragaman data. Hal ini jelas menunjukkan bahwa model regresi non linear polynomial ordo 4 masih tidak baik digunakan dalam data ini, walaupun cenderung lebih baik dibandingkan polynomial ordo 2.
pol8.mod <- lm( Resmio$resiko~Resmio$diopterhr+I(Resmio$diopterhr^8))
ix <- sort( Resmio$diopterhr,index.return=T)$ix
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
lines(Resmio$diopterhr[ix], pol8.mod$fitted.values[ix],col="blue", cex=2)
summary(pol8.mod)
##
## Call:
## lm(formula = Resmio$resiko ~ Resmio$diopterhr + I(Resmio$diopterhr^8))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.14263 -0.06607 -0.01568 0.03377 0.20694
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.191e-01 6.421e-03 18.547 < 2e-16 ***
## Resmio$diopterhr 3.946e-04 2.223e-04 1.776 0.076310 .
## I(Resmio$diopterhr^8) 2.466e-17 6.546e-18 3.767 0.000181 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07861 on 615 degrees of freedom
## Multiple R-squared: 0.04616, Adjusted R-squared: 0.04306
## F-statistic: 14.88 on 2 and 615 DF, p-value: 4.878e-07
Berdasarkan diagaram pencar hasil model regresi non linear polynomial ordo 8 di atas, garis dugaan regresi terlihat tidak mampu mewakili keadaan data amatan. Terlihat jelas bahwa banyak amatan yang sangat jauh dari garis dugaan regresinya. Hal ini mengindikasikan bahwa error dari hasil regresi non linear polynomial ordo 8 yang diperoleh cenderung besar.Hal ini didukung oleh hasil R-squared model regresi tersebut yang hanya dapat menjelaskan 8 4,306% keragaman data. Hal ini jelas menunjukkan bahwa model regresi non linear polynomial ordo 8 masih tidak baik digunakan dalam data ini, walaupun cenderung lebih baik dibandingkan polynomial ordo 2 dan 4.
pol11.mod <- lm( Resmio$resiko~Resmio$diopterhr+I(Resmio$diopterhr^11))
ix <- sort( Resmio$diopterhr,index.return=T)$ix
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
lines(Resmio$diopterhr[ix], pol11.mod$fitted.values[ix],col="blue", cex=2)
summary(pol11.mod)
##
## Call:
## lm(formula = Resmio$resiko ~ Resmio$diopterhr + I(Resmio$diopterhr^11))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.12627 -0.06637 -0.01633 0.03322 0.20578
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.172e-01 6.247e-03 18.761 < 2e-16 ***
## Resmio$diopterhr 4.879e-04 2.109e-04 2.313 0.021038 *
## I(Resmio$diopterhr^11) 2.641e-23 6.775e-24 3.898 0.000108 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07855 on 615 degrees of freedom
## Multiple R-squared: 0.04769, Adjusted R-squared: 0.04459
## F-statistic: 15.4 on 2 and 615 DF, p-value: 2.983e-07
Berdasarkan diagaram pencar hasil model regresi non linear polynomial ordo 11 di atas, garis dugaan regresi terlihat tidak mampu mewakili keadaan data amatan. Terlihat jelas bahwa banyak amatan yang sangat jauh dari garis dugaan regresinya. Hal ini mengindikasikan bahwa error dari hasil regresi non linear polynomial ordo 11 yang diperoleh cenderung besar.Hal ini didukung oleh hasil R-squared model regresi tersebut yang hanya dapat menjelaskan 11 4,46% keragaman data. Hal ini jelas menunjukkan bahwa model regresi non linear polynomial ordo 11 masih tidak baik digunakan dalam data ini, walaupun cenderung lebih baik dibandingkan polynomial ordo 2, 4, dan 8. Namun jika melihat hanya pada R-squarednya, maka dapat disimpulkan bahwa model terbaik sementara adalah model polynominal ordo 11.
range(Resmio$diopterhr)
## [1] 2 101
d1 <- as.factor(ifelse(Resmio$diopterhr<=20,1,0))
d2 <- as.factor(ifelse(Resmio$diopterhr<=40 & Resmio$diopterhr>20,1,0))
d3 <- as.factor(ifelse(Resmio$diopterhr<=60 & Resmio$diopterhr>40,1,0))
d4 <- as.factor(ifelse(Resmio$diopterhr<=80 & Resmio$diopterhr>60,1,0))
d5 <- as.factor(ifelse(Resmio$diopterhr>80,1,0))
step2.mod <- lm(Resmio$resiko~d1+d2+d3+d4+d5)
plot(Resmio$diopterhr,Resmio$resiko, xlab="Diopter Hour (Jam Per Minggu)", ylab= "Resiko Miopi")
lines(Resmio$diopterhr,miop_linear$fitted.values,col="red")
lines(Resmio$diopterhr[ix], step2.mod$fitted.values[ix],col="dark green")
summary(step2.mod)
##
## Call:
## lm(formula = Resmio$resiko ~ d1 + d2 + d3 + d4 + d5)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.21546 -0.06621 -0.01537 0.03676 0.21308
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.28618 0.03539 8.086 3.30e-15 ***
## d11 -0.15797 0.03571 -4.424 1.15e-05 ***
## d21 -0.16018 0.03576 -4.480 8.92e-06 ***
## d31 -0.14169 0.03667 -3.864 0.000124 ***
## d41 -0.14127 0.03890 -3.631 0.000306 ***
## d51 NA NA NA NA
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07914 on 613 degrees of freedom
## Multiple R-squared: 0.03655, Adjusted R-squared: 0.03026
## F-statistic: 5.814 on 4 and 613 DF, p-value: 0.000135
Berdasarkan diagaram pencar hasil model regresi non linear fungsi tangga dengan 5 break di atas, garis dugaan regresi terlihat tidak mampu mewakili keadaan data amatan. Terlihat jelas bahwa banyak amatan yang sangat jauh dari garis dugaan regresinya. Hal ini mengindikasikan bahwa error dari hasil regresi non linear yang diperoleh cenderung besar.Hal ini didukung oleh hasil R-squared model regresi tersebut yang hanya dapat menjelaskan 3,026% keragaman data. Hal ini jelas menunjukkan bahwa model regresi non linear ini masih belum cukup untuk melihat pola hubungan antara diopter hour dengan resiko.
nilai_AIC <- rbind(AIC(miop_linear),AIC(pol2.mod),
AIC(pol4.mod),AIC(pol8.mod),
AIC(pol8.mod),AIC(step2.mod))
nama_model <- c("Linear","Poly (ordo=2)","Poly (ordo=4)","Poly (ordo=8)","Poly (ordo=11)","Tangga (breaks=3)")
data.frame(nama_model,nilai_AIC)
## nama_model nilai_AIC
## 1 Linear -1372.513
## 2 Poly (ordo=2) -1374.812
## 3 Poly (ordo=4) -1379.031
## 4 Poly (ordo=8) -1384.607
## 5 Poly (ordo=11) -1384.607
## 6 Tangga (breaks=3) -1374.409
Berdasarkan hasil perbandingan model regresi di atas, model regresi non linear polynomial ordo 11 merupakan model regresi terbaik untuk mengetahui pola hubungan antara Y dan X karena nilai AIC model tersebut adalah yang paling kecil dan nilai R-squared terbesar dibandingkan model lainnya.