Korelasi Berganda

# Input Data
data <- data.frame(
Motivasi = c(70,75,80,60,85,78,90,65,72,88),
WaktuBelajar = c(2,3,3,1,4,3,4,2,2,4),
Dukungan = c(65,70,72,60,75,70,85,63,68,80),
Kepuasan = c(72,78,83,65,88,80,92,70,75,90)
)
# Scatter Plot
plot(data$Motivasi, data$Kepuasan,
     main = "Scatter Plot Motivasi vs Kepuasan Belajar",
     xlab = "Motivasi Belajar",
     ylab = "Kepuasan Belajar",
     pch = 19,
     col = "blue")

abline(lm(Kepuasan ~ Motivasi, data=data), col="red", lwd=2)

cor(data$Motivasi, data$Kepuasan)
## [1] 0.9963214
plot(data$WaktuBelajar, data$Kepuasan,
     main = "Scatter Plot Waktu Belajar vs Kepuasan",
     xlab = "Waktu Belajar (Jam/Hari)",
     ylab = "Kepuasan Belajar",
     pch = 19,
     col = "darkgreen")

abline(lm(Kepuasan ~ WaktuBelajar, data=data), col="red", lwd=2)

cor(data$WaktuBelajar, data$Kepuasan)
## [1] 0.9746829
plot(data$Dukungan, data$Kepuasan,
     main = "Scatter Plot Dukungan Sosial vs Kepuasan",
     xlab = "Dukungan Sosial",
     ylab = "Kepuasan Belajar",
     pch = 19,
     col = "purple")

abline(lm(Kepuasan ~ Dukungan, data=data), col="red", lwd=2)

cor(data$Dukungan, data$Kepuasan)
## [1] 0.9711559
pairs(data,
      main = "Scatter Plot Matrix Variabel Penelitian",
      pch = 19,
      col = "blue")

# Matriks Korelasi
mat_korelasi =cor(data)
mat_korelasi
##               Motivasi WaktuBelajar  Dukungan  Kepuasan
## Motivasi     1.0000000    0.9694235 0.9694528 0.9963214
## WaktuBelajar 0.9694235    1.0000000 0.9235078 0.9746829
## Dukungan     0.9694528    0.9235078 1.0000000 0.9711559
## Kepuasan     0.9963214    0.9746829 0.9711559 1.0000000

nterpretasi:

Motivasi memiliki korelasi kuat dengan kepuasan belajar.

Dukungan sosial juga menunjukkan hubungan kuat.

# Visualisasi Korelasi
library(corrplot)
## corrplot 0.95 loaded
corrplot(mat_korelasi,
method = "circle",
type = "upper",
addCoef.col = "white",
tl.col = "black",
tl.srt = 45,
number.cex = 0.8)

# Pergitungan Manual Uji F
R <- cor(data)
R
##               Motivasi WaktuBelajar  Dukungan  Kepuasan
## Motivasi     1.0000000    0.9694235 0.9694528 0.9963214
## WaktuBelajar 0.9694235    1.0000000 0.9235078 0.9746829
## Dukungan     0.9694528    0.9235078 1.0000000 0.9711559
## Kepuasan     0.9963214    0.9746829 0.9711559 1.0000000
# Mengambil Matriks Korelasi Variabel Bebas dan Korelasi dengan Variabel Terikat
R_xx <- R[1:3,1:3]   # matriks korelasi antar variabel X
R_yx <- R[4,1:3]     # korelasi Y dengan masing-masing X
# Menghitung Koefisien Determinasi 
R2 <- t(R_yx) %*% solve(R_xx) %*% R_yx
R2
##           [,1]
## [1,] 0.9950019

Artinya 99% variasi kepuasan belajar dapat dijelaskan oleh motivasi belajar, waktu belajar, dan dukungan sosial secara simultan.

R_multiple <- sqrt(R2)
R_multiple
##           [,1]
## [1,] 0.9974978

Terdapat hubungan yang sangat kuat antara variabel motivasi belajar, waktu belajar, dan dukungan sosial dengan kepuasan belajar mahasiswa.

n <- nrow(data)
k <- 3

