install.packages(“queueing”)

library(queueing)

BAGIAN 1: REGRESI LINIER BERGANDA (HARGA RUMAH)

cat("\n--- BAGIAN 1: REGRESI HARGA RUMAH ---\n\n")
## 
## --- BAGIAN 1: REGRESI HARGA RUMAH ---

1.1 Buat Data Simulasi

set.seed(42)
n <- 500
data_rumah <- data.frame(
  Luas = rnorm(n, 150, 30),
  Kamar = round(rnorm(n, 3, 1)),
  Lokasi = factor(sample(c('Pinggiran', 'Pusat Kota', 'Elit'), n, replace = TRUE, prob = c(0.5, 0.3, 0.2)),
                  levels = c('Pinggiran', 'Pusat Kota', 'Elit'))
)
data_rumah$Harga <- 50 + (10 * data_rumah$Luas) + (50 * data_rumah$Kamar) +
                    ifelse(data_rumah$Lokasi == 'Pusat Kota', 200, 0) +
                    ifelse(data_rumah$Lokasi == 'Elit', 500, 0) +
                    rnorm(n, 0, 75)

1.2 Buat Model dan Tampilkan Hasil Detail

model_rumah <- lm(Harga ~ Luas + Kamar + Lokasi, data = data_rumah)
print(summary(model_rumah))
## 
## Call:
## lm(formula = Harga ~ Luas + Kamar + Lokasi, data = data_rumah)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -188.767  -49.159   -0.312   50.079  263.095 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       18.4877    20.0926    0.92    0.358    
## Luas              10.0947     0.1136   88.83   <2e-16 ***
## Kamar             54.2074     3.1130   17.41   <2e-16 ***
## LokasiPusat Kota 209.7568     7.5947   27.62   <2e-16 ***
## LokasiElit       509.8285     8.7345   58.37   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 73.95 on 495 degrees of freedom
## Multiple R-squared:  0.9597, Adjusted R-squared:  0.9594 
## F-statistic:  2948 on 4 and 495 DF,  p-value: < 2.2e-16

1.3 Tampilkan Visualisasi Hasil

plot(x = data_rumah$Harga, y = fitted(model_rumah),
     xlab = "Harga Aktual (Jutaan)", ylab = "Harga Prediksi (Jutaan)",
     main = "Aktual vs. Prediksi Harga Rumah")
abline(a = 0, b = 1, col = "darkred", lwd = 2, lty = 2)

BAGIAN 2: SISTEM ANTRIAN (POISSON)

cat("\n\n--- BAGIAN 2: ANALISIS SISTEM ANTRIAN ---\n\n")
## 
## 
## --- BAGIAN 2: ANALISIS SISTEM ANTRIAN ---

2.1 Definisikan Parameter

# Muat paket di awal
library(queueing)

# Definisikan Parameter
lambda <- 50  # Kedatangan rata-rata per jam
mu <- 60    # Pelayanan rata-rata per jam

# Modelkan dan Analisis Sistem 1 & 2 Pelayan
cat("--- a. Analisis Sistem dengan 1 Pelayan (M/M/1) ---\n")
## --- a. Analisis Sistem dengan 1 Pelayan (M/M/1) ---
print(summary(QueueingModel(NewInput.MM1(lambda = lambda, mu = mu))))
##   lambda mu c  k  m        RO        P0       Lq         Wq  X L   W Wqq Lqq
## 1     50 60 1 NA NA 0.8333333 0.1666667 4.166667 0.08333333 50 5 0.1 0.1   6
cat("\n--- b. Analisis Sistem dengan 2 Pelayan (M/M/2) ---\n")
## 
## --- b. Analisis Sistem dengan 2 Pelayan (M/M/2) ---
print(summary(QueueingModel(NewInput.MMC(lambda = lambda, mu = mu, c = 2))))
##   lambda mu c  k  m        RO        P0      Lq          Wq  X        L
## 1     50 60 2 NA NA 0.4166667 0.4117647 0.17507 0.003501401 50 1.008403
##            W        Wqq      Lqq
## 1 0.02016807 0.01428571 1.714286

2.3 Hitung Probabilitas

cat("\n--- c. Probabilitas Jumlah Pelanggan > 60 ---\n")
## 
## --- c. Probabilitas Jumlah Pelanggan > 60 ---
prob_over_60 <- ppois(q = 60, lambda = lambda, lower.tail = FALSE)
cat(sprintf("P(Pelanggan > 60) = %.4f (%.2f%%)\n", prob_over_60, prob_over_60 * 100))
## P(Pelanggan > 60) = 0.0722 (7.22%)

BAGIAN 3: REGRESI TIME SERIES

cat("\n\n--- BAGIAN 3: REGRESI TIME SERIES ---\n\n")
## 
## 
## --- BAGIAN 3: REGRESI TIME SERIES ---

3.1 Buat Data Simulasi Time Series

set.seed(0)
t <- 1:120 # 10 tahun data bulanan
data_ts <- data.frame(
  Y_Dependen = 50 + (0.5 * t) + (10 * sin(2 * pi * t / 12)) + rnorm(length(t), 0, 5),
  X1_Tren = 20 + (0.3 * t) + rnorm(length(t), 0, 3),
  X2_Musiman = 15 + (8 * sin(2 * pi * t / 12)) + rnorm(length(t), 0, 4)
)

3.2 Buat Model dan Tampilkan Hasil Detail

model_ts <- lm(Y_Dependen ~ X1_Tren + X2_Musiman, data = data_ts)
print(summary(model_ts))
## 
## Call:
## lm(formula = Y_Dependen ~ X1_Tren + X2_Musiman, data = data_ts)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -21.1413  -4.5111   0.3817   5.6317  21.3479 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.12284    3.16998   2.878  0.00476 ** 
## X1_Tren      1.48620    0.06651  22.346  < 2e-16 ***
## X2_Musiman   0.95126    0.10401   9.145 2.24e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.048 on 117 degrees of freedom
## Multiple R-squared:  0.8262, Adjusted R-squared:  0.8232 
## F-statistic: 278.1 on 2 and 117 DF,  p-value: < 2.2e-16

3.3 Tampilkan Visualisasi

Plot 1: Tampilkan semua data time series

plot(x = t, y = data_ts$Y_Dependen, type = 'l', col = "black", lwd = 2,
     main = "Plot 2: Data Time Series Asli", xlab = "Waktu (Bulan)", ylab = "Nilai")
lines(x = t, y = data_ts$X1_Tren, col = "blue", lty = 2)
lines(x = t, y = data_ts$X2_Musiman, col = "green", lty = 3)
legend("topleft", c("Y (Tren+Musiman)", "X1 (Tren)", "X2 (Musiman)"),
       col = c("black", "blue", "green"), lty = 1:3, cex = 0.8)

### Plot 2: Tampilkan hasil prediksi model

plot(x = t, y = data_ts$Y_Dependen, type = 'l', col = "black", lwd = 2,
     main = "Plot 3: Hasil Regresi Time Series", xlab = "Waktu (Bulan)", ylab = "Nilai")
lines(x = t, y = fitted(model_ts), col = "darkred", lty = 2, lwd = 2)
legend("topleft", c("Data Asli", "Prediksi Model"), col = c("black", "darkred"), lty = 1:2)