library(rjags)
## Loading required package: coda
## Linked to JAGS 4.3.1
## Loaded modules: basemod,bugs
library(coda)
library(ggplot2)
Load Data
data_csv <- read.csv("C:/SKRIPSI/dataset_skripsi.csv")
head(data_csv)
## kabupaten_kota TPT rata_rata_lama_sekolah IPM kepadatan_penduduk
## 1 Nias 2.31 6.14 65.15 172.46
## 2 Mandailing Natal 7.45 8.84 72.65 77.19
## 3 Tapanuli Selatan 3.49 9.51 74.58 75.34
## 4 Tapanuli Tengah 7.81 8.87 72.77 171.13
## 5 Tapanuli Utara 1.03 10.09 76.86 83.94
## 6 Toba Samosir 1.30 10.59 77.83 94.57
## Penduduk_laki_laki PDRB Angkatan_kerja persentase_penduduk_miskin
## 1 75063 4857.80 87.981 15.10
## 2 247811 18322.32 219.010 8.86
## 3 157340 18875.45 167.625 7.01
## 4 195086 12631.77 211.032 11.50
## 5 161782 10489.70 187.311 8.54
## 6 106907 9656.27 123.572 8.04
## pengeluaran_perkapita TPAK Harapan_Lama_Sekolah laju_pertumbuhan_penduduk
## 1 7.301 81.68 13.30 1.59
## 2 10.251 63.07 13.86 1.79
## 3 11.829 75.64 13.58 1.35
## 4 10.690 74.52 13.49 2.11
## 5 12.115 81.20 13.73 1.19
## 6 12.676 80.87 13.59 1.34
Statistik Deskriptif variabel Respon
c(summary(data_csv$TPT), SD = sd(data_csv$TPT))
## Min. 1st Qu. Median Mean 3rd Qu. Max. SD
## 0.450000 2.570000 4.840000 4.553030 6.240000 8.670000 2.551358
Uji Distribusi Normal
# Uji Kolmogorov-Smirnov untuk normalitas
ks_result <- ks.test(data_csv$TPT, "pnorm", mean = mean(data_csv$TPT), sd = sd(data_csv$TPT))
## Warning in ks.test.default(data_csv$TPT, "pnorm", mean = mean(data_csv$TPT), :
## ties should not be present for the one-sample Kolmogorov-Smirnov test
# Tampilkan hasil uji K-S
print(ks_result)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: data_csv$TPT
## D = 0.11097, p-value = 0.8111
## alternative hypothesis: two-sided
# Hitung mean dan standar deviasi
mean_tpt <- mean(data_csv$TPT)
sd_tpt <- sd(data_csv$TPT)
# Plot histogram
hist(data_csv$TPT, breaks = 10, probability = TRUE,
main = "Distribusi TPT dan Kurva Normal",
xlab = "TPT (%)", col = "#AED6F1", border = "white")
# Tambah kurva normal
curve(dnorm(x, mean = mean_tpt, sd = sd_tpt),
col = "#E74C3C", lwd = 2, add = TRUE)
# Garis vertikal mean dan ±1 SD
abline(v = mean_tpt, col = "#2E86C1", lwd = 2, lty = 2)
abline(v = c(mean_tpt - sd_tpt, mean_tpt + sd_tpt),
col = "#27AE60", lwd = 2, lty = 3)
# Tentukan posisi teks pojok kanan atas
text_x <- max(data_csv$TPT)*0.95
text_y <- max(density(data_csv$TPT)$y) * 0.95
# Tambah informasi Mean & SD
text(text_x, text_y,
labels = paste("\n",
"μ =", round(mean_tpt, 2),
"\nσ =", round(sd_tpt, 2)),
col = "black", cex = 0.9, adj = c(1, 1))
# Legenda
legend("topright", legend = c("Kurva Normal", "μ (Mean)", "±1SD"),
col = c("#E74C3C", "#2E86C1", "#27AE60"), lty = c(1, 2, 3), bty = "n", cex = 0.9)

