library(readxl) # membaca file Excel library(nortest) # uji Lilliefors
data <- read_excel(file.choose(), sheet = 1)
names(data) <- c(“Umur”, “TekananDarah”, “RBC_Urin”, “Bakteri_Urin”, “UreaDarah”, “KreatininSerum”, “Hemoglobin”, “Hipertensi”, “Diabetes”, “PenyakitJantungKoroner”, “Anemia”, “RasioProteinKreatinin”, “OutputUrin”, “Kolesterol”, “RiwayatKeluarga”, “Merokok”, “BMI”, “AktivitasFisik”, “StatusCKD”)
head(data) # 6 baris pertama View(data) # tampilan tabel di R Studio
kolom_teks <- sapply(data, is.character) data[kolom_teks] <- lapply(data[kolom_teks], as.factor) data\(AktivitasFisik <- factor(data\)AktivitasFisik, levels = c(“low”, “moderate”, “high”), ordered = TRUE)
dim(data) # jumlah baris dan kolom str(data) # struktur: tipe tiap variabel + contoh isinya summary(data) # ringkasan tiap variabel sapply(data, class) # tipe data tiap variabel colSums(is.na(data)) # cek missing value
num_vars <- names(data)[sapply(data, is.numeric)] # variabel numerik kat_vars <- names(data)[sapply(data, is.factor)] # variabel kategorik num_vars kat_vars lapply(data[kat_vars], levels) # kategori tiap variabel kategorik
par(mfrow = c(3, 3)) for (v in num_vars) { hist(data[[v]], freq = FALSE, main = paste(“Histogram”, v), xlab = v, col = “skyblue”, border = “white”) lines(density(data[[v]]), col = “red”, lwd = 2) } par(mfrow = c(1, 1))
par(mfrow = c(3, 3)) for (v in num_vars) { boxplot(data[[v]], horizontal = TRUE, main = paste(“Boxplot”, v), xlab = v, col = “lightgreen”) } par(mfrow = c(1, 1))
par(mfrow = c(2, 5)) for (v in kat_vars) { barplot(table(data[[v]]), main = v, col = “orange”, ylab = “Frekuensi”, las = 1) } par(mfrow = c(1, 1))
pairs(data[num_vars], pch = 19, col = “steelblue”) round(cor(data[num_vars]), 2) # matriks korelasi
skew <- function(x) { m <- mean(x); mean((x - m)^3) / (mean((x - m)2))1.5 } kurt <- function(x) { m <- mean(x); mean((x - m)^4) / (mean((x - m)2))2 - 3 }
desk <- function(x) { c(N = length(x), Mean = mean(x), Median = median(x), SD = sd(x), Varians = var(x), Min = min(x), Q1 = unname(quantile(x, 0.25)), Q3 = unname(quantile(x, 0.75)), Max = max(x), Range = max(x) - min(x), IQR = IQR(x), KV_persen = sd(x) / mean(x) * 100, Skewness = skew(x), Kurtosis_excess = kurt(x)) }
hasil_desk <- t(sapply(data[num_vars], desk)) round(hasil_desk, 3)
for (v in kat_vars) { cat(“==”, v, “==”) print(table(data[[v]])) print(round(prop.table(table(data[[v]])) * 100, 1)) }
par(mfrow = c(3, 3)) for (v in num_vars) { y <- data[[v]] hist(y, freq = FALSE, main = v, xlab = v, col = “grey90”, border = “white”) lines(density(y), col = “red”, lwd = 2) curve(dnorm(x, mean(y), sd(y)), add = TRUE, col = “blue”, lwd = 2) curve(dunif(x, min(y), max(y)), add = TRUE, col = “darkgreen”, lwd = 2) } par(mfrow = c(1, 1))
par(mfrow = c(3, 3)) for (v in num_vars) { qqnorm(data[[v]], main = paste(“Q-Q Plot”, v), pch = 19) qqline(data[[v]], col = “red”, lwd = 2) } par(mfrow = c(1, 1))
uji <- data.frame(Variabel = num_vars, W_Shapiro = NA, p_Shapiro = NA, p_Lilliefors = NA, p_KS_Uniform = NA) for (i in seq_along(num_vars)) { y <- data[[num_vars[i]]] sw <- shapiro.test(y) li <- lillie.test(y) un <- suppressWarnings(ks.test(y, “punif”, min(y), max(y))) uji[i, 2:5] <- c(sw\(statistic, sw\)p.value, li\(p.value, un\)p.value) } uji\(Normal_Shapiro <- ifelse(uji\)p_Shapiro < 0.05, “Tolak H0 (tidak normal)”, “Gagal tolak H0 (normal)”) uji\(Uniform_KS <- ifelse(uji\)p_KS_Uniform < 0.05, “Tolak H0 (bukan uniform)”, “Gagal tolak H0 (uniform)”) print(uji, digits = 4)
n_yes <- sum(data$StatusCKD == “Yes”) n_yes / nrow(data) # estimasi p binom.test(n_yes, nrow(data), p = 0.5)
library(readxl) # install.packages(“readxl”) jika belum ada graphics.off()
ckd <- as.data.frame(read_excel(file.choose())) # pilih file CKD.xlsx num <- ckd[sapply(ckd, is.numeric)] # ambil kolom numerik saja mat_kor <- cor(num) # matriks korelasi Pearson print(round(mat_kor, 2))
n <- ncol(mat_kor) warna <- colorRampPalette(c(“blue”, “white”, “red”))(100) z <- t(mat_kor[n:1, ])
par(mar = c(9, 9, 3, 1)) image(1:n, 1:n, z, col = warna, zlim = c(-1, 1), axes = FALSE, xlab = ““, ylab =”“, main =”Heatmap Matriks Korelasi Variabel Numerik CKD”) axis(1, at = 1:n, labels = colnames(mat_kor), las = 2, cex.axis = 0.7) axis(2, at = 1:n, labels = rev(colnames(mat_kor)), las = 1, cex.axis = 0.7) pos <- expand.grid(x = 1:n, y = 1:n) text(pos\(x, pos\)y, labels = sprintf(“%.2f”, as.vector(z)), cex = 0.8) box()