Regresi polinomial digunakan ketika hubungan antara variabel tidak
linear.
Pada analisis ini:
- X = Jam Belajar
- Y = Nilai Ujian
data <- read.csv("D:/Youtube/Regresi/Polinomial Regression/polinomial.csv")
head(data)
## X.1 X Y
## 1 1 3.725465 89.59499
## 2 2 6.729831 91.07812
## 3 3 4.453862 90.65933
## 4 4 7.298104 92.83841
## 5 5 7.642804 88.80217
## 6 6 2.273339 86.60200
# Ambil Variabel
X <- data$X
Y <- data$Y
plot(X,Y)
Berdasarkan plot diatas terjadi kenaikan dan pada titik tertentu terjadi penurunan yang mengindikasikan adanya hubungan non linear antara jam belajar dan nilai ujian.
model_poly <- lm(Y ~ X + I(X^2), data = data)
summary(model_poly)
##
## Call:
## lm(formula = Y ~ X + I(X^2), data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3911 -1.2490 -0.0851 1.1498 4.4525
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 70.22140 1.79652 39.088 < 2e-16 ***
## X 7.43921 0.77028 9.658 7.35e-16 ***
## I(X^2) -0.64713 0.07587 -8.530 1.98e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.944 on 97 degrees of freedom
## Multiple R-squared: 0.5919, Adjusted R-squared: 0.5835
## F-statistic: 70.34 on 2 and 97 DF, p-value: < 2.2e-16
Jadi diperoleh model sebagai berikut:
\[ Y=70.22140+7.43921X-0.64713X^2 \]
library(ggplot2)
ggplot(data, aes(X, Y)) +
geom_point(color = "blue") +
stat_smooth(method = "lm",
formula = y ~ x + I(x^2),
color = "red",
se = TRUE) +
theme_minimal()
library(nortest)
shapiro.test(residuals(model_poly))
##
## Shapiro-Wilk normality test
##
## data: residuals(model_poly)
## W = 0.98908, p-value = 0.5907
Berdasarkan output diatas diperoleh nilai p-value > 0.05 sehingga residual berdistribusi normal
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(model_poly)
##
## studentized Breusch-Pagan test
##
## data: model_poly
## BP = 0.088398, df = 2, p-value = 0.9568
Berdasarkan output diatas diperoleh nilai p-value > 0.05 sehingga model tidak ada masalah heterokedastisitas
dwtest(model_poly)
##
## Durbin-Watson test
##
## data: model_poly
## DW = 2.0769, p-value = 0.6522
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan output diatas diperoleh nilai p-value > 0.05 sehingga model tidak ada masalah autokorelasi
res <- model_poly$residuals
# MSE
MSE <- mean(res^2)
# RMSE
RMSE <- sqrt(MSE)
MSE
## [1] 3.664593
RMSE
## [1] 1.914313
Model regresi polinomial ini memiliki tingkat kesalahan yang relatif kecil dan stabil, dengan rata-rata deviasi prediksi sekitar ±1.9, sehingga dapat dianggap cukup baik dalam menjelaskan dan memprediksi Y.