Korelasi
# Daftar nama variabel prediktor
var_names <- c(
"rata_rata_lama_sekolah", "IPM", "kepadatan_penduduk",
"PDRB", "persentase_penduduk_miskin",
"pengeluaran_perkapita", "TPAK",
"Harapan_Lama_Sekolah", "laju_pertumbuhan_penduduk"
)
# Korelasi langsung dari data asli
results_raw <- data.frame()
for (v in var_names) {
test <- cor.test(data_csv$TPT, data_csv[[v]])
results_raw <- rbind(results_raw, data.frame(
Variable = v,
Correlation = round(test$estimate, 3),
P_Value = round(test$p.value, 4),
Significant = ifelse(test$p.value < 0.05, "Yes", "No")
))
}
print(results_raw)
## Variable Correlation P_Value Significant
## cor rata_rata_lama_sekolah 0.370 0.0340 Yes
## cor1 IPM 0.478 0.0049 Yes
## cor2 kepadatan_penduduk 0.484 0.0043 Yes
## cor3 PDRB 0.468 0.0060 Yes
## cor4 persentase_penduduk_miskin -0.369 0.0346 Yes
## cor5 pengeluaran_perkapita 0.550 0.0009 Yes
## cor6 TPAK -0.794 0.0000 Yes
## cor7 Harapan_Lama_Sekolah 0.304 0.0856 No
## cor8 laju_pertumbuhan_penduduk -0.272 0.1260 No
Standarisasi Prediktor
# Standarisasi variabel
scaled_vars <- as.data.frame(scale(data_csv[, var_names[1:7]]))
colnames(scaled_vars) <- paste0("x", 1:7)
# Gabungkan dengan TPT (y)
data <- cbind(y = data_csv$TPT, scaled_vars)
# Tampilkan hanya y dan x1–x7
print(data[, c("y", paste0("x", 1:7))])
## y x1 x2 x3 x4 x5 x6
## 1 2.31 -2.41949124 -2.10515978 -0.4444385 -0.48488983 1.2344080 -1.71864012
## 2 7.45 -0.40738867 -0.32362711 -0.4873176 -0.24165819 -0.2541683 -0.31419942
## 3 3.49 0.09191086 0.13482063 -0.4881502 -0.23166610 -0.6954931 0.43705733
## 4 7.81 -0.38503197 -0.29512258 -0.4450371 -0.34445590 0.3756140 -0.10519960
## 5 1.03 0.52414030 0.67640657 -0.4842795 -0.38315161 -0.3305056 0.57321666
## 6 1.30 0.89675189 0.90681812 -0.4794952 -0.39820722 -0.4497826 0.84029843
## 7 5.99 0.07700639 0.16332516 -0.4375523 0.25404044 -0.4617102 0.36136035
## 8 6.12 -0.41484090 -0.10034168 -0.4240769 0.35374674 -0.4092284 0.42087055
## 9 5.35 0.24840773 0.27496787 -0.4191755 0.37103604 -0.4903367 0.39754256
## 10 1.23 0.36764343 0.27734325 -0.4506496 -0.36217044 -0.5857583 0.02762716
## 11 2.63 0.47942691 0.68115732 -0.4350813 -0.09557582 -0.4640958 0.88933484
## 12 8.62 0.66573270 0.74766787 -0.1648715 1.94010510 -1.5471305 0.94217989
## 13 6.33 -0.48936322 0.07543621 -0.4429892 0.44243019 -0.1659034 0.34326925
## 14 3.48 -2.16611536 -2.14554118 -0.4527334 -0.41774033 1.5421426 -1.71959228
## 15 0.84 0.46452245 -0.36163314 -0.4824252 -0.43435853 -0.2947225 -1.15924425
## 16 0.45 0.16643318 -0.40676530 -0.5035339 -0.54446753 -0.5690595 -1.02213275
## 17 1.03 0.06210193 -0.25711655 -0.4872545 -0.47047515 0.4137826 -0.83455660
## 18 4.97 -0.39993644 -0.14547384 -0.3623530 0.10539722 -0.5929149 0.37326239
## 19 5.88 -0.66076455 -0.34500550 -0.3004220 0.21705129 0.3469875 0.01048822
## 20 4.42 0.12171979 -0.13359695 -0.4900495 -0.28681888 -0.2708671 -0.14090572
## 21 5.75 0.03229300 -0.44002057 -0.4897750 -0.28131440 -0.4855656 -0.72172526
## 22 3.43 -0.34031858 0.05168244 -0.4728700 0.10630262 -0.4450115 0.49466320
## 23 4.84 -0.38503197 0.34147842 -0.4721499 0.02838244 -0.2016865 0.72270628
## 24 2.57 -1.89038279 -2.03627385 -0.4643725 -0.49175312 2.8303337 -1.96286997
## 25 0.80 -1.72643369 -2.21680249 -0.4277720 -0.53043601 3.0736587 -2.15615910
## 26 6.79 0.78496841 0.72628948 3.0777540 -0.44942895 0.3565297 0.65415053
## 27 4.47 0.21859880 0.33435229 0.8688713 -0.37014887 0.5449872 0.40087513
## 28 8.62 1.63452283 1.53154225 1.1204343 -0.27949042 -0.6406257 0.98693156
## 29 6.24 1.09796214 0.98758094 1.5574436 -0.43845486 -0.1038794 1.17784028
## 30 8.67 1.66433176 2.04224828 3.4846215 4.90657407 -0.4593247 2.26759104
## 31 6.10 1.34388579 0.97332868 0.9523026 -0.31143718 -1.2250828 0.31232395
## 32 7.57 1.29172017 0.97095330 0.1562243 -0.42941062 -0.7336617 0.30518273
## 33 3.67 -0.54898107 -0.58491856 -0.2088263 -0.44755619 1.1580708 -1.08354727
## x7
## 1 1.00495590
## 2 -1.49524084
## 3 0.19350032
## 4 0.04303174
## 5 0.94046936
## 6 0.89613487
## 7 -1.25744674
## 8 -0.62735954
## 9 -0.27537054
## 10 1.42546185
## 11 1.29783225
## 12 -0.88396222
## 13 0.22440012
## 14 0.68386669
## 15 1.67534718
## 16 1.57861737
## 17 1.70490351
## 18 -0.87993181
## 19 -0.16923645
## 20 -0.10609338
## 21 0.52936769
## 22 -0.13430624
## 23 -1.27894225
## 24 0.94987365
## 25 0.92434773
## 26 -0.40568708
## 27 -0.59242934
## 28 -0.43524341
## 29 -1.14190836
## 30 -1.28028572
## 31 -1.53285799
## 32 -0.71199812
## 33 -0.86381018
Model Hierarchical Bayesian
model_file <- "model_jags.txt"
writeLines(c(
"model {",
" for (i in 1:N) {",
" y[i] ~ dnorm(theta[i], sigma_y)",
" theta[i] <- beta0 + beta1 * x1[i] + beta2 * x2[i] + beta3 * x3[i] +",
" beta4 * x4[i] + beta5 * x5[i] + beta6 * x6[i] + beta7 * x7[i] + v[i]",
" v[i] ~ dnorm(0, sigma_v)",
" }",
" beta0 ~ dnorm(0, 1)",
" beta1 ~ dnorm(0, 1)",
" beta2 ~ dnorm(0, 1)",
" beta3 ~ dnorm(0, 1)",
" beta4 ~ dnorm(0, 1)",
" beta5 ~ dnorm(0, 1)",
" beta6 ~ dnorm(0, 1)",
" beta7 ~ dnorm(0, 1)",
" tau_y ~ dgamma(2, 0.1)",
" tau_v ~ dgamma(2, 0.1)",
" sigma_y <- 1 / tau_y",
" sigma_v <- 1 / tau_v",
"}"
), con = model_file)
inits <- function(chain) {
list(
beta0 = 0, beta1 = 0, beta2 = 0, beta3 = 0,
beta4 = 0, beta5 = 0, beta6 = 0, beta7 = 0,
tau_y = 1, tau_v = 1, v = rep(0, nrow(data)),
.RNG.name = "base::Wichmann-Hill",
.RNG.seed = 1234 + chain
)
}
data_jags <- list(N = nrow(data), y = data$y,
x1 = data$x1, x2 = data$x2, x3 = data$x3, x4 = data$x4,
x5 = data$x5, x6 = data$x6, x7 = data$x7)
model <- jags.model(model_file, data = data_jags, inits = inits, n.chains = 3)
## Compiling model graph
## Resolving undeclared variables
## Allocating nodes
## Graph information:
## Observed stochastic nodes: 33
## Unobserved stochastic nodes: 43
## Total graph size: 577
##
## Initializing model
update(model, 5000)
samples <- coda.samples(model, variable.names = c("beta0", "beta1", "beta2", "beta3",
"beta4", "beta5", "beta6", "beta7",
"tau_v", "tau_y", "v"),
n.iter = 50000, thin = 25)
# Ringkasan hasil
summary(samples)
##
## Iterations = 6025:56000
## Thinning interval = 25
## Number of chains = 3
## Sample size per chain = 2000
##
## 1. Empirical mean and standard deviation for each variable,
## plus standard error of the mean:
##
## Mean SD Naive SE Time-series SE
## beta0 4.063897 0.3661 0.004726 0.004828
## beta1 -0.113621 0.6672 0.008613 0.008853
## beta2 -0.010618 0.8085 0.010437 0.010968
## beta3 0.400618 0.4753 0.006136 0.006137
## beta4 0.314567 0.4020 0.005190 0.005054
## beta5 -0.345106 0.5416 0.006993 0.006993
## beta6 0.099047 0.6530 0.008430 0.008971
## beta7 -1.440665 0.4017 0.005186 0.005186
## tau_v 2.026930 1.2460 0.016085 0.018137
## tau_y 2.034944 1.2307 0.015889 0.017055
## v[1] 0.169359 1.0415 0.013446 0.013446
## v[2] 0.694685 1.0612 0.013700 0.013893
## v[3] -0.127381 0.9393 0.012126 0.012258
## v[4] 2.083585 1.3291 0.017158 0.018743
## v[5] -0.747950 1.0293 0.013288 0.013288
## v[6] -0.631289 1.0104 0.013044 0.013491
## v[7] 0.008891 0.9647 0.012455 0.011950
## v[8] 0.492746 0.9804 0.012657 0.012661
## v[9] 0.377950 0.9497 0.012261 0.012261
## v[10] -0.311050 1.0086 0.013022 0.013023
## v[11] 0.227660 1.0176 0.013137 0.013138
## v[12] 1.117287 1.1469 0.014806 0.015297
## v[13] 1.252947 1.1066 0.014286 0.014511
## v[14] 0.577580 1.0628 0.013721 0.013722
## v[15] -0.204232 1.0505 0.013561 0.013716
## v[16] -0.516411 1.0439 0.013477 0.013473
## v[17] -0.008489 0.9923 0.012811 0.012811
## v[18] -0.275783 0.9726 0.012556 0.012468
## v[19] 0.863660 1.0328 0.013333 0.012253
## v[20] 0.202018 0.9254 0.011947 0.012017
## v[21] 1.338617 1.1390 0.014705 0.015299
## v[22] -0.449672 0.9644 0.012451 0.012160
## v[23] -0.534935 1.0278 0.013268 0.013054
## v[24] 0.583744 1.0930 0.014111 0.014479
## v[25] -0.296877 1.0907 0.014081 0.014533
## v[26] 0.601673 1.1847 0.015294 0.015982
## v[27] -0.247343 0.9743 0.012578 0.013477
## v[28] 1.710141 1.2602 0.016269 0.017127
## v[29] 0.022524 1.0394 0.013419 0.013356
## v[30] -0.176189 1.3264 0.017124 0.016392
## v[31] -0.380716 1.0687 0.013797 0.014108
## v[32] 1.213050 1.1291 0.014577 0.015114
## v[33] -0.456099 1.0148 0.013101 0.012453
##
## 2. Quantiles for each variable:
##
## 2.5% 25% 50% 75% 97.5%
## beta0 3.2748 3.84132 4.085776 4.30938 4.7226
## beta1 -1.4104 -0.56648 -0.108103 0.33818 1.2035
## beta2 -1.6006 -0.54792 -0.009455 0.54487 1.5730
## beta3 -0.5253 0.08520 0.403562 0.70988 1.3324
## beta4 -0.4805 0.05375 0.311711 0.57877 1.1091
## beta5 -1.3930 -0.71252 -0.339268 0.01039 0.7305
## beta6 -1.1363 -0.33849 0.086141 0.53515 1.4110
## beta7 -2.2222 -1.70206 -1.447441 -1.18430 -0.6155
## tau_v 0.3198 1.14084 1.812053 2.64572 5.0750
## tau_y 0.3526 1.15261 1.838655 2.62391 4.9259
## v[1] -1.8508 -0.49234 0.132584 0.81116 2.3704
## v[2] -1.3124 -0.01325 0.654362 1.37858 2.9000
## v[3] -1.9380 -0.72807 -0.129844 0.46361 1.7437
## v[4] -0.2683 1.07077 2.047177 3.03767 4.6192
## v[5] -2.8104 -1.41301 -0.718819 -0.06236 1.2443
## v[6] -2.7150 -1.27682 -0.606806 0.03164 1.3181
## v[7] -1.8526 -0.62072 -0.005681 0.61958 1.9851
## v[8] -1.3816 -0.16052 0.468723 1.11731 2.4675
## v[9] -1.4501 -0.22906 0.351104 0.95827 2.2928
## v[10] -2.3189 -0.96852 -0.280216 0.33466 1.6815
## v[11] -1.7718 -0.43120 0.224968 0.87624 2.3183
## v[12] -0.9092 0.31318 1.050714 1.84841 3.5642
## v[13] -0.7409 0.47867 1.210956 1.99273 3.4884
## v[14] -1.4653 -0.11191 0.523557 1.24386 2.7718
## v[15] -2.2568 -0.90077 -0.206681 0.45815 1.9081
## v[16] -2.6897 -1.16330 -0.493626 0.11863 1.5696
## v[17] -1.9681 -0.64304 -0.011216 0.60127 1.9955
## v[18] -2.2047 -0.89879 -0.283970 0.34809 1.6889
## v[19] -1.0862 0.16950 0.822224 1.53226 2.9618
## v[20] -1.5615 -0.39726 0.181296 0.76721 2.0885
## v[21] -0.7103 0.51926 1.296649 2.11609 3.6085
## v[22] -2.3472 -1.06165 -0.445805 0.16860 1.4580
## v[23] -2.5356 -1.20310 -0.525298 0.14478 1.5373
## v[24] -1.5046 -0.13747 0.537959 1.28238 2.8725
## v[25] -2.5192 -0.98545 -0.292630 0.39071 1.8987
## v[26] -1.5866 -0.18386 0.538224 1.31368 3.1347
## v[27] -2.1258 -0.89640 -0.246187 0.37523 1.6951
## v[28] -0.5563 0.79650 1.660105 2.55508 4.2678
## v[29] -2.0175 -0.64459 0.011430 0.67808 2.1658
## v[30] -2.8932 -0.98650 -0.150367 0.62267 2.4907
## v[31] -2.5053 -1.06168 -0.368702 0.30320 1.7854
## v[32] -0.8681 0.42215 1.166030 1.96084 3.5528
## v[33] -2.4801 -1.10709 -0.449124 0.19077 1.5552
# Trace plot dan ACF
par(mfrow = c(4, 2), mar = c(2, 2, 2, 2))
plot(samples, ask = FALSE, col = "red")











