Memuat
Memuat
MANOVA untuk Informatika dan Sistem Informasi
0 kali dilihat
Dengan data sintetis sebagai ilustrasi, analisis ini bertujuan untuk membandingkan waktu kueri, throughput kueri, dan penggunaan memori secara serentak antar tiga kelompok dengan MANOVA. MANOVA menguji apakah vektor rata-rata beberapa variabel terikat yang diukur bersamaan berbeda antarkelompok, dengan memperhitungkan korelasi antarvariabel terikat. Cocok untuk skripsi/tesis yang membandingkan beberapa kelompok pada sekumpulan hasil sekaligus, misalnya beberapa indikator kinerja atau beberapa ukuran klinis.

Dengan data sintetis sebagai ilustrasi, analisis ini bertujuan untuk membandingkan waktu kueri, throughput kueri, dan penggunaan memori secara serentak antar tiga kelompok dengan MANOVA.
| Peran | Variabel | Satuan |
|---|---|---|
| Utama | Waktu kueri | ms |
| Pendukung 1 | Throughput kueri | queries/s |
| Pendukung 2 | Penggunaan memori | MB |
MANOVA menunjukkan vektor rata-rata tiga variabel terikat berbeda signifikan antarkelompok (Pillai = 0.116, p < 0.001; Wilks = 0.887). ANOVA lanjutan menemukan 2 dari 3 variabel berbeda nyata, terbesar pada Waktu kueri (partial eta2 = 0.048). Fungsi diskriminan mengklasifikasikan 46.8% unit dengan benar.
Dihitung dari data sintetis sebagai ilustrasi, bukan dari penelitian nyata.
MANOVA menguji apakah vektor rata-rata beberapa variabel terikat yang diukur bersamaan berbeda antarkelompok, dengan memperhitungkan korelasi antarvariabel terikat. Cocok untuk skripsi/tesis yang membandingkan beberapa kelompok pada sekumpulan hasil sekaligus, misalnya beberapa indikator kinerja atau beberapa ukuran klinis.
Laporkan Pillai trace (paling tahan terhadap pelanggaran asumsi) atau Wilks lambda beserta F dan nilai p untuk efek multivariat. Bila signifikan, laporkan ANOVA lanjutan per variabel terikat dengan partial eta kuadrat untuk menunjukkan variabel mana yang paling membedakan kelompok.
Skrip awal singkat dengan nama variabel proyek ini. Versi yang diserahkan disesuaikan dengan data Anda dan diberi komentar lengkap.
# Contoh kode R: MANOVA
suppressPackageStartupMessages({
library(ggplot2)
library(patchwork)
library(MASS)
library(scales)
})
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: tiga variabel terikat yang diukur bersama pada tiga kelompok ----
n <- 200
lv <- c("A", "B", "C")
kelompok <- factor(sample(rep(lv, length.out = n)), levels = lv)
r12 <- runif(1, 0.2, 0.55); r13 <- runif(1, -0.3, 0.4); r23 <- runif(1, 0.1, 0.45)
S <- matrix(c(1, r12, r13, r12, 1, r23, r13, r23, 1), 3) # korelasi antar-variabel terikat
galat <- MASS::mvrnorm(n, mu = rep(0, 3), Sigma = S)
geser <- matrix(runif(9, -0.55, 0.55), 3) # profil rata-rata tiap kelompok (dalam SD)
geser[, 1] <- geser[, 1] + c(-0.35, 0, 0.35)[sample(3)] # minimal satu DV jelas berbeda
geser <- sweep(geser, 2, colMeans(geser))
z <- geser[as.integer(kelompok), ] + galat * runif(1, 0.75, 0.95)
d <- data.frame(kelompok = kelompok,
query_time = round(100 + 15 * z[, 1], 2),
query_throughput = round(50 + 10 * z[, 2], 2),
memory_usage = round(30 + 6 * z[, 3], 2))
write.csv(d, "data_contoh.csv", row.names = FALSE)
# ---- Analisis: MANOVA satu arah ----
fit <- manova(cbind(query_time, query_throughput, memory_usage) ~ kelompok, data = d)
s_pillai <- summary(fit, test = "Pillai")
s_wilks <- summary(fit, test = "Wilks")
print(s_pillai); print(s_wilks)
# ---- ANOVA lanjutan per variabel terikat + partial eta kuadrat ----
s_aov <- summary.aov(fit)
print(s_aov)
lanjut <- do.call(rbind, lapply(s_aov, function(a) data.frame(F = a[1, "F value"], p = a[1, "Pr(>F)"],
peta2 = a[1, "Sum Sq"] / sum(a[, "Sum Sq"]))))
lanjut$dv <- make.unique(c("query_time", "query_throughput", "memory_usage"), sep = " ")
print(lanjut)
# ---- Analisis diskriminan linear (visualisasi pemisahan kelompok) ----
ld <- MASS::lda(kelompok ~ query_time + query_throughput + memory_usage, data = d)
print(ld)
skor_ld <- predict(ld)
akurasi <- mean(skor_ld$class == d$kelompok)
cat("Akurasi klasifikasi LDA (resubstitusi):", round(akurasi, 3), "\n")
# ---- Grafik ----
pendek <- function(s, w = 14) ifelse(nchar(s) > w, paste0(trimws(substr(s, 1, w - 1)), "."), s)
dv <- c("query_time", "query_throughput", "memory_usage")
lab_dv <- make.unique(c("query_time", "query_throughput", "memory_usage"), sep = " ")
panjang <- do.call(rbind, lapply(seq_along(dv), function(j) {
zz <- as.numeric(scale(d[[dv[j]]])) # skala terstandar (z) karena satuan berbeda
a <- aggregate(zz, list(kelompok = d$kelompok), function(v) c(m = mean(v), se = sd(v) / sqrt(length(v))))
data.frame(dv = lab_dv[j], kelompok = a$kelompok, m = a$x[, "m"], se = a$x[, "se"])
}))
panjang$dv <- factor(panjang$dv, levels = unique(lab_dv))
p1 <- ggplot(panjang, aes(dv, m, colour = kelompok)) +
geom_hline(yintercept = 0, colour = warna$redup, linetype = "dashed") +
geom_pointrange(aes(ymin = m - 1.96 * se, ymax = m + 1.96 * se), position = position_dodge(width = 0.55),
size = 0.45, linewidth = 0.9) +
scale_colour_manual(values = pal[1:3], name = NULL, labels = pendek) +
scale_x_discrete(labels = scales::label_wrap(12)) +
labs(title = "Group means of each outcome (z, 95% CI)", x = NULL, y = "Standardised mean (z)") +
theme(legend.position = "bottom")
dl <- data.frame(LD1 = skor_ld$x[, 1], LD2 = skor_ld$x[, 2], kelompok = d$kelompok)
prop <- 100 * ld$svd^2 / sum(ld$svd^2)
p2 <- ggplot(dl, aes(LD1, LD2, colour = kelompok)) +
geom_point(alpha = 0.55, size = 1.4) +
stat_ellipse(level = 0.68, linewidth = 1) +
geom_point(data = aggregate(cbind(LD1, LD2) ~ kelompok, dl, mean), shape = 23, size = 3.2,
aes(fill = kelompok), colour = warna$teks, stroke = 1) +
scale_colour_manual(values = pal[1:3], guide = "none") +
scale_fill_manual(values = pal[1:3], guide = "none") +
labs(title = "Discriminant function scores (68% ellipses)",
x = sprintf("LD1 (%.1f%%)", prop[1]), y = sprintf("LD2 (%.1f%%)", prop[2]))
kr <- cor(d[, dv])
dk <- expand.grid(a = seq_along(dv), b = seq_along(dv))
dk$r <- kr[cbind(dk$a, dk$b)]
dk$a <- factor(lab_dv[dk$a], levels = unique(lab_dv)); dk$b <- factor(lab_dv[dk$b], levels = rev(unique(lab_dv)))
p3 <- ggplot(dk, aes(a, b, fill = r)) +
geom_tile(colour = warna$panel, linewidth = 1.2) +
geom_label(aes(label = sprintf("%.2f", r)), fill = warna$panel, colour = warna$teks, size = 3.3,
label.size = 0, alpha = 0.85) +
scale_fill_gradient2(low = pal[1], mid = warna$grid, high = pal[2], limits = c(-1, 1), guide = "none") +
scale_x_discrete(labels = scales::label_wrap(12)) + scale_y_discrete(labels = scales::label_wrap(12)) +
labs(title = "Correlation among outcomes", x = NULL, y = NULL) +
theme(panel.grid = element_blank())
dd <- data.frame(dv = factor(lanjut$dv, levels = unique(lab_dv)), peta2 = lanjut$peta2, p = lanjut$p)
p4 <- ggplot(dd, aes(dv, peta2)) +
geom_col(fill = pal[4], width = 0.6, alpha = 0.85) +
geom_text(aes(label = ifelse(p < 0.001, "p<0.001", sprintf("p=%.3f", p))), vjust = -0.4, colour = warna$teks, size = 3) +
scale_y_continuous(expand = expansion(mult = c(0, 0.18))) +
scale_x_discrete(labels = scales::label_wrap(12)) +
labs(title = "Follow-up ANOVA: partial eta squared", x = NULL, y = "Partial eta squared")
p_hasil <- if (tata == 1) (p1 | p2) / (p3 | p4) else (p2 | p1) / (p4 | 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 950.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.100.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. MANOVA lazim dipakai pada jenjang ini di bidang Informatika dan Sistem Informasi. 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 950.000, dan Paket 3 (pendampingan lengkap) Rp 2.100.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