# =====================================================
# 1. DATA FRAME
# =====================================================
data_sim <- data.frame(
  pendapatan = Y,
  tanggungan = X1,
  hutang     = X2
)

head(data_sim)
##   pendapatan tanggungan   hutang
## 1   97.14148   2.439524 16.44797
## 2   97.96558   2.769823 21.28442
## 3   85.14607   4.558708 18.76654
## 4   87.88000   3.070508 18.26229
## 5   75.80672   3.129288 15.24191
## 6   85.28245   4.715065 19.77486
summary(data_sim)
##    pendapatan       tanggungan         hutang      
##  Min.   : 64.70   Min.   :0.6908   Min.   : 9.734  
##  1st Qu.: 79.79   1st Qu.:2.5061   1st Qu.:15.994  
##  Median : 85.88   Median :3.0618   Median :18.871  
##  Mean   : 86.34   Mean   :3.0904   Mean   :19.462  
##  3rd Qu.: 93.23   3rd Qu.:3.6918   3rd Qu.:22.339  
##  Max.   :118.67   Max.   :5.1873   Max.   :36.205
# =====================================================
# 2. MATRKS KORELASI
# =====================================================
cor_mat <- cor(data_sim)
cor_mat
##            pendapatan  tanggungan      hutang
## pendapatan 1.00000000  0.04577787  0.69823156
## tanggungan 0.04577787  1.00000000 -0.04953215
## hutang     0.69823156 -0.04953215  1.00000000

Interpretasi :

Berdasarkan matriks korelasi tersebut dapat diinterpretasikan sebagai berikut. Korelasi antara pendapatan dan tanggungan sebesar 0,046 menunjukkan hubungan positif yang sangat lemah, mendekati nol, sehingga secara praktis hampir tidak terdapat hubungan linear antara kedua variabel tersebut. Artinya, perubahan jumlah tanggungan tidak berkaitan dengan perubahan pendapatan.

Korelasi antara pendapatan dan hutang sebesar 0,698 menunjukkan hubungan positif yang kuat. Hal ini mengindikasikan bahwa pendapatan yang lebih tinggi cenderung berkaitan dengan tingkat hutang yang lebih besar

# =====================================================
# 3. SCATTER PLOT + GARIS REGRESI SEDERHANA
# =====================================================
par(mfrow = c(1,2))

# Y vs X1
plot(data_sim$tanggungan, data_sim$pendapatan,
     main = "Pendapatan vs Tanggungan",
     xlab = "Tanggungan (X1)",
     ylab = "Pendapatan (Y)",
     pch = 16)
abline(lm(pendapatan ~ tanggungan, data = data_sim), lwd = 2)

# Y vs X2
plot(data_sim$hutang, data_sim$pendapatan,
     main = "Pendapatan vs Hutang",
     xlab = "Hutang (X2)",
     ylab = "Pendapatan (Y)",
     pch = 16)
abline(lm(pendapatan ~ hutang, data = data_sim), lwd = 2)

par(mfrow = c(1,1))

Interpretasi Scatter Plot

Scatter plot pendapatan dan jumlah tanggungan menunjukkan korelasi linear yang sangat lemah dengan sebaran data yang tidak berpola, sehingga tidak terlihat hubungan yang jelas antara keduanya.

Sebaliknya, scatter plot pendapatan dan hutang memperlihatkan korelasi linear positif yang kuat dengan pola data yang membentuk tren menaik, yang menunjukkan bahwa hutang yang lebih besar cenderung berkaitan dengan pendapatan yang lebih tinggi.

# =====================================================
# 4. REGRESI LINEAR BERGANDA (lm)
# =====================================================
model_ganda <- lm(pendapatan ~ tanggungan + hutang, data = data_sim)
summary(model_ganda)
## 
## Call:
## lm(formula = pendapatan ~ tanggungan + hutang, data = data_sim)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -14.9841  -5.2860  -0.9956   4.9708  16.6386 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  53.5147     4.1947  12.758  < 2e-16 ***
## tanggungan    0.9346     0.8390   1.114    0.268    
## hutang        1.5381     0.1584   9.711 5.65e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.61 on 97 degrees of freedom
## Multiple R-squared:  0.494,  Adjusted R-squared:  0.4836 
## F-statistic: 47.35 on 2 and 97 DF,  p-value: 4.48e-15
coef(model_ganda)
## (Intercept)  tanggungan      hutang 
##  53.5146789   0.9346278   1.5380981

Interpretasi Koefisien Regresi b1, b2

Koefisien b1 (tanggungan) = 0,9346

Artinya, dengan jumlah hutang tetap, setiap penambahan 1 orang tanggungan berkaitan dengan kenaikan rata-rata pendapatan sekitar 0,93 juta rupiah.

Koefisien b2 (hutang) = 1,5381

Artinya, dengan jumlah tanggungan tetap, setiap kenaikan 1 juta rupiah hutang maka rata-rata pendapatan akan naik sekitar 1,54 juta rupiah.

# =====================================================
# 5. UJI F (SIGNIFIKANSI SIMULTAN)
# H0: beta1 = beta2 = 0
# =====================================================

# Ambil statistik F langsung dari summary()
fstat <- summary(model_ganda)$fstatistic

F_hit <- fstat[1]   # nilai F
df1   <- fstat[2]   # df regresi
df2   <- fstat[3]   # df residual

# Hitung p-value
p_F <- pf(F_hit, df1, df2, lower.tail = FALSE)

cat("\nUJI F (SIMULTAN):\n")
## 
## UJI F (SIMULTAN):
cat("F hitung =", round(F_hit, 4), "\n")
## F hitung = 47.3501
cat("df1 =", df1, ", df2 =", df2, "\n")
## df1 = 2 , df2 = 97
cat("p-value =", format.pval(p_F, digits = 4), "\n")
## p-value = 4.48e-15
alpha <- 0.05
if (p_F < alpha) {
  cat("Keputusan: Tolak H0 (model signifikan secara simultan)\n")
} else {
  cat("Keputusan: Gagal tolak H0 (model tidak signifikan secara simultan)\n")
}
## Keputusan: Tolak H0 (model signifikan secara simultan)
# =====================================================
#6. UJI t (SIGNIFIKANSI PARSIAL)
# H0: betaj = 0
# =====================================================

# Ambil tabel koefisien langsung dari summary()
coef_table <- summary(model_ganda)$coefficients
coef_table
##               Estimate Std. Error   t value     Pr(>|t|)
## (Intercept) 53.5146789  4.1947456 12.757550 1.813194e-22
## tanggungan   0.9346278  0.8389559  1.114037 2.680162e-01
## hutang       1.5380981  0.1583915  9.710736 5.650213e-16
cat("\nKEPUTUSAN UJI t (alpha = 0.05):\n")
## 
## KEPUTUSAN UJI t (alpha = 0.05):
alpha <- 0.05  # pastikan alpha didefinisikan
pvals <- coef_table[, "Pr(>|t|)"]

for (nm in rownames(coef_table)) {
  cat(nm, ": p-value =", format.pval(pvals[nm], digits = 4), " -> ")
  if (pvals[nm] < alpha) {
    cat("Signifikan\n")
  } else {
    cat("Tidak signifikan\n")
  }
}
## (Intercept) : p-value = < 2.2e-16  -> Signifikan
## tanggungan : p-value = 0.268  -> Tidak signifikan
## hutang : p-value = 5.65e-16  -> Signifikan