autocorr.plot(samples, col = "red")















# Ergodic Mean (Cumulative Mean)
samples_matrix <- as.matrix(samples)
# Fungsi plot cumulative mean
plot_parameter_convergence <- function(param_name, samples_matrix) {
param_samples <- samples_matrix[, param_name]
plot(cumsum(param_samples) / seq_along(param_samples),
type = "l",
col = "red",
main = paste("Ergodic Mean for", param_name),
ylab = "Cumulative Mean",
xlab = "Iteration")
}
# Plot untuk beta dan precision
params <- colnames(samples_matrix)
par(mfrow = c(3, 2))
for (param in params) {
plot_parameter_convergence(param, samples_matrix)
}







# Plot ergodic mean untuk v[i]
num_v <- sum(grepl("^v\\[", colnames(samples_matrix)))
for (i in 1:num_v) {
param_name <- paste0("v[", i, "]")
plot_parameter_convergence(param_name, samples_matrix)
}






# Ringkasan hasil MCMC singkat
stat <- summary(samples)$statistics
quant <- summary(samples)$quantiles
table_result <- data.frame(
Parameter = rownames(stat),
Mean = round(stat[, "Mean"], 4),
SD = round(stat[, "SD"], 4),
MC_Error = round(stat[, "Time-series SE"], 4),
CI_2.5 = round(quant[, "2.5%"], 4),
CI_97.5 = round(quant[, "97.5%"], 4),
ESS = round(effectiveSize(samples), 2),
Rhat = if (inherits(samples, "mcmc.list"))
round(gelman.diag(samples, autoburnin = FALSE)$psrf[, "Point est."], 3) else NA
)
print(table_result)
## Parameter Mean SD MC_Error CI_2.5 CI_97.5 ESS Rhat
## beta0 beta0 4.0639 0.3661 0.0048 3.2748 4.7226 5785.98 1.001
## beta1 beta1 -0.1136 0.6672 0.0089 -1.4104 1.2035 5682.09 1.000
## beta2 beta2 -0.0106 0.8085 0.0110 -1.6006 1.5730 5499.37 1.001
## beta3 beta3 0.4006 0.4753 0.0061 -0.5253 1.3324 6000.00 1.000
## beta4 beta4 0.3146 0.4020 0.0051 -0.4805 1.1091 6349.28 1.000
## beta5 beta5 -0.3451 0.5416 0.0070 -1.3930 0.7305 6000.00 1.000
## beta6 beta6 0.0990 0.6530 0.0090 -1.1363 1.4110 5450.44 1.000
## beta7 beta7 -1.4407 0.4017 0.0052 -2.2222 -0.6155 6000.00 1.000
## tau_v tau_v 2.0269 1.2460 0.0181 0.3198 5.0750 4727.87 1.001
## tau_y tau_y 2.0349 1.2307 0.0171 0.3526 4.9259 5212.24 1.000
## v[1] v[1] 0.1694 1.0415 0.0134 -1.8508 2.3704 6000.00 1.000
## v[2] v[2] 0.6947 1.0612 0.0139 -1.3124 2.9000 5845.53 1.000
## v[3] v[3] -0.1274 0.9393 0.0123 -1.9380 1.7437 5875.00 1.000
## v[4] v[4] 2.0836 1.3291 0.0187 -0.2683 4.6192 5038.94 1.000
## v[5] v[5] -0.7480 1.0293 0.0133 -2.8104 1.2443 6000.00 1.001
## v[6] v[6] -0.6313 1.0104 0.0135 -2.7150 1.3181 5609.58 1.001
## v[7] v[7] 0.0089 0.9647 0.0120 -1.8526 1.9851 6530.39 1.000
## v[8] v[8] 0.4927 0.9804 0.0127 -1.3816 2.4675 6012.21 1.000
## v[9] v[9] 0.3780 0.9497 0.0123 -1.4501 2.2928 6000.00 1.000
## v[10] v[10] -0.3110 1.0086 0.0130 -2.3189 1.6815 6000.00 1.000
## v[11] v[11] 0.2277 1.0176 0.0131 -1.7718 2.3183 6000.00 1.000
## v[12] v[12] 1.1173 1.1469 0.0153 -0.9092 3.5642 5629.45 1.000
## v[13] v[13] 1.2529 1.1066 0.0145 -0.7409 3.4884 5830.40 1.000
## v[14] v[14] 0.5776 1.0628 0.0137 -1.4653 2.7718 6000.00 1.000
## v[15] v[15] -0.2042 1.0505 0.0137 -2.2568 1.9081 5869.97 1.001
## v[16] v[16] -0.5164 1.0439 0.0135 -2.6897 1.5696 6000.00 1.001
## v[17] v[17] -0.0085 0.9923 0.0128 -1.9681 1.9955 6000.00 1.001
## v[18] v[18] -0.2758 0.9726 0.0125 -2.2047 1.6889 6087.88 1.000
## v[19] v[19] 0.8637 1.0328 0.0123 -1.0862 2.9618 7507.47 1.000
## v[20] v[20] 0.2020 0.9254 0.0120 -1.5615 2.0885 5935.49 1.000
## v[21] v[21] 1.3386 1.1390 0.0153 -0.7103 3.6085 5586.20 1.000
## v[22] v[22] -0.4497 0.9644 0.0122 -2.3472 1.4580 6323.87 1.000
## v[23] v[23] -0.5349 1.0278 0.0131 -2.5356 1.5373 6215.71 1.000
## v[24] v[24] 0.5837 1.0930 0.0145 -1.5046 2.8725 5718.88 1.000
## v[25] v[25] -0.2969 1.0907 0.0145 -2.5192 1.8987 5650.54 1.000
## v[26] v[26] 0.6017 1.1847 0.0160 -1.5866 3.1347 5538.58 1.000
## v[27] v[27] -0.2473 0.9743 0.0135 -2.1258 1.6951 5287.68 1.000
## v[28] v[28] 1.7101 1.2602 0.0171 -0.5563 4.2678 5420.31 1.000
## v[29] v[29] 0.0225 1.0394 0.0134 -2.0175 2.1658 6058.21 1.000
## v[30] v[30] -0.1762 1.3264 0.0164 -2.8932 2.4907 6582.27 1.000
## v[31] v[31] -0.3807 1.0687 0.0141 -2.5053 1.7854 5747.29 1.000
## v[32] v[32] 1.2131 1.1291 0.0151 -0.8681 3.5528 5604.28 1.001
## v[33] v[33] -0.4561 1.0148 0.0125 -2.4801 1.5552 6671.20 1.000
Ringkasan dan Estimasi
# Tambahkan ke dalam data
data$kabupaten <- data_csv$kabupaten_kota
# Hitung ulang theta_hat
summary_samples <- summary(samples)
beta_means <- summary_samples$statistics[, "Mean"]
v_i <- beta_means[grep("^v\\[", names(beta_means))]
beta_values <- beta_means[paste0("beta", 0:7)]
data$theta_hat <- beta_values["beta0"] +
beta_values["beta7"] * data$x7 +
v_i
# Tampilkan hasil
print(data[, c("kabupaten", "theta_hat")])
## kabupaten theta_hat
## 1 Nias 2.785451
## 2 Mandailing Natal 6.912722
## 3 Tapanuli Selatan 3.657747
## 4 Tapanuli Tengah 6.085487
## 5 Tapanuli Utara 1.961046
## 6 Toba Samosir 2.141578
## 7 Labuhan Batu 5.884347
## 8 Asahan 5.460457
## 9 Simalungun 4.838563
## 10 Dairi 1.699234
## 11 Karo 2.421815
## 12 Deli Serdang 6.454677
## 13 Langkat 4.993559
## 14 Nias Selatan 3.656254
## 15 Humbang Hasundutan 1.446051
## 16 Pakpak Bharat 1.273228
## 17 Samosir 1.599213
## 18 Serdang Bedagai 5.055800
## 19 Batu Bara 5.171370
## 20 Padang Lawas Utara 4.418759
## 21 Padang Lawas 4.639872
## 22 Labuhan Batu Selatan 3.807715
## 23 Labuhan Batu Utara 5.371489
## 24 Nias Utara 3.279192
## 25 Nias Barat 2.435345
## 26 Kota Sibolga 5.250029
## 27 Kota Tanjung Balai 4.670045
## 28 Kota Pematang Siantar 6.401078
## 29 Kota Tebing Tinggi 5.731528
## 30 Kota Medan 5.732170
## 31 Kota Binjai 5.891515
## 32 Kota Padangsidimpuan 6.302698
## 33 Kota Gunungsitoli 4.852258
Mean Squared Error (MSE)
MSE <- mean((data$y - data$theta_hat)^2)
print(paste("MSE:", round(MSE, 4)))
## [1] "MSE: 1.1683"