F_hit <- (R2/k)/((1-R2)/(n-k-1))
F_hit
##          [,1]
## [1,] 398.1527
qf(0.95, df1 = 3, df2 = 6)
## [1] 4.757063

Kriteria: Fhitung​>Ftabel​ 398.1527>4.76 maka tolah H0. Pada taraf signifikan 5%, terdapat hubungan yang signifikan antara motivasi belajar, waktu belajar, dan dukungan sosial secara simultan dengan kepuasan belajar mahasiswa.

Regresi Linear Sederhana

data <- data.frame(
WelfareScore = c(95000,119000,124800,135000,142000,145000,159000,165000,
                 182000,183000,200000,211000,215000,219000),

LivingSpace = c(173.34,186.21,154.80,125.64,153.54,166.23,175.50,
                209.07,205.65,337.68,207.00,227.25,342.00,156.60)
)
data
##    WelfareScore LivingSpace
## 1         95000      173.34
## 2        119000      186.21
## 3        124800      154.80
## 4        135000      125.64
## 5        142000      153.54
## 6        145000      166.23
## 7        159000      175.50
## 8        165000      209.07
## 9        182000      205.65
## 10       183000      337.68
## 11       200000      207.00
## 12       211000      227.25
## 13       215000      342.00
## 14       219000      156.60
# Model Regresi Sederhana
model <- lm(WelfareScore ~ LivingSpace, data = data)
model
## 
## Call:
## lm(formula = WelfareScore ~ LivingSpace, data = data)
## 
## Coefficients:
## (Intercept)  LivingSpace  
##     99704.3        318.7
summary(model)
## 
## Call:
## lm(formula = WelfareScore ~ LivingSpace, data = data)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -59950 -20102  -3043  14138  69385 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  99704.3    31294.9   3.186  0.00783 **
## LivingSpace    318.7      148.4   2.147  0.05288 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 34570 on 12 degrees of freedom
## Multiple R-squared:  0.2776, Adjusted R-squared:  0.2174 
## F-statistic: 4.612 on 1 and 12 DF,  p-value: 0.05288
plot(data$LivingSpace, data$WelfareScore,
     pch = 19,
     col = "blue",
     xlab = "Living Space (m²)",
     ylab = "Welfare Score ($)",
     main = "Scatter Plot Living Space vs Welfare Score")

abline(model, col = "red", lwd = 2)

Berdasarkan hasil analisis regresi sederhana, diperoleh model regresi yang menggambarkan hubungan antara luas tempat tinggal dan welfare score masyarakat. Koefisien regresi untuk variabel Living Space bernilai positif, yang menunjukkan bahwa semakin luas tempat tinggal seseorang, maka skor kesejahteraan subjektif cenderung meningkat. Hal ini mengindikasikan adanya hubungan positif antara luas tempat tinggal dan tingkat kesejahteraan. Jika nilai p-value lebih kecil dari 0.05, maka hubungan tersebut signifikan secara statistik pada taraf 5%.

Analisis Regresi Berganda

# Analisis Regresi Berganda
data <- data.frame(
IPM = c(67.25,69.25,66.23,63.15,65.67,70.12,65.2,66.35,70.34,73.19,
73.76,66.77,73.89,70.52,67.77,65.84,67.4,66.99,72.00,69.61,68.95,
71.65,65.97,68.46,64.07,66.98,62.35,64.1,62.55,75.79,79.34,79.98,
79.24,71.53,72.2),

RLS = c(6.48,7.31,6.84,5.9,6.75,7.63,6.07,7.02,6.69,7.92,
8.41,6.23,8.47,6.85,6.32,6.02,6.9,6.35,7.83,7.29,7.44,
7.31,6.18,6.53,6.00,6.53,5.87,5.93,5.86,10.27,10.33,9.37,
10.19,8.12,8.26),

HLS = c(12.27,12.56,11.51,10.7,12.07,13.03,11.34,12.00,11.65,12.74,
12.96,11.94,13.26,12.19,12.24,11.75,11.46,11.24,12.58,12.25,11.84,
12.81,11.69,11.83,10.65,11.93,11.26,11.99,11.03,12.98,13.92,14.95,
13.97,11.93,11.96)
)
# Model regresi berganda
model <- lm(IPM ~ RLS + HLS, data=data)
summary(model)
## 
## Call:
## lm(formula = IPM ~ RLS + HLS, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2584 -0.6472  0.1090  0.6677  3.3306 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  29.9995     3.6219   8.283 1.84e-09 ***
## RLS           2.2919     0.3075   7.454 1.75e-08 ***
## HLS           1.8607     0.4294   4.333 0.000136 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.291 on 32 degrees of freedom
## Multiple R-squared:  0.9266, Adjusted R-squared:  0.922 
## F-statistic:   202 on 2 and 32 DF,  p-value: < 2.2e-16
# Asumsi Normalitas Resudual
shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.96408, p-value = 0.3019
qqnorm(residuals(model))
qqline(residuals(model))

