Dalam eksperimen ini, kita akan menggunakan regresi linier sederhana untuk memprediksi harga rumah (Y) berdasarkan luas rumah (X). Data yang digunakan adalah data simulasi yang menyatakan hubungan antara harga dan luas rumah.
Menyiapkan Data
Kita akan membuat data simulasi untuk eksperimen ini.
# Membuat data simulasiset.seed(123)n <-100# Jumlah sampelX <-rnorm(n, mean =150, sd =30) # Luas rumah (dalam meter persegi)Y <-50000+3000*X +rnorm(n, mean =0, sd =5000) # Model: Harga = 50000 + 3000*Luas + noise# Menyusun data framedata <-data.frame(Y, X)# Melihat beberapa data pertamahead(data)
Y X
1 446005.2 133.1857
2 480568.4 143.0947
3 639050.3 196.7612
4 504608.0 152.1153
5 506877.8 153.8786
6 654130.7 201.4519
Membuat Model Regresi Linier
# Membuat model regresi liniermodel <-lm(Y ~ X, data = data)# Menampilkan ringkasan modelsummary(model)
Call:
lm(formula = Y ~ X, data = data)
Residuals:
Min 1Q Median 3Q Max
-9536.7 -3417.5 -437.5 2903.2 16452.0
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 50797.78 2763.24 18.38 <2e-16 ***
X 2991.25 17.81 167.92 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 4854 on 98 degrees of freedom
Multiple R-squared: 0.9965, Adjusted R-squared: 0.9965
F-statistic: 2.82e+04 on 1 and 98 DF, p-value: < 2.2e-16
Visualisasi Hasil
# Visualisasi X (Luas) dan Y (Harga)library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.2
ggplot(data, aes(x = X, y = Y)) +geom_point() +geom_smooth(method ="lm", color ="blue", se =FALSE) +labs(title ="Hubungan antara Luas Rumah dan Harga Rumah", x ="Luas Rumah (m²)", y ="Harga Rumah (IDR)")
`geom_smooth()` using formula = 'y ~ x'
Regresi Berganda dengan R
Regresi linier berganda adalah teknik statistik yang digunakan untuk memodelkan hubungan antara variabel dependen (Y) dan dua atau lebih variabel independen (X₁, X₂, …, Xp). Dalam eksperimen ini, kita akan menggunakan data simulasi untuk memprediksi nilai Y berdasarkan dua variabel independen X₁ dan X₂ menggunakan regresi linier berganda.
Menyiapkan Data
Kita akan membuat data simulasi untuk eksperimen ini. Misalkan Y adalah variabel dependen yang dipengaruhi oleh dua variabel independen X₁ dan X₂.
# Membuat data simulasiset.seed(123) # Untuk reproduksibilitasn <-100# Jumlah sampelX1 <-rnorm(n, mean =50, sd =10) # Variabel independen X1X2 <-rnorm(n, mean =30, sd =5) # Variabel independen X2# Menambahkan noise ke dalam data YY <-5+3*X1 +2*X2 +rnorm(n, mean =0, sd =5) # Model: Y = 5 + 3*X1 + 2*X2 + noise# Menyusun data framedata <-data.frame(Y, X1, X2)# Melihat beberapa data pertamahead(data)
# Visualisasi hubungan antara X1, X2 dan Ylibrary(ggplot2)# Plot X1 vs Yggplot(data, aes(x = X1, y = Y)) +geom_point() +geom_smooth(method ="lm", se =FALSE, color ="blue") +labs(title ="Hubungan antara X1 dan Y", x ="X1", y ="Y")
`geom_smooth()` using formula = 'y ~ x'
# Plot X2 vs Yggplot(data, aes(x = X2, y = Y)) +geom_point() +geom_smooth(method ="lm", se =FALSE, color ="red") +labs(title ="Hubungan antara X2 dan Y", x ="X2", y ="Y")
`geom_smooth()` using formula = 'y ~ x'
Membuat Model Regresi Linier Berganda
# Membuat model regresi linier bergandamodel <-lm(Y ~ X1 + X2, data = data)# Menampilkan ringkasan modelsummary(model)
Call:
lm(formula = Y ~ X1 + X2, data = data)
Residuals:
Min 1Q Median 3Q Max
-9.3651 -3.3037 -0.6222 3.1068 10.3991
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.29028 4.07779 2.033 0.0448 *
X1 2.93341 0.05243 55.944 <2e-16 ***
X2 2.02381 0.09899 20.444 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 4.756 on 97 degrees of freedom
Multiple R-squared: 0.9726, Adjusted R-squared: 0.972
F-statistic: 1721 on 2 and 97 DF, p-value: < 2.2e-16
Interpretasi Hasil Model
Dari output regresi, kita dapat menginterpretasikan koefisien model, termasuk intercept dan koefisien untuk X₁ dan X₂. Intercept menunjukkan prediksi Y ketika kedua variabel independen bernilai nol. Koefisien X₁ dan X₂ menunjukkan perubahan rata-rata pada Y untuk setiap kenaikan satu unit pada X₁ atau X₂, dengan asumsi variabel lainnya tetap konstan.
Evaluasi Model
# Nilai R-squaredr_squared <-summary(model)$r.squaredr_squared
[1] 0.9725976
# Residuals (error model)residuals <- model$residuals# Plot residualsggplot(data.frame(residuals), aes(x = residuals)) +geom_histogram(bins =20, fill ="skyblue", color ="black") +labs(title ="Distribusi Residuals", x ="Residuals", y ="Frequency")
Prediksi dan Visualisasi Hasil Prediksi
# Membuat prediksidata$predicted_Y <-predict(model, newdata = data)# Visualisasi perbandingan antara nilai aktual dan prediksiggplot(data, aes(x = Y, y = predicted_Y)) +geom_point() +geom_abline(slope =1, intercept =0, color ="red") +labs(title ="Perbandingan Nilai Aktual dan Prediksi", x ="Nilai Aktual (Y)", y ="Nilai Prediksi (Y)")