Melalui HTML ini, saya akan mengimplementasikan materi yang telah dipelajari dari mata kuliah KOMPUTASI STATISTIKA

PENDAHULUAN

Dalam dunia yang semakin didorong oleh data, kemampuan untuk menganalisis informasi secara efektif sangatlah penting. Project ini disusun sebagai bagian dari laporan praktikum komputasi statistika, yang bertujuan untuk memaparkan konsep regresi linier. Konsep ini diterapkan menggunakan bahasa pemrograman R, yang dikenal fleksibel dalam pengolahan data dan analisis statistik.

ANALISIS REGRESI

Regresi linier adalah model statistik yang digunakan untuk menganalisis hubungan antara variabel dependen (Y) dengan dua atau lebih variabel independen (X₁, X₂, …, Xₙ). Bentuk umum dari persamaan regresi linier berganda adalah

\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_n X_n + \epsilon \]
Di mana:

  • \(Y\) adalah variabel dependen.
  • \(X_1, X_2, \dots, X_n\) adalah variabel independen.
  • \(\beta_0\) adalah intercept (konstanta).
  • \(\beta_1, \beta_2, \dots, \beta_n\) adalah koefisien regresi untuk setiap variabel independen.
  • \(\epsilon\) adalah error term (residual).

SOURCE CODE DAN OUTPUT

DATA

Source: BPS

Berikut ini merupakan data yang akan diolah. Data ini dibuat menggunakan data frame.

data_1 <- data.frame(
Provinsi = c("NAD", "Sumatera Utara", "Sumatera Selatan", "Sumatera Barat",
             "Bengkulu", "Riau", "Kepulauan Riau", "Jambi", "Lampung", "Bangka Belitung", "Kalimantan Barat", "Kalimantan Timur", "KalimantanSelatan", "Kalimantan Tengah", "Banten", "DKI Jakarta", "Jawa Barat",
             "Jawa Tengah", "DI Yogyakarta", "Jawa Timur", "Bali", "NTT", "NTB",
             "Gorontalo", "Sulawesi Barat", "Sulawesi Tengah", "Sulawesi Utara",
             "Sulawesi Tenggara", "Sulawesi Selatan", "Maluku Utara", "Maluku",
             "Papua Barat", "Papua"),

X1 = c(9.02, 9.13, 8.04, 8.63, 8.55, 8.78, 9.91, 8.37, 7.89, 8.15, 7.17, 9.39,
       8.01, 8.17, 8.61, 11, 8.11, 7.43, 9.33, 7.53, 8.58, 7.16, 7.2, 7.52, 7.35,
       8.22, 9.09, 8.44, 8.01, 8.72, 9.2, 8.53, 6.87),

X2 = c(856.9, 1416.4, 1104.6, 384.1, 323.5, 511.5, 119.1, 277.7, 1144.8, 119.4,
       407.3, 248.7, 184.3, 149.4, 677.5, 371.7, 4375.2, 4811.3, 541.9, 4893,
       182.8, 1006.9, 815.5, 198.5, 151.7, 400.4, 201.1, 330.8, 863.2, 85.6,
       315.2, 226.2, 960.6),

Y = c(68.3, 68.36, 66.16, 68.91, 68.53, 69.21, 73.02, 67.7, 68.17, 71.19, 64.92,
      73.21, 69.43, 67.41, 69.47, 78.08, 68.25, 68.02, 76.44, 67.55, 72.09, 61.68,
      63.76, 64.7, 61.53, 65.79, 69.49, 67.55, 67.92, 64.78, 66.09, 60.91, 56.25)
)
data_1
##             Provinsi    X1     X2     Y
## 1                NAD  9.02  856.9 68.30
## 2     Sumatera Utara  9.13 1416.4 68.36
## 3   Sumatera Selatan  8.04 1104.6 66.16
## 4     Sumatera Barat  8.63  384.1 68.91
## 5           Bengkulu  8.55  323.5 68.53
## 6               Riau  8.78  511.5 69.21
## 7     Kepulauan Riau  9.91  119.1 73.02
## 8              Jambi  8.37  277.7 67.70
## 9            Lampung  7.89 1144.8 68.17
## 10   Bangka Belitung  8.15  119.4 71.19
## 11  Kalimantan Barat  7.17  407.3 64.92
## 12  Kalimantan Timur  9.39  248.7 73.21
## 13 KalimantanSelatan  8.01  184.3 69.43
## 14 Kalimantan Tengah  8.17  149.4 67.41
## 15            Banten  8.61  677.5 69.47
## 16       DKI Jakarta 11.00  371.7 78.08
## 17        Jawa Barat  8.11 4375.2 68.25
## 18       Jawa Tengah  7.43 4811.3 68.02
## 19     DI Yogyakarta  9.33  541.9 76.44
## 20        Jawa Timur  7.53 4893.0 67.55
## 21              Bali  8.58  182.8 72.09
## 22               NTT  7.16 1006.9 61.68
## 23               NTB  7.20  815.5 63.76
## 24         Gorontalo  7.52  198.5 64.70
## 25    Sulawesi Barat  7.35  151.7 61.53
## 26   Sulawesi Tengah  8.22  400.4 65.79
## 27    Sulawesi Utara  9.09  201.1 69.49
## 28 Sulawesi Tenggara  8.44  330.8 67.55
## 29  Sulawesi Selatan  8.01  863.2 67.92
## 30      Maluku Utara  8.72   85.6 64.78
## 31            Maluku  9.20  315.2 66.09
## 32       Papua Barat  8.53  226.2 60.91
## 33             Papua  6.87  960.6 56.25

