#Tugas Individu Analisis Regresi Kuliah (K1) #Cindy Apriliyanti (G1401221010)
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.2
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Warning: package 'readr' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'forcats' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggridges)
library(GGally)
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.2
##
## Attaching package: 'plotly'
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following object is masked from 'package:graphics':
##
## layout
library(dplyr)
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.2
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(stats)
#EKSPLORASI DATA
data <- read_xlsx("C:\\Users\\Ryzen\\Documents\\Tugas Anreg Kuliah Pertemuan 7.xlsx")
data
## # A tibble: 15 × 3
## No X Y
## <dbl> <dbl> <dbl>
## 1 1 2 54
## 2 2 5 50
## 3 3 7 45
## 4 4 10 37
## 5 5 14 35
## 6 6 19 25
## 7 7 26 20
## 8 8 31 16
## 9 9 34 18
## 10 10 38 13
## 11 11 45 8
## 12 12 52 11
## 13 13 53 8
## 14 14 60 4
## 15 15 65 6
#UJI KENORMALAN
qqnorm(data$Y)
qqline(data$Y, col = "blue")
shapiro.test(data$Y)
##
## Shapiro-Wilk normality test
##
## data: data$Y
## W = 0.89636, p-value = 0.08374
#Hasil Shapiro-Wilk normality test menyebar normal berdasarkan hasil test yang lebih dari 0.05, namun qqplot menunjukkan asumsi bahwa data tersebut tidak menyebar normal.
#MODEL REGRESI
model_lm <- lm(formula = Y ~ X, data = data)
summary(model_lm)
##
## Call:
## lm(formula = Y ~ X, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.1628 -4.7313 -0.9253 3.7386 9.0446
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 46.46041 2.76218 16.82 3.33e-10 ***
## X -0.75251 0.07502 -10.03 1.74e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.891 on 13 degrees of freedom
## Multiple R-squared: 0.8856, Adjusted R-squared: 0.8768
## F-statistic: 100.6 on 1 and 13 DF, p-value: 1.736e-07
model_lm
##
## Call:
## lm(formula = Y ~ X, data = data)
##
## Coefficients:
## (Intercept) X
## 46.4604 -0.7525
#AUTOKORELASI
acf(model_lm$residuals)
#Dalam autokorelasi pada lag 1 adalah 0.5 dan pada lag 2 adalah 0.4.
Kedua nilai tersebut melebihi batas kepercayaan 95%. Hal ini menandakan
bahwa autokorelasi pada lag 1 dan 2 signifikan yang kemudian
mengindikasikan pelanggaran asumsi Gauss-Markov, khususnya asumsi
non-autokorelasi.
dwtest(model_lm)
##
## Durbin-Watson test
##
## data: model_lm
## DW = 0.48462, p-value = 1.333e-05
## alternative hypothesis: true autocorrelation is greater than 0
#Hasil p-test dari Uji Durbin-Watson juga menunjukkan nilai kurang dari 0.05, yang memperkuat indikasi pelanggaran asumsi Gauss-Markov tersebut.
#UJI HOMOSKEDASTISITAS
plot(model_lm, which = 1)
#Uji ini mengindikasikan terjadinya homoskedastisitas karena ragam
sisaan cenderung meningkat seiringan dengan nilai prediksi.
#TRANSFORMASI WLS
resid_abs <- abs(model_lm$residuals)
fitted_val <- model_lm$fitted.values
fit <- lm(resid_abs ~ fitted_val, data)
data.weights <- 1 / fit$fitted.values^2
data.weights
## 1 2 3 4 5 6 7
## 0.03414849 0.03489798 0.03541143 0.03620311 0.03730067 0.03874425 0.04091034
## 8 9 10 11 12 13 14
## 0.04257072 0.04361593 0.04507050 0.04779711 0.05077885 0.05122749 0.05454132
## 15
## 0.05710924
plot(data.weights)
model_weighted <- lm(Y~X, data = data, weights = data.weights)
plot(model_weighted)
summary(model_weighted)
##
## Call:
## lm(formula = Y ~ X, data = data, weights = data.weights)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -1.46776 -1.09054 -0.06587 0.77203 1.85309
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 45.41058 2.90674 15.623 8.35e-10 ***
## X -0.71925 0.07313 -9.835 2.18e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.204 on 13 degrees of freedom
## Multiple R-squared: 0.8815, Adjusted R-squared: 0.8724
## F-statistic: 96.73 on 1 and 13 DF, p-value: 2.182e-07
#WLS belum efektif karena belum memenuhi asumsi Gauss-Markov
#TRANSFORMASI AKAR PADA x DAN y, ATAU X DAN Y
newdata <- data %>%
mutate(y = sqrt(Y)) %>%
mutate(x = sqrt(X))
model_sqrtx <- lm(y ~ X, data = newdata)
plot(x = newdata$X, y = newdata$y)
plot(model_sqrtx)
summary(model_sqrtx)
##
## Call:
## lm(formula = y ~ X, data = newdata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.53998 -0.38316 -0.01727 0.36045 0.70199
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.015455 0.201677 34.79 3.24e-14 ***
## X -0.081045 0.005477 -14.80 1.63e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4301 on 13 degrees of freedom
## Multiple R-squared: 0.9439, Adjusted R-squared: 0.9396
## F-statistic: 218.9 on 1 and 13 DF, p-value: 1.634e-09
#UJI AUTOKORELASI PADA MODEL REGRESI TRANSFORMASI
dwtest(model_sqrtx)
##
## Durbin-Watson test
##
## data: model_sqrtx
## DW = 1.2206, p-value = 0.02493
## alternative hypothesis: true autocorrelation is greater than 0
model_sqrt <- lm(y ~ x, data = newdata)
plot(x = newdata$x, y = newdata$y)
plot(model_sqrt)
#Tes Durbin-Watson di atas membuktikan bahwa masih terdapat
autokorelasi, ditandai dengan p-value yang kurang dari 0,05. Selain itu,
hasil tes Durbin-Watson juga menunjukkan adanya autokorelasi positif
karena nilai DW yang rendah dan p-value yang signifikan.
summary(model_sqrt)
##
## Call:
## lm(formula = y ~ x, data = newdata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.42765 -0.17534 -0.05753 0.21223 0.46960
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.71245 0.19101 45.61 9.83e-16 ***
## x -0.81339 0.03445 -23.61 4.64e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2743 on 13 degrees of freedom
## Multiple R-squared: 0.9772, Adjusted R-squared: 0.9755
## F-statistic: 557.3 on 1 and 13 DF, p-value: 4.643e-12
#UJI AUTOKORELASI MODEL REGRESI
dwtest(model_sqrt)
##
## Durbin-Watson test
##
## data: model_sqrt
## DW = 2.6803, p-value = 0.8629
## alternative hypothesis: true autocorrelation is greater than 0
#KESIMPULAN
#Tidak ada bukti yang cukup untuk menolak hipotesis nol, yang menyatakan bahwa tidak ada autokorelasi karena nilai p yang didapat lebih besar dari 0.05.
#Dari hasil transformasi tersebut, dapat disimpulkan bahwa transformasi akar Y membuat persamaan regresi menjadi lebih efektif.
#Model regresi setelah transformasi dinyatakan sebagai: #Y^* = 8.71245 - 0.81339X^* + e #Y^* = sqrt(Y) #X^* = sqrt(X)
#Dengan melakukan transformasi balik, kita mendapatkan: #Y = (8.71245 - 0.81339 X1/2)2 + e
#Interpretasi model menghasilkan: Y berkorelasi terbalik dengan akar kuadrat dari X, dengan hubungan yang bersifat kuadratik. Berarti, semakin besar nilai akar kuadrat dari X, semakin kecil rata-rata nilai Y, dengan tingkat penurunan yang semakin meningkat.
#Puncak kurva menunjukkan nilai rata-rata maksimum Y untuk nilai tertentu dari X. Konstanta 8.71245 mewakili nilai Y ketika X sama dengan 0. Koefisien -0.81339 merupakan koefisien regresi untuk variabel X. Nilai negatif menunjukkan hubungan terbalik antara Y dan akar kuadrat dari X.
#Dengan demikian, semakin besar akar kuadrat dari X maka akan semakin kecil nilai Y. Pangkat dua pada koefisien regresi menunjukkan bahwa hubungan antara Y dan X bersifat kuadratik.
#Ini berarti perubahan Y tidak proporsional dengan perubahan X, melainkan berubah dengan tingkat peningkatan yang semakin tinggi.