Memuat
Memuat
Regresi Logistik Multinomial untuk Kehutanan dan Lingkungan
0 kali dilihat
Memodelkan pilihan pengelolaan sampah yang bersifat nominal terhadap pendapatan rumah tangga dan jarak ke tempat sampah dengan regresi logistik multinomial, didemonstrasikan memakai data sintetis. Regresi logistik multinomial memodelkan pilihan atau kategori nominal yang tidak berurutan (tiga kategori atau lebih) relatif terhadap satu kategori referensi. Cocok untuk skripsi/tesis tentang pilihan moda transportasi, jenis produk, metode pembayaran, atau jenis tindakan.

Memodelkan pilihan pengelolaan sampah yang bersifat nominal terhadap pendapatan rumah tangga dan jarak ke tempat sampah dengan regresi logistik multinomial, didemonstrasikan memakai data sintetis.
| Peran | Variabel | Satuan |
|---|---|---|
| Utama | Pilihan pengelolaan sampah | class |
| Pendukung 1 | Pendapatan rumah tangga | IDR million |
| Pendukung 2 | Jarak ke tempat sampah | m |
Model multinomial untuk Pilihan pengelolaan sampah signifikan (uji LR p < 0.001, McFadden R2 = 0.278) dengan akurasi 65.7% dibanding 38.6% kelas mayoritas. Relatif terhadap Dibakar, kenaikan satu simpangan baku Pendapatan rumah tangga mengalikan peluang relatif kategori Ditimbun dengan 3.38 (p < 0.001), sedangkan Jarak ke tempat sampah mengalikan peluang relatif kategori Dipilah dengan 7.18.
Dihitung dari data sintetis sebagai ilustrasi, bukan dari penelitian nyata.
Regresi logistik multinomial memodelkan pilihan atau kategori nominal yang tidak berurutan (tiga kategori atau lebih) relatif terhadap satu kategori referensi. Cocok untuk skripsi/tesis tentang pilihan moda transportasi, jenis produk, metode pembayaran, atau jenis tindakan.
Setiap koefisien dibaca relatif terhadap kategori referensi: RRR di atas 1 berarti kenaikan prediktor menaikkan peluang relatif kategori tersebut dibanding referensi. Laporkan RRR, p-value, uji likelihood ratio, pseudo R2, dan akurasi dibanding no-information rate.
Skrip awal singkat dengan nama variabel proyek ini. Versi yang diserahkan disesuaikan dengan data Anda dan diberi komentar lengkap.
# Contoh kode R: Multinomial Logistic Regression
suppressPackageStartupMessages({
library(ggplot2)
library(patchwork)
library(nnet)
})
set.seed(42)
# ---- Gaya grafik ----
pal <- c("#1f6feb", "#e8590c", "#2f9e44", "#ae3ec9", "#f59f00")
warna <- list(bg = "#f4f6fa", panel = "#ffffff", teks = "#1f2933", redup = "#5f6b78", grid = "#e3e8ee", bar = "#1d3557")
tata <- 1
theme_set(theme_minimal(base_size = 11) + theme(legend.position = "bottom"))
# ---- Data sintetis ----
n <- 200
d <- data.frame(household_income = rnorm(n, 50, 10),
distance_to_waste_bin = rnorm(n, 30, 6))
z1 <- as.numeric(scale(d$household_income))
z2 <- as.numeric(scale(d$distance_to_waste_bin))
kat <- c("A", "B", "C") # kategori nominal, kategori pertama = referensi
# Utilitas tiap kategori relatif terhadap kategori referensi (utilitas 0)
u2 <- runif(1, -0.3, 0.3) + runif(1, 0.9, 1.6) * z1 + runif(1, -0.5, 0.2) * z2
u3 <- runif(1, -0.3, 0.3) + runif(1, -0.2, 0.6) * z1 + runif(1, 0.9, 1.6) * z2
pm <- cbind(1, exp(u2), exp(u3)); pm <- pm / rowSums(pm)
d$waste_management_choice <- factor(kat[apply(pm, 1, function(p) sample(1:3, 1, prob = p))], levels = kat)
write.csv(d, "data_contoh.csv", row.names = FALSE)
# ---- Analisis: regresi logistik multinomial (nnet::multinom) ----
d$waste_management_choice <- relevel(factor(d$waste_management_choice, levels = kat), ref = kat[1]) # tetapkan kategori referensi
fit <- nnet::multinom(waste_management_choice ~ household_income + distance_to_waste_bin, data = d, trace = FALSE, maxit = 500)
s <- summary(fit)
print(s)
zval <- s$coefficients / s$standard.errors
pval <- 2 * pnorm(abs(zval), lower.tail = FALSE) # uji Wald tiap koefisien
print(round(pval, 4))
print(round(exp(coef(fit)), 4)) # relative risk ratio (RRR) per satuan
# RRR per 1 simpangan baku untuk tiap kategori vs referensi
sdx <- c(sd(d$household_income), sd(d$distance_to_waste_bin))
rr <- do.call(rbind, lapply(1:2, function(j) {
b <- s$coefficients[j, 2:3]; se <- s$standard.errors[j, 2:3]
data.frame(kategori = kat[j + 1], var = c("household_income", "distance_to_waste_bin"), rrr = exp(b * sdx),
lo = exp((b - 1.96 * se) * sdx), hi = exp((b + 1.96 * se) * sdx), p = pval[j, 2:3])
}))
print(rr)
# ---- Uji model ----
fit0 <- nnet::multinom(waste_management_choice ~ 1, data = d, trace = FALSE)
lr <- anova(fit0, fit) # uji likelihood ratio
print(lr)
p_lr <- lr[2, "Pr(Chi)"]
r2_mcf <- 1 - as.numeric(logLik(fit)) / as.numeric(logLik(fit0))
d$prediksi <- factor(predict(fit, type = "class"), levels = kat)
tab <- table(Aktual = d$waste_management_choice, Prediksi = d$prediksi)
print(tab)
akurasi <- mean(d$prediksi == d$waste_management_choice)
nir <- max(table(d$waste_management_choice)) / n # no-information rate (kelas mayoritas)
# ---- Grafik ----
warna_kat <- setNames(pal[1:3], kat)
lab_pendek <- function(s) substr(s, 1, 16)
lab_lipat <- function(s) vapply(s, function(x) paste(strwrap(x, 11), collapse = "\n"), "")
# Peluang prediksi tiap kategori menurut X1 (X2 pada rata-rata)
g <- data.frame(household_income = seq(min(d$household_income), max(d$household_income), length.out = 120), distance_to_waste_bin = mean(d$distance_to_waste_bin))
pg <- predict(fit, newdata = g, type = "probs")
dg <- data.frame(x = rep(g$household_income, 3), kategori = factor(rep(kat, each = nrow(g)), levels = kat), p = as.numeric(pg))
p1 <- ggplot(dg, aes(x, p, colour = kategori)) +
geom_line(linewidth = 1.2) +
scale_colour_manual(values = warna_kat, name = NULL, labels = lab_pendek) +
scale_y_continuous(labels = scales::percent, limits = c(0, 1)) +
labs(title = "Predicted probability by category", x = "household_income", y = "Probability")
# Wilayah prediksi pada bidang X1-X2
gr <- expand.grid(household_income = seq(min(d$household_income), max(d$household_income), length.out = 90),
distance_to_waste_bin = seq(min(d$distance_to_waste_bin), max(d$distance_to_waste_bin), length.out = 90))
gr$kelas <- factor(predict(fit, newdata = gr, type = "class"), levels = kat)
p2 <- ggplot() +
geom_raster(data = gr, aes(household_income, distance_to_waste_bin, fill = kelas), alpha = 0.22, show.legend = FALSE) +
geom_point(data = d, aes(household_income, distance_to_waste_bin, colour = waste_management_choice), size = 1.5, alpha = 0.8) +
scale_fill_manual(values = warna_kat) +
scale_colour_manual(values = warna_kat, name = NULL, labels = lab_pendek) +
labs(title = "Observed classes and predicted regions", x = "household_income", y = "distance_to_waste_bin") +
theme(legend.position = "none")
# Matriks konfusi
dt <- as.data.frame(tab)
p3 <- ggplot(dt, aes(Prediksi, Aktual)) +
geom_tile(aes(alpha = Freq), fill = pal[1], colour = warna$panel, linewidth = 1) +
geom_label(aes(label = Freq), fill = warna$panel, colour = warna$teks, label.size = 0, size = 3.3) +
scale_alpha(range = c(0.08, 0.75), guide = "none") +
scale_x_discrete(labels = lab_lipat) +
scale_y_discrete(labels = lab_lipat, limits = rev(kat)) +
labs(title = sprintf("Confusion matrix (accuracy %.1f%%)", 100 * mean(d$prediksi == d$waste_management_choice)),
x = "Predicted", y = "Observed")
p_hasil <- if (tata == 1) p1 / (p2 | p3) else p1 | (p2 / p3)
print(p_hasil)
Berkas proyek aslinya tersedia. Bukan sekadar gambar di atas: Anda mendapat proyek R yang siap dijalankan. Berkas bisa diunduh setelah pembayaran, dan kami kirim lewat WhatsApp atau email.
ZIP: analisis.R + data_contoh.csv + BACA-DULU.txt
Pilih seberapa banyak bantuan yang Anda perlukan. Setiap paket yang lebih tinggi sudah mencakup semua item paket di bawahnya. Harga belum termasuk PPN 11%.
Paket 1
Rp 350.000
belum termasuk PPN 11%
Waktu pengerjaan: 5 hari kerja
Output: Berkas R + gambar hasil
Yang Anda terima
Paket 2 · paling dipilih
Rp 1.050.000
belum termasuk PPN 11%
Waktu pengerjaan: 9 hari kerja
Output: Kode + analisis + bahan interpretasi
Termasuk semua item Paket 1, ditambah
Paket 3
Rp 2.250.000
belum termasuk PPN 11%
Waktu pengerjaan: 14-17 hari kerja
Output: Kode + analisis + pendampingan hingga siap dipresentasikan
Termasuk semua item Paket 1 & 2, ditambah
Ya. Berkas proyek aslinya berupa ZIP berisi skrip analisis.R lengkap, data_contoh.csv, dan petunjuk BACA-DULU.txt. Berkas bisa diunduh setelah pembayaran, dan kami kirim lewat WhatsApp atau email. Untuk data Anda sendiri (Paket 2 dan 3), skrip disesuaikan dengan dataset Anda.
Cocok. Regresi Logistik Multinomial lazim dipakai pada jenjang ini di bidang Kehutanan dan Lingkungan. Analisis kami sesuaikan dengan pertanyaan penelitian, data Anda sendiri, dan ketentuan dosen pembimbing.
Bukan. Lembar hasil dihitung dari data sintetis sebagai ilustrasi jenis keluaran R Studio. Untuk pesanan Anda, metode yang sama dijalankan pada data penelitian Anda sendiri.
Itu tujuan paketnya. Setiap skrip diberi komentar, dan Paket 3 mencakup dua sesi pendampingan serta latihan tanya jawab supaya Anda bisa menjelaskan metode dan hasilnya saat seminar dan sidang.
Tiap proyek punya tiga paket: Paket 1 (kode dan penjelasan) Rp 350.000, Paket 2 (analisis data Anda dan interpretasi) Rp 1.050.000, dan Paket 3 (pendampingan lengkap) Rp 2.250.000, belum termasuk PPN 11%. Data yang besar, metode tambahan, atau tenggat ketat menyesuaikan penawaran setelah konsultasi singkat.
Lembar hasil memakai data sintetis sebagai ilustrasi. R adalah bahasa pemrograman proyek R Foundation; RStudio dan Posit adalah merek dagang Posit PBC.
Kembali ke portofolio R Studio