Membuat Fungsi Analisis Regresi

Selanjutnya kita mencari model regresi untuk data

library(ggplot2)

# Membuat model regresi linier berganda menggunakan pipe operator
model <- lm(Y ~ X2 + X1, data = data_1)
model
## 
## Call:
## lm(formula = Y ~ X2 + X1, data = data_1)
## 
## Coefficients:
## (Intercept)           X2           X1  
##   3.380e+01    6.783e-04    3.984e+00
# Menampilkan ringkasan hasil regresi
summary(model)
## 
## Call:
## lm(formula = Y ~ X2 + X1, data = data_1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.0272 -1.0304  0.3652  1.3550  5.1016 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3.380e+01  5.085e+00   6.647 2.32e-07 ***
## X2          6.783e-04  4.054e-04   1.673    0.105    
## X1          3.984e+00  5.909e-01   6.742 1.79e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.795 on 30 degrees of freedom
## Multiple R-squared:  0.6032, Adjusted R-squared:  0.5767 
## F-statistic:  22.8 on 2 and 30 DF,  p-value: 9.522e-07
# Membuat prediksi berdasarkan model
data_1$predicted_Y <- predict(model, newdata = data_1)

# Plot regresi berganda
ggplot(data_1, aes(x = X1, y = Y)) +
  # Titik data dengan warna berdasarkan X2 dan ukuran berdasarkan Y
  geom_point(aes(color = X2, size = Y), alpha = 0.7) +
  
  # Garis regresi dengan warna biru dan garis putus-putus
  geom_smooth(aes(y = predicted_Y), method = "lm", se = FALSE, color = "blue", linetype = "dashed") +
  
  # Menambahkan label, judul, dan keterangan untuk skala warna dan ukuran
  labs(
    title = "Plot Regresi Berganda: X1 & X2 terhadap Y",
    x = "X1",
    y = "Y",
    color = "X2 (Pengaruh)",
    size = "Y (Target)"
  ) +
  
  # Mengatur gradien warna untuk variabel X2
  scale_color_gradient(low = "cyan", high = "magenta") +
  
  # Tema minimalis dan elegan
  theme_minimal() +
  
  # Kustomisasi tampilan teks
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
    axis.title.x = element_text(size = 12, face = "bold"),
    axis.title.y = element_text(size = 12, face = "bold"),
    legend.position = "right"
  )
## `geom_smooth()` using formula = 'y ~ x'