Kriteria:

p-value > 0.05 → residual normal karena 0.301 > 0.05 → residual berdistribusi normal

# Uji Non Autokorelasi
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 1.3736, p-value = 0.0209
## alternative hypothesis: true autocorrelation is greater than 0

Kriteria:

p-value > 0.05 → tidak ada autokorelasi karena 0.02 < 0.05 → masih terdapat autokorelasi

# Run test (alternative)
model <- lm(IPM ~ RLS + HLS, data=data)
res <- residuals(model)
#install.packages("randtests")
library(randtests)
runs.test(res)
## 
##  Runs Test
## 
## data:  res
## statistic = -1.3933, runs = 14, n1 = 17, n2 = 17, n = 34, p-value =
## 0.1635
## alternative hypothesis: nonrandomness

Kriteria Keputusan

p-value > 0.05 → residual acak → tidak ada autokorelasi

p-value ≤ 0.05 → residual tidak acak → terdapat autokorelasi

Berdasarkan hasil Runs Test, diperoleh nilai p-value sebesar 0.1635. Karena nilai tersebut lebih besar dari 0.05, maka hipotesis nol tidak ditolak, sehingga dapat disimpulkan bahwa residual terjadi secara acak. Dengan demikian, tidak terdapat autokorelasi pada model regresi, sehingga asumsi independensi residual telah terpenuhi.

(Jika p-value < 0.05 maka ditulis bahwa terdapat autokorelasi).

# Uji Homoskedastisitas
library(lmtest)
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 0.68262, df = 2, p-value = 0.7108

Kriteria:

p-value > 0.05 → tidak terjadi heteroskedastisitas karena 0.71 > 0.05 → tidak terjadi heteroskedastisitas

plot(model$fitted.values, residuals(model))
abline(h=0,col="red")

# Uji Multikolonieritas
library(car)
## Loading required package: carData
vif(model)
##      RLS      HLS 
## 3.162025 3.162025

Kriteria:

VIF < 10 → tidak terjadi multikolinieritas sehingga asumsi multikol terpenuhi.

# Uji Simultas (F) Uji F menggunakan model regresi secara keseluruhan.
anova(model)
## Analysis of Variance Table
## 
## Response: IPM
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## RLS        1 642.09  642.09 385.137 < 2.2e-16 ***
## HLS        1  31.30   31.30  18.773 0.0001363 ***
## Residuals 32  53.35    1.67                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Uji Parsial (t) Uji t digunakan untuk melihat pengaruh masing-masing variabel X terhadap Y.
summary(model)
## 
## Call:
## lm(formula = IPM ~ RLS + HLS, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2584 -0.6472  0.1090  0.6677  3.3306 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  29.9995     3.6219   8.283 1.84e-09 ***
## RLS           2.2919     0.3075   7.454 1.75e-08 ***
## HLS           1.8607     0.4294   4.333 0.000136 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.291 on 32 degrees of freedom
## Multiple R-squared:  0.9266, Adjusted R-squared:  0.922 
## F-statistic:   202 on 2 and 32 DF,  p-value: < 2.2e-16
# Koefisien Determinasi
summary(model)$r.squared
## [1] 0.9265903
summary(model)$adj.r.squared
## [1] 0.9220022
pairs(data)

library(GGally)
## Loading required package: ggplot2
ggpairs(data)