Analisis regresi merupakan metode statistik yang digunakan untuk mempelajari hubungan antara satu variabel dependen dengan satu atau lebih variabel independen. Teknik ini memungkinkan peneliti untuk mengukur pengaruh variabel bebas secara kuantitatif dan memprediksi nilai variabel respon berdasarkan model yang dibangun (Gujarati & Porter, 2020).
Model regresi linier mengasumsikan bahwa hubungan antar variabel bersifat linear, error berdistribusi normal, memiliki varians homogen, serta tidak terdapat autokorelasi. Pemenuhan asumsi ini penting agar estimasi parameter bersifat tidak bias dan efisien (Montgomery, 2018).
Regresi juga menjadi dasar bagi berbagai metode lanjutan seperti uji signifikansi parameter, pemilihan model terbaik, dan evaluasi performa prediksi. Karena fleksibilitasnya, regresi merupakan salah satu teknik paling banyak digunakan dalam penelitian kuantitatif (Wooldridge, 2019).
Analisis regresi adalah metode statistik yang digunakan untuk mempelajari dan memodelkan hubungan antara variabel dependen (Y) dengan satu atau lebih variabel independen (X). Tujuan utamanya adalah menjelaskan pola hubungan, mengukur besarnya pengaruh variabel bebas, dan memprediksi nilai variabel dependen berdasarkan model yang diperoleh
Analisis regresi linier sederhana mempelajari hubungan antara satu variabel independen (X) dan satu variabel dependen (Y). Model regresi linier sederhana: \[Y = a + bX\], menggambarkan perubahan rata-rata Y akibat perubahan satu satuan X.
Analisis regresi linier berganda mempelajari hubungan antara satu variabel dependen (Y) dengan dua atau lebih variabel independen \(X_1, X_2, \ldots, X_n\) Model regresi linier berganda: \[Y = a + b1*X1 + b2*X2 + ... + bn*Xn,\]
digunakan untuk mengukur pengaruh simultan beberapa variabel independen.++
Pendekatan matriks digunakan untuk menuliskan model regresi linier dalam bentuk yang lebih ringkas dan efisien. Model regresi linier sederhana maupun berganda dapat diformulasikan sebagai: Model matriks: \[ y = X*beta + epsilon\], estimasi parameter beta diperoleh dengan OLS:\[ b = (X'X)^-1 * X'y.\]
Visualisasi adalah proses menampilkan data atau hasil analisis dalam bentuk grafik agar pola, tren, dan hubungan antar variabel lebih mudah dipahami.
data <- read.table("clipboard", header = TRUE, sep = "\t")
head(data)
## X1 X2 Y
## 1 8.2 7.5 79.0
## 2 7.9 8.0 83.5
## 3 9.0 6.8 84.0
## 4 6.5 8.5 87.5
## 5 7.0 7.2 74.2
## 6 8.5 6.0 80.8
colnames(data)
## [1] "X1" "X2" "Y"
X_simple <- cbind(1, data$X1)
y <- as.matrix(data$Y)
beta_simple <- solve(t(X_simple) %*% X_simple) %*% t(X_simple) %*% y
beta_simple
## [,1]
## [1,] 70.016627
## [2,] 1.695584
model_simple <- lm(Y ~ X1, data = data)
summary(model_simple)
##
## Call:
## lm(formula = Y ~ X1, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.4031 -3.6063 0.0818 2.8209 11.3578
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 70.0166 6.5750 10.649 2.36e-11 ***
## X1 1.6956 0.8229 2.061 0.0487 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.873 on 28 degrees of freedom
## Multiple R-squared: 0.1317, Adjusted R-squared: 0.1007
## F-statistic: 4.246 on 1 and 28 DF, p-value: 0.04875
X_multi <- cbind(1, data$X1, data$X2)
beta_multi <- solve(t(X_multi) %*% X_multi) %*% t(X_multi) %*% y
beta_multi
## [,1]
## [1,] 27.708475
## [2,] 2.934283
## [3,] 4.280306
model_multi <- lm(Y ~ X1 + X2, data = data)
summary(model_multi)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.3563 -1.4832 -0.3535 2.1854 4.3361
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 27.7085 6.6838 4.146 0.000301 ***
## X1 2.9343 0.4976 5.897 2.78e-06 ***
## X2 4.2803 0.5591 7.656 3.10e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.786 on 27 degrees of freedom
## Multiple R-squared: 0.7262, Adjusted R-squared: 0.7059
## F-statistic: 35.8 on 2 and 27 DF, p-value: 2.546e-08
ggplot(data, aes(x=X1, y=Y)) +
geom_point(size=3) +
geom_smooth(method="lm", se=TRUE, color="red") +
labs(title="Scatter Plot Y vs X1", x="X1", y="Y")
## `geom_smooth()` using formula = 'y ~ x'
cor_mat <- round(cor(data), 2)
melted <- melt(cor_mat)
ggplot(melted, aes(Var1, Var2, fill=value)) +
geom_tile() +
geom_text(aes(label=value), color="white", size=5) +
scale_fill_gradient2(low="blue", high="red", mid="gray", midpoint=0) +
labs(title="Heatmap Korelasi Variabel") +
theme_minimal()
par(mfrow=c(1,2))
plot(model_multi$fitted.values, model_multi$residuals,
xlab="Fitted Values", ylab="Residuals", main="Residual Plot", pch=19, col="blue")
abline(h=0, col="red")
qqPlot(model_multi, main="QQ Plot Residual")
## [1] 5 20
x1_seq <- seq(min(data$X1), max(data$X1), length.out=30)
x2_seq <- seq(min(data$X2), max(data$X2), length.out=30)
grid <- expand.grid(X1=x1_seq, X2=x2_seq)
grid$Y_pred <- predict(model_multi, newdata=grid)
plot_ly() %>%
add_markers(data=data, x=~X1, y=~X2, z=~Y, marker=list(size=4,color="blue")) %>%
add_surface(x=x1_seq, y=x2_seq, z=matrix(grid$Y_pred, nrow=length(x1_seq)), opacity=0.6) %>%
layout(title="3D Plane Model Regresi Berganda",
scene=list(xaxis=list(title="X1"),
yaxis=list(title="X2"),
zaxis=list(title="Y Prediksi")))
Visualisasi mempermudah interpretasi data, mengenali pola dan tren, serta membantu mengevaluasi performa model regresi.