Eksperimen Regresi dengan R

Application exercise

Regresi Sederhana

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 simulasi
set.seed(123)

n <- 100  # Jumlah sampel
X <- 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 frame
data <- data.frame(Y, X)

# Melihat beberapa data pertama
head(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 linier
model <- lm(Y ~ X, data = data)

# Menampilkan ringkasan model
summary(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 simulasi
set.seed(123)  # Untuk reproduksibilitas

n <- 100  # Jumlah sampel
X1 <- rnorm(n, mean = 50, sd = 10)  # Variabel independen X1
X2 <- rnorm(n, mean = 30, sd = 5)   # Variabel independen X2

# Menambahkan noise ke dalam data Y
Y <- 5 + 3*X1 + 2*X2 + rnorm(n, mean = 0, sd = 5)  # Model: Y = 5 + 3*X1 + 2*X2 + noise

# Menyusun data frame
data <- data.frame(Y, X1, X2)

# Melihat beberapa data pertama
head(data)
         Y       X1       X2
1 202.0757 44.39524 26.44797
2 217.2256 47.69823 31.28442
3 257.9686 65.58708 28.76654
4 216.3558 50.70508 28.26229
5 207.2907 51.29288 25.24191
6 263.6204 67.15065 29.77486

Visualisasi Data

# Visualisasi hubungan antara X1, X2 dan Y
library(ggplot2)

# Plot X1 vs Y
ggplot(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 Y
ggplot(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 berganda
model <- lm(Y ~ X1 + X2, data = data)

# Menampilkan ringkasan model
summary(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-squared
r_squared <- summary(model)$r.squared
r_squared
[1] 0.9725976
# Residuals (error model)
residuals <- model$residuals

# Plot residuals
ggplot(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 prediksi
data$predicted_Y <- predict(model, newdata = data)

# Visualisasi perbandingan antara nilai aktual dan prediksi
ggplot(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)")