Link Akses Dataset : https://dibi.bnpb.go.id/superset/dashboard/2/
rm(list = ls(all = TRUE))
graphics.off()
shell("cls")
# Membaca dataset bencana BNPB
data_mentah <- read.csv("D:/Data Science/Semester 4/Multivariate Analysis/5 - Structural Equation Modeling/Reference & Dataset/Data Banjir Okt-Des 2025.csv",
header = TRUE, check.names = TRUE)
head(data_mentah)
## id Tanggal...Waktu.Kejadian Minggu Bulan
## 1 13f98296-861f-42a4-b813-868239122ace 2025-12-30 19:50:00.396 1 12
## 2 c73d8698-54ee-45b2-9dc7-b81c4bc2847b 2025-12-30 17:30:00.126 1 12
## 3 41563ee5-432c-4cf5-8f33-f9f32ca0efa2 2025-12-30 17:00:00.956 1 12
## 4 354bfcda-30c6-4b09-babe-78ad9547e2ed 2025-12-30 17:00:00.947 1 12
## 5 046dd912-31b0-484b-a35e-1e8fc82876a4 2025-12-30 17:00:00.499 1 12
## 6 c12a02e5-406a-4657-8fee-ae28d28a536c 2025-12-30 17:00:00.257 1 12
## Tahun Kode.Provinsi Provinsi Kode.Kabupaten Kabupaten
## 1 2025 36 Banten 36.72 Kota Cilegon
## 2 2025 32 Jawa Barat 32.08 Kuningan
## 3 2025 17 Bengkulu 17.02 Rejang Lebong
## 4 2025 32 Jawa Barat 32.74 Kota Cirebon
## 5 2025 33 Jawa Tengah 33.76 Kota Tegal
## 6 2025 18 Lampung 18.09 Pesawaran
## Kode.Jenis.Kejadian Nama.Kejadian Jenis.Bencana is_bencana Jumlah.Kejadian
## 1 1010 Banjir Banjir True 1
## 2 1010 Banjir Banjir True 1
## 3 1010 Banjir Banjir True 1
## 4 1010 Banjir Banjir True 1
## 5 1010 Banjir Banjir True 1
## 6 1010 Banjir Banjir True 1
## Meninggal Hilang Luka...Sakit menderita_mengungsi Rumah.Rusak.Berat
## 1 0 0 0 370 0
## 2 0 0 0 60 0
## 3 0 0 0 401 0
## 4 0 0 0 2180 0
## 5 0 0 0 1491 0
## 6 0 0 0 250 0
## Rumah.Rusak.Sedang Rumah.Rusak.Ringan Rumah.Terendam Satuan.Pendidikan.Rusak
## 1 0 0 74 0
## 2 0 0 11 0
## 3 0 0 81 0
## 4 0 0 701 0
## 5 0 0 386 0
## 6 0 0 50 0
## Rumah.Ibadat.Rusak Fasilitas.Pelayanan.Kesehatan.Rusak Kantor.Rusak
## 1 0 0 0
## 2 0 0 0
## 3 0 0 0
## 4 0 0 0
## 5 0 0 0
## 6 0 0 0
## Jembatan.Rusak
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
# Mengambil hanya kolom-kolom yang menjadi indikator sesuai kerangka SEM
fitur_sem <- c(
# X1 (Formatif)
"Jumlah.Kejadian", "Rumah.Terendam",
# Y1 (Formatif)
"Meninggal", "Hilang", "Luka...Sakit", "menderita_mengungsi",
# Y2 (Reflektif)
"Rumah.Rusak.Berat", "Rumah.Rusak.Sedang", "Rumah.Rusak.Ringan",
# Y3 (Formatif)
"Satuan.Pendidikan.Rusak", "Rumah.Ibadat.Rusak", "Fasilitas.Pelayanan.Kesehatan.Rusak", "Kantor.Rusak", "Jembatan.Rusak"
)
data <- data_mentah[, fitur_sem]
head(data)
## Jumlah.Kejadian Rumah.Terendam Meninggal Hilang Luka...Sakit
## 1 1 74 0 0 0
## 2 1 11 0 0 0
## 3 1 81 0 0 0
## 4 1 701 0 0 0
## 5 1 386 0 0 0
## 6 1 50 0 0 0
## menderita_mengungsi Rumah.Rusak.Berat Rumah.Rusak.Sedang Rumah.Rusak.Ringan
## 1 370 0 0 0
## 2 60 0 0 0
## 3 401 0 0 0
## 4 2180 0 0 0
## 5 1491 0 0 0
## 6 250 0 0 0
## Satuan.Pendidikan.Rusak Rumah.Ibadat.Rusak
## 1 0 0
## 2 0 0
## 3 0 0
## 4 0 0
## 5 0 0
## 6 0 0
## Fasilitas.Pelayanan.Kesehatan.Rusak Kantor.Rusak Jembatan.Rusak
## 1 0 0 0
## 2 0 0 0
## 3 0 0 0
## 4 0 0 0
## 5 0 0 0
## 6 0 0 0
# Cek jumlah baris dan kolom
cat("Jumlah baris:", nrow(data), "\nJumlah kolom:", ncol(data))
## Jumlah baris: 393
## Jumlah kolom: 14
# Statistik Deskriptif
summary(data)
## Jumlah.Kejadian Rumah.Terendam Meninggal Hilang
## Min. :0.5000 Min. : 0 Min. : 0.00 Min. : 0.0000
## 1st Qu.:1.0000 1st Qu.: 12 1st Qu.: 0.00 1st Qu.: 0.0000
## Median :1.0000 Median : 80 Median : 0.00 Median : 0.0000
## Mean :0.9885 Mean : 1072 Mean : 3.14 Mean : 0.3995
## 3rd Qu.:1.0000 3rd Qu.: 457 3rd Qu.: 0.00 3rd Qu.: 0.0000
## Max. :1.0000 Max. :65094 Max. :247.00 Max. :36.0000
## Luka...Sakit menderita_mengungsi Rumah.Rusak.Berat Rumah.Rusak.Sedang
## Min. : 0.00 Min. : 0 Min. : 0.0 Min. : 0.0
## 1st Qu.: 0.00 1st Qu.: 131 1st Qu.: 0.0 1st Qu.: 0.0
## Median : 0.00 Median : 580 Median : 0.0 Median : 0.0
## Mean : 12.58 Mean : 12269 Mean : 149.2 Mean : 170.5
## 3rd Qu.: 0.00 3rd Qu.: 3204 3rd Qu.: 0.0 3rd Qu.: 0.0
## Max. :1823.00 Max. :455892 Max. :18267.0 Max. :26390.0
## Rumah.Rusak.Ringan Satuan.Pendidikan.Rusak Rumah.Ibadat.Rusak
## Min. : 0 Min. : 0.000 Min. : 0.000
## 1st Qu.: 0 1st Qu.: 0.000 1st Qu.: 0.000
## Median : 0 Median : 0.000 Median : 0.000
## Mean : 449 Mean : 8.204 Mean : 2.074
## 3rd Qu.: 0 3rd Qu.: 0.000 3rd Qu.: 0.000
## Max. :62888 Max. :728.000 Max. :285.000
## Fasilitas.Pelayanan.Kesehatan.Rusak Kantor.Rusak Jembatan.Rusak
## Min. : 0.0000 Min. : 0.0000 Min. : 0.000
## 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000
## Median : 0.0000 Median : 0.0000 Median : 0.000
## Mean : 0.5089 Mean : 0.7379 Mean : 1.959
## 3rd Qu.: 0.0000 3rd Qu.: 0.0000 3rd Qu.: 0.000
## Max. :29.0000 Max. :102.0000 Max. :144.000
Hasil statistik deskriptif pada 14 indikator banjir menunjukkan bahwa
variabilitas data sangat tinggi dengan tingkat kecondongan
(skewness) yang kuat ke arah kanan. Sebagai contoh, pada
indikator dampak pemukiman, variabel Rumah Terendam memiliki nilai
median sebesar 80 unit, namun nilai rata-ratanya melonjak hingga 1072
unit dengan nilai maksimum mencapai 65.094 unit. Fenomena serupa terjadi
pada sektor korban manusia, di mana indikator ‘menderita_mengungsi’
memiliki nilai maksimum ekstrem sebesar 455.892 jiwa, jauh melampaui
nilai kuartil ketiganya (Q3 = 3.204 jiwa). Hal ini mengindikasikan
adanya beberapa kejadian banjir dengan skala kerusakan besar di antara
mayoritas kejadian banjir skala kecil hingga menengah. Maka dari itu,
kami menggunakan metode melakukan Transformasi Logaritma
Natural untuk menangani skew data, yang dirumuskan sebagai
log(x + 1) dengan +1 digunakan untuk
menghindari error jika ada data bernilai 0. Kemudian setelah itu baru
dilakukan normalisasi Z-Score dari data hasil log
sebelumnya agar skala data seragam.
# Cek tipe data
str(data)
## 'data.frame': 393 obs. of 14 variables:
## $ Jumlah.Kejadian : num 1 1 1 1 1 1 1 1 1 1 ...
## $ Rumah.Terendam : int 74 11 81 701 386 50 38 1351 77 210 ...
## $ Meninggal : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hilang : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Luka...Sakit : int 0 0 0 0 0 0 0 0 0 0 ...
## $ menderita_mengungsi : int 370 60 401 2180 1491 250 144 5277 244 1059 ...
## $ Rumah.Rusak.Berat : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Rumah.Rusak.Sedang : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Rumah.Rusak.Ringan : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Satuan.Pendidikan.Rusak : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Rumah.Ibadat.Rusak : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fasilitas.Pelayanan.Kesehatan.Rusak: int 0 0 0 0 0 0 0 0 0 0 ...
## $ Kantor.Rusak : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Jembatan.Rusak : int 0 0 0 0 0 0 0 0 0 0 ...
# Konversi Seluruh Indikator ke Numerik
for (col in colnames(data)) {
data[[col]] <- as.numeric(as.character(data[[col]]))
}
# Cek Missing Value
print(paste("Total Missing Value:", sum(is.na(data))))
## [1] "Total Missing Value: 0"
data[is.na(data)] <- 0
# Cek Data Duplikat
duplikat <- data[duplicated(data), ]
print(paste("Jumlah data duplikat:", nrow(duplikat)))
## [1] "Jumlah data duplikat: 46"
# Hapus data duplikat
data_bersih <- data[!duplicated(data), ]
cat("Baris sebelum:", nrow(data), "\n")
## Baris sebelum: 393
cat("Baris sesudah:", nrow(data_bersih), "\n")
## Baris sesudah: 347
# Penanganan Data Skew: Log Transform & Z-Score
data_z <- as.data.frame(lapply(data, function(x) {
if (is.numeric(x)) {
x_log <- log(x + 1)
if (sd(x_log) == 0) return(x_log)
(x_log - mean(x_log)) / sd(x_log)
} else {
x
}
}))
head(data_z)
## Jumlah.Kejadian Rumah.Terendam Meninggal Hilang Luka...Sakit
## 1 0.1528982 0.05558120 -0.2959682 -0.1884124 -0.1936168
## 2 0.1528982 -0.63985219 -0.2959682 -0.1884124 -0.1936168
## 3 0.1528982 0.08944289 -0.2959682 -0.1884124 -0.1936168
## 4 0.1528982 0.90427402 -0.2959682 -0.1884124 -0.1936168
## 5 0.1528982 0.67828862 -0.2959682 -0.1884124 -0.1936168
## 6 0.1528982 -0.09077113 -0.2959682 -0.1884124 -0.1936168
## menderita_mengungsi Rumah.Rusak.Berat Rumah.Rusak.Sedang Rumah.Rusak.Ringan
## 1 -0.1701525 -0.3614964 -0.3546078 -0.3880973
## 2 -0.8409327 -0.3614964 -0.3546078 -0.3880973
## 3 -0.1403351 -0.3614964 -0.3546078 -0.3880973
## 4 0.4879981 -0.3614964 -0.3546078 -0.3880973
## 5 0.3469309 -0.3614964 -0.3546078 -0.3880973
## 6 -0.3153376 -0.3614964 -0.3546078 -0.3880973
## Satuan.Pendidikan.Rusak Rumah.Ibadat.Rusak
## 1 -0.2934103 -0.2831517
## 2 -0.2934103 -0.2831517
## 3 -0.2934103 -0.2831517
## 4 -0.2934103 -0.2831517
## 5 -0.2934103 -0.2831517
## 6 -0.2934103 -0.2831517
## Fasilitas.Pelayanan.Kesehatan.Rusak Kantor.Rusak Jembatan.Rusak
## 1 -0.231054 -0.1845486 -0.3349156
## 2 -0.231054 -0.1845486 -0.3349156
## 3 -0.231054 -0.1845486 -0.3349156
## 4 -0.231054 -0.1845486 -0.3349156
## 5 -0.231054 -0.1845486 -0.3349156
## 6 -0.231054 -0.1845486 -0.3349156
# 1. Uji Normalitas Multivariat
library(psych)
## Warning: package 'psych' was built under R version 4.5.3
mardia(x= data_z)
## Call: mardia(x = data_z)
##
## Mardia tests of multivariate skew and kurtosis
## Use describe(x) the to get univariate tests
## n.obs = 393 num.vars = 14
## b1p = 449.66 skew = 29452.43 with probability <= 0
## small sample skew = 29707.42 with probability <= 0
## b2p = 1081.82 kurtosis = 401.72 with probability <= 0
# 2. Uji Kecukupan Sampel(KMO)
library(psych)
r <- cor(data_z)
KMO(r)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = r)
## Overall MSA = 0.9
## MSA for each item =
## Jumlah.Kejadian Rumah.Terendam
## 0.76 0.58
## Meninggal Hilang
## 0.93 0.81
## Luka...Sakit menderita_mengungsi
## 0.93 0.77
## Rumah.Rusak.Berat Rumah.Rusak.Sedang
## 0.95 0.90
## Rumah.Rusak.Ringan Satuan.Pendidikan.Rusak
## 0.94 0.90
## Rumah.Ibadat.Rusak Fasilitas.Pelayanan.Kesehatan.Rusak
## 0.86 0.98
## Kantor.Rusak Jembatan.Rusak
## 0.88 0.98
#3. Uji Multikolinearitas
# Indikator
idk <- c("Jumlah.Kejadian", "Rumah.Terendam",
"Meninggal", "Hilang", "Luka...Sakit", "menderita_mengungsi",
"Rumah.Rusak.Berat", "Rumah.Rusak.Sedang", "Rumah.Rusak.Ringan",
"Satuan.Pendidikan.Rusak", "Rumah.Ibadat.Rusak", "Fasilitas.Pelayanan.Kesehatan.Rusak",
"Kantor.Rusak", "Jembatan.Rusak")
# Determinan Matriks Kovarians
data_manifest <- data_z[, idk]
# Perhitungan Matriks Kovarians dan Determinannya
cov_matrix <- cov(data_manifest, use = "complete.obs")
det_cov <- det(cov_matrix)
#Pakai VIF (Variance Inflation Factor)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
data_manifest_clean <- na.omit(data_manifest)
# Indikator 'Satuan.Pendidikan.Rusak' sebagai sampel variabel dependen
model_vif <- lm(Satuan.Pendidikan.Rusak ~ Jumlah.Kejadian + Rumah.Terendam +
Meninggal + Hilang + Luka...Sakit + menderita_mengungsi +
Rumah.Rusak.Berat + Rumah.Rusak.Sedang + Rumah.Rusak.Ringan +
Rumah.Ibadat.Rusak + Fasilitas.Pelayanan.Kesehatan.Rusak + Kantor.Rusak + Jembatan.Rusak,
data = data_manifest_clean)
vif_values <- vif(model_vif)
vif_values
## Jumlah.Kejadian Rumah.Terendam
## 1.008527 2.478746
## Meninggal Hilang
## 4.575426 2.191727
## Luka...Sakit menderita_mengungsi
## 2.450240 3.044749
## Rumah.Rusak.Berat Rumah.Rusak.Sedang
## 8.306866 9.769647
## Rumah.Rusak.Ringan Rumah.Ibadat.Rusak
## 8.076259 5.609131
## Fasilitas.Pelayanan.Kesehatan.Rusak Kantor.Rusak
## 3.023455 2.783262
## Jembatan.Rusak
## 2.987172
Hasil Uji Asumsi Multivariat
Pertama, berdasarkan Uji Normalitas Multivariat Mardia, diperoleh nilai multivariate skewness sebesar 29452.43 (\(p \le 0\)) dan multivariate kurtosis sebesar 401.72 (\(p \le 0\)). Hasil ini secara signifikan menolak hipotesis nol, yang berarti data tidak berdistribusi normal multivariat. Nilai ini diperkuat oleh visual Normal Q-Q Plot yang menunjukkan kelengkungan tajam ke atas pada kuantil atas yang menandakan sebaran heavy-tailed yang pada dasarnya normal pada data bencana.
Kedua, pada Uji Kecukupan Sampel, seluruh nilai Kaiser-Meyer-Olkin (KMO) indikator berada di atas ambang batas 0.5. Hal ini menunjukkan bahwa matriks korelasi antar-indikator memiliki kecukupan informasi yang sangat baik untuk diolah ke dalam Confirmatory Factor Analysis (CFA).
Ketiga, hasil Uji Multikolinearitas (VIF) dengan menggunakan batasan
ketat untuk PLS-SEM (VIF < 3.3) pada beberapa variabel menunjukkan
adanya gejala kolinearitas tinggi khususnya pada kluster kerusakan
pemukiman. Indikator Rumah.Rusak.Sedang mencatat nilai VIF
tertinggi (9.769647), disusul oleh Rumah.Rusak.Berat
(8.306866) dan Rumah.Rusak.Ringan(8.076259).
Dari hasil ini, data cocok untuk dilakukan PLS-SEM yang memang dirancang untuk bekerja tanpa asumsi distribusi normal. Adapun dalam konteks PLS-SEM reflektif, multikolinearitas antarindikator sebenarnya masih dapat ditoleransi karena indikator diperlakukan sebagai cerminan dari konstruk yang sama dalam artian korelasi tinggi antar-indikator justru sejalan dengan asumsi reflektif.
library(seminr)
set.seed(123)
data_z_fix <- data_z
cols_ties <- c("Meninggal", "Hilang", "Luka...Sakit", "menderita_mengungsi",
"Satuan.Pendidikan.Rusak", "Rumah.Ibadat.Rusak",
"Fasilitas.Pelayanan.Kesehatan.Rusak", "Kantor.Rusak", "Jembatan.Rusak")
for(col in cols_ties) {
data_z_fix[[col]] <- data_z_fix[[col]] + rnorm(nrow(data_z_fix), 0, 1e-6)
}
Tambahkan noise kecil untuk memecah ties dalam menangani masalah NaN yang kompleks pada PLS-SEM
library(seminr)
# Outer Model
banjir_mm <- constructs(
composite("IntensitasBanjir",
c("Jumlah.Kejadian", "Rumah.Terendam"), weights = mode_B),
composite("DampakKorbanManusia",
c("Meninggal", "Hilang", "Luka...Sakit", "menderita_mengungsi"),
weights = mode_B),
reflective("KerusakanPemukiman",
c("Rumah.Rusak.Berat", "Rumah.Rusak.Sedang", "Rumah.Rusak.Ringan")),
composite("KerusakanFasilitasPublik",
c("Satuan.Pendidikan.Rusak", "Rumah.Ibadat.Rusak",
"Fasilitas.Pelayanan.Kesehatan.Rusak", "Kantor.Rusak", "Jembatan.Rusak"),
weights = mode_B)
)
# Inner Model
banjir_sm <- relationships( paths(from = "IntensitasBanjir", to = c("DampakKorbanManusia", "KerusakanPemukiman", "KerusakanFasilitasPublik"))
)
# Estimasi Algoritma PLS-SEM
banjir_pls <- estimate_pls(
data = data_z_fix,
measurement_model = banjir_mm,
structural_model = banjir_sm,
inner_weights = path_weighting,
missing = mean_replacement
)
## Generating the seminr model
## All 393 observations are valid.
summary_banjir <- summary(banjir_pls)
cat("\nOuter Loadings & Weights\n")
##
## Outer Loadings & Weights
print(round(summary_banjir$loadings, 4))
## IntensitasBanjir DampakKorbanManusia
## Jumlah.Kejadian -0.004 0.000
## Rumah.Terendam 1.000 0.000
## Meninggal -0.000 -0.341
## Hilang -0.000 -0.254
## Luka...Sakit -0.000 -0.296
## menderita_mengungsi 0.000 0.694
## Rumah.Rusak.Berat -0.000 -0.000
## Rumah.Rusak.Sedang -0.000 -0.000
## Rumah.Rusak.Ringan -0.000 -0.000
## Satuan.Pendidikan.Rusak -0.000 -0.000
## Rumah.Ibadat.Rusak -0.000 -0.000
## Fasilitas.Pelayanan.Kesehatan.Rusak -0.000 -0.000
## Kantor.Rusak -0.000 -0.000
## Jembatan.Rusak -0.000 -0.000
## KerusakanPemukiman KerusakanFasilitasPublik
## Jumlah.Kejadian 0.000 0.000
## Rumah.Terendam -0.000 -0.000
## Meninggal 0.000 0.000
## Hilang 0.000 0.000
## Luka...Sakit 0.000 0.000
## menderita_mengungsi 0.000 0.000
## Rumah.Rusak.Berat 0.894 0.000
## Rumah.Rusak.Sedang 0.987 0.000
## Rumah.Rusak.Ringan 0.961 0.000
## Satuan.Pendidikan.Rusak 0.000 0.893
## Rumah.Ibadat.Rusak 0.000 0.785
## Fasilitas.Pelayanan.Kesehatan.Rusak 0.000 0.943
## Kantor.Rusak 0.000 0.633
## Jembatan.Rusak 0.000 0.814
print(round(summary_banjir$weights, 4))
## IntensitasBanjir DampakKorbanManusia
## Jumlah.Kejadian 0.000 0.000
## Rumah.Terendam 1.000 0.000
## Meninggal 0.000 -0.718
## Hilang 0.000 0.115
## Luka...Sakit 0.000 -0.209
## menderita_mengungsi 0.000 1.041
## Rumah.Rusak.Berat 0.000 0.000
## Rumah.Rusak.Sedang 0.000 0.000
## Rumah.Rusak.Ringan 0.000 0.000
## Satuan.Pendidikan.Rusak 0.000 0.000
## Rumah.Ibadat.Rusak 0.000 0.000
## Fasilitas.Pelayanan.Kesehatan.Rusak 0.000 0.000
## Kantor.Rusak 0.000 0.000
## Jembatan.Rusak 0.000 0.000
## KerusakanPemukiman KerusakanFasilitasPublik
## Jumlah.Kejadian 0.000 0.000
## Rumah.Terendam 0.000 0.000
## Meninggal 0.000 0.000
## Hilang 0.000 0.000
## Luka...Sakit 0.000 0.000
## menderita_mengungsi 0.000 0.000
## Rumah.Rusak.Berat 0.326 0.000
## Rumah.Rusak.Sedang 0.360 0.000
## Rumah.Rusak.Ringan 0.350 0.000
## Satuan.Pendidikan.Rusak 0.000 0.522
## Rumah.Ibadat.Rusak 0.000 -0.527
## Fasilitas.Pelayanan.Kesehatan.Rusak 0.000 0.640
## Kantor.Rusak 0.000 0.188
## Jembatan.Rusak 0.000 0.277
cat("\nReliabilitas & Validitas Konvergen\n")
##
## Reliabilitas & Validitas Konvergen
print(round(summary_banjir$reliability, 4))
## alpha rhoA rhoC AVE
## IntensitasBanjir -0.008 1.000 0.498 0.500
## DampakKorbanManusia 0.785 1.000 0.012 0.188
## KerusakanPemukiman 0.963 0.966 0.964 0.899
## KerusakanFasilitasPublik 0.923 1.000 0.910 0.673
##
## Alpha, rhoA, and rhoC should exceed 0.7 while AVE should exceed 0.5
cat("\nValiditas Diskriminan (HTMT) & VIF Formatif\n")
##
## Validitas Diskriminan (HTMT) & VIF Formatif
print(round(summary_banjir$validity$htmt, 4))
## IntensitasBanjir DampakKorbanManusia
## IntensitasBanjir . .
## DampakKorbanManusia 3.466 .
## KerusakanPemukiman 2.550 0.889
## KerusakanFasilitasPublik 2.602 0.818
## KerusakanPemukiman KerusakanFasilitasPublik
## IntensitasBanjir . .
## DampakKorbanManusia . .
## KerusakanPemukiman . .
## KerusakanFasilitasPublik 0.924 .
lapply(summary_banjir$vif_items, round, 4)
## list()
cat("\nPath Coefficients & R-Squared\n")
##
## Path Coefficients & R-Squared
print(round(summary_banjir$paths, 4))
## DampakKorbanManusia KerusakanPemukiman
## R^2 0.459 0.075
## AdjR^2 0.457 0.073
## IntensitasBanjir 0.677 -0.274
## KerusakanFasilitasPublik
## R^2 0.094
## AdjR^2 0.092
## IntensitasBanjir -0.307
cat("\nSRMR (Model Fit)\n")
##
## SRMR (Model Fit)
print(round(summary_banjir$it_criteria, 4))
## DampakKorbanManusia KerusakanPemukiman KerusakanFasilitasPublik
## AIC -238.216 -26.596 -35.815
## BIC -230.268 -18.648 -27.867
cat("\nEffect Size f² & VIF Inner Model\n")
##
## Effect Size f² & VIF Inner Model
print(round(summary_banjir$fSquare, 4))
## IntensitasBanjir DampakKorbanManusia
## IntensitasBanjir 0.000 0.847
## DampakKorbanManusia 0.000 0.000
## KerusakanPemukiman 0.000 0.000
## KerusakanFasilitasPublik 0.000 0.000
## KerusakanPemukiman KerusakanFasilitasPublik
## IntensitasBanjir 0.081 0.104
## DampakKorbanManusia 0.000 0.000
## KerusakanPemukiman 0.000 0.000
## KerusakanFasilitasPublik 0.000 0.000
lapply(summary_banjir$vif_antecedents, round, 4)
## $DampakKorbanManusia
## IntensitasBanjir
## NA
##
## $KerusakanPemukiman
## IntensitasBanjir
## NA
##
## $KerusakanFasilitasPublik
## IntensitasBanjir
## NA
boot_banjir <- bootstrap_model(
seminr_model = banjir_pls,
nboot = 1000,
cores = parallel::detectCores() - 1,
seed = 123
)
## Bootstrapping model using seminr...
## SEMinR Model successfully bootstrapped
summary_boot <- summary(boot_banjir, alpha = 0.05)
cat("\nBootstrapped Path Coefficient\n")
##
## Bootstrapped Path Coefficient
print(round(summary_boot$bootstrapped_paths, 4))
## Original Est. Bootstrap Mean
## IntensitasBanjir -> DampakKorbanManusia 0.677 0.084
## IntensitasBanjir -> KerusakanPemukiman -0.274 -0.271
## IntensitasBanjir -> KerusakanFasilitasPublik -0.307 -0.328
## Bootstrap SD T Stat. 2.5% CI
## IntensitasBanjir -> DampakKorbanManusia 0.684 0.990 -0.758
## IntensitasBanjir -> KerusakanPemukiman 0.064 -4.288 -0.389
## IntensitasBanjir -> KerusakanFasilitasPublik 0.048 -6.434 -0.412
## 97.5% CI Bootstrap P Val
## IntensitasBanjir -> DampakKorbanManusia 0.762 0.868
## IntensitasBanjir -> KerusakanPemukiman -0.131 0.002
## IntensitasBanjir -> KerusakanFasilitasPublik -0.234 0.000
cat("\nBootstrapped Outer Loadings (Reflektif)\n")
##
## Bootstrapped Outer Loadings (Reflektif)
print(round(summary_boot$bootstrapped_loadings, 4))
## Original Est.
## Jumlah.Kejadian -> IntensitasBanjir -0.004
## Rumah.Terendam -> IntensitasBanjir 1.000
## Meninggal -> DampakKorbanManusia -0.341
## Hilang -> DampakKorbanManusia -0.254
## Luka...Sakit -> DampakKorbanManusia -0.296
## menderita_mengungsi -> DampakKorbanManusia 0.694
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.894
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.987
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.961
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.893
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.785
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.943
## Kantor.Rusak -> KerusakanFasilitasPublik 0.633
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.814
## Bootstrap Mean
## Jumlah.Kejadian -> IntensitasBanjir -0.002
## Rumah.Terendam -> IntensitasBanjir 1.000
## Meninggal -> DampakKorbanManusia 0.020
## Hilang -> DampakKorbanManusia 0.025
## Luka...Sakit -> DampakKorbanManusia 0.015
## menderita_mengungsi -> DampakKorbanManusia 0.149
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.888
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.988
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.956
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.820
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.726
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.867
## Kantor.Rusak -> KerusakanFasilitasPublik 0.576
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.749
## Bootstrap SD
## Jumlah.Kejadian -> IntensitasBanjir 0.064
## Rumah.Terendam -> IntensitasBanjir 0.000
## Meninggal -> DampakKorbanManusia 0.345
## Hilang -> DampakKorbanManusia 0.261
## Luka...Sakit -> DampakKorbanManusia 0.298
## menderita_mengungsi -> DampakKorbanManusia 0.676
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.093
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.085
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.099
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.123
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.160
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.079
## Kantor.Rusak -> KerusakanFasilitasPublik 0.158
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.138
## T Stat.
## Jumlah.Kejadian -> IntensitasBanjir -0.062
## Rumah.Terendam -> IntensitasBanjir 1920.674
## Meninggal -> DampakKorbanManusia -0.988
## Hilang -> DampakKorbanManusia -0.971
## Luka...Sakit -> DampakKorbanManusia -0.994
## menderita_mengungsi -> DampakKorbanManusia 1.027
## Rumah.Rusak.Berat -> KerusakanPemukiman 9.655
## Rumah.Rusak.Sedang -> KerusakanPemukiman 11.606
## Rumah.Rusak.Ringan -> KerusakanPemukiman 9.725
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 7.243
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 4.914
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 11.900
## Kantor.Rusak -> KerusakanFasilitasPublik 4.004
## Jembatan.Rusak -> KerusakanFasilitasPublik 5.914
## 2.5% CI
## Jumlah.Kejadian -> IntensitasBanjir -0.115
## Rumah.Terendam -> IntensitasBanjir 0.999
## Meninggal -> DampakKorbanManusia -0.387
## Hilang -> DampakKorbanManusia -0.325
## Luka...Sakit -> DampakKorbanManusia -0.351
## menderita_mengungsi -> DampakKorbanManusia -0.700
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.686
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.879
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.790
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.525
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.340
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.678
## Kantor.Rusak -> KerusakanFasilitasPublik 0.196
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.407
## 97.5% CI
## Jumlah.Kejadian -> IntensitasBanjir 0.126
## Rumah.Terendam -> IntensitasBanjir 1.000
## Meninggal -> DampakKorbanManusia 0.506
## Hilang -> DampakKorbanManusia 0.410
## Luka...Sakit -> DampakKorbanManusia 0.435
## menderita_mengungsi -> DampakKorbanManusia 0.853
## Rumah.Rusak.Berat -> KerusakanPemukiman 1.037
## Rumah.Rusak.Sedang -> KerusakanPemukiman 1.115
## Rumah.Rusak.Ringan -> KerusakanPemukiman 1.111
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.974
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.953
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.981
## Kantor.Rusak -> KerusakanFasilitasPublik 0.832
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.941
## Bootstrap P Val
## Jumlah.Kejadian -> IntensitasBanjir 0.934
## Rumah.Terendam -> IntensitasBanjir 0.000
## Meninggal -> DampakKorbanManusia 0.868
## Hilang -> DampakKorbanManusia 0.890
## Luka...Sakit -> DampakKorbanManusia 0.874
## menderita_mengungsi -> DampakKorbanManusia 0.868
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.000
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.002
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.002
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.000
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.000
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.000
## Kantor.Rusak -> KerusakanFasilitasPublik 0.004
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.000
cat("\nBootstrapped Outer Weights (Formatif)\n")
##
## Bootstrapped Outer Weights (Formatif)
print(round(summary_boot$bootstrapped_weights, 4))
## Original Est.
## Jumlah.Kejadian -> IntensitasBanjir 0.000
## Rumah.Terendam -> IntensitasBanjir 1.000
## Meninggal -> DampakKorbanManusia -0.718
## Hilang -> DampakKorbanManusia 0.115
## Luka...Sakit -> DampakKorbanManusia -0.209
## menderita_mengungsi -> DampakKorbanManusia 1.041
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.326
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.360
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.350
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.522
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik -0.527
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.640
## Kantor.Rusak -> KerusakanFasilitasPublik 0.188
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.277
## Bootstrap Mean
## Jumlah.Kejadian -> IntensitasBanjir 0.001
## Rumah.Terendam -> IntensitasBanjir 0.999
## Meninggal -> DampakKorbanManusia -0.059
## Hilang -> DampakKorbanManusia 0.062
## Luka...Sakit -> DampakKorbanManusia -0.022
## menderita_mengungsi -> DampakKorbanManusia 0.153
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.324
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.360
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.349
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.436
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik -0.445
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.595
## Kantor.Rusak -> KerusakanFasilitasPublik 0.167
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.258
## Bootstrap SD
## Jumlah.Kejadian -> IntensitasBanjir 0.021
## Rumah.Terendam -> IntensitasBanjir 0.002
## Meninggal -> DampakKorbanManusia 0.758
## Hilang -> DampakKorbanManusia 0.196
## Luka...Sakit -> DampakKorbanManusia 0.237
## menderita_mengungsi -> DampakKorbanManusia 1.021
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.032
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.038
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.041
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.657
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.629
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.358
## Kantor.Rusak -> KerusakanFasilitasPublik 0.233
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.330
## T Stat.
## Jumlah.Kejadian -> IntensitasBanjir 0.015
## Rumah.Terendam -> IntensitasBanjir 547.674
## Meninggal -> DampakKorbanManusia -0.948
## Hilang -> DampakKorbanManusia 0.586
## Luka...Sakit -> DampakKorbanManusia -0.882
## menderita_mengungsi -> DampakKorbanManusia 1.019
## Rumah.Rusak.Berat -> KerusakanPemukiman 10.216
## Rumah.Rusak.Sedang -> KerusakanPemukiman 9.341
## Rumah.Rusak.Ringan -> KerusakanPemukiman 8.502
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.795
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik -0.838
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 1.786
## Kantor.Rusak -> KerusakanFasilitasPublik 0.806
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.839
## 2.5% CI
## Jumlah.Kejadian -> IntensitasBanjir -0.030
## Rumah.Terendam -> IntensitasBanjir 0.995
## Meninggal -> DampakKorbanManusia -1.049
## Hilang -> DampakKorbanManusia -0.284
## Luka...Sakit -> DampakKorbanManusia -0.405
## menderita_mengungsi -> DampakKorbanManusia -1.067
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.261
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.322
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.292
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik -0.958
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik -1.615
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik -0.032
## Kantor.Rusak -> KerusakanFasilitasPublik -0.246
## Jembatan.Rusak -> KerusakanFasilitasPublik -0.490
## 97.5% CI
## Jumlah.Kejadian -> IntensitasBanjir 0.048
## Rumah.Terendam -> IntensitasBanjir 1.001
## Meninggal -> DampakKorbanManusia 1.070
## Hilang -> DampakKorbanManusia 0.479
## Luka...Sakit -> DampakKorbanManusia 0.399
## menderita_mengungsi -> DampakKorbanManusia 1.096
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.377
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.421
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.410
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 1.602
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.858
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 1.359
## Kantor.Rusak -> KerusakanFasilitasPublik 0.676
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.819
## Bootstrap P Val
## Jumlah.Kejadian -> IntensitasBanjir 0.930
## Rumah.Terendam -> IntensitasBanjir 0.000
## Meninggal -> DampakKorbanManusia 0.868
## Hilang -> DampakKorbanManusia 0.782
## Luka...Sakit -> DampakKorbanManusia 0.904
## menderita_mengungsi -> DampakKorbanManusia 0.868
## Rumah.Rusak.Berat -> KerusakanPemukiman 0.000
## Rumah.Rusak.Sedang -> KerusakanPemukiman 0.002
## Rumah.Rusak.Ringan -> KerusakanPemukiman 0.002
## Satuan.Pendidikan.Rusak -> KerusakanFasilitasPublik 0.472
## Rumah.Ibadat.Rusak -> KerusakanFasilitasPublik 0.454
## Fasilitas.Pelayanan.Kesehatan.Rusak -> KerusakanFasilitasPublik 0.066
## Kantor.Rusak -> KerusakanFasilitasPublik 0.444
## Jembatan.Rusak -> KerusakanFasilitasPublik 0.398
plot(banjir_pls, title = "Hasil PLS-SEM")