library(queueing)
cat("\n--- BAGIAN 1: REGRESI HARGA RUMAH ---\n\n")
##
## --- BAGIAN 1: REGRESI HARGA RUMAH ---
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)
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
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)
cat("\n\n--- BAGIAN 2: ANALISIS SISTEM ANTRIAN ---\n\n")
##
##
## --- BAGIAN 2: ANALISIS SISTEM ANTRIAN ---
# 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
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%)
cat("\n\n--- BAGIAN 3: REGRESI TIME SERIES ---\n\n")
##
##
## --- BAGIAN 3: REGRESI 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)
)
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
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)