# =============================================================
# 1. LOAD LIBRARY & IMPOR DATA
# =============================================================
# Pastikan paket readxl sudah terinstal
if(!require(readxl)) install.packages("readxl")
## Loading required package: readxl
library(readxl)
# Membaca file Excel
data_raw <- read_excel("bayi.xlsx")
# Membersihkan data (mengambil 9 baris pertama dan variabel numerik)
data_clean <- data_raw[1:9, c("Y", "X1", "X2", "X3")]
data_clean <- as.data.frame(lapply(data_clean, as.numeric))
# =============================================================
# 2. MATRIKS KORELASI
# =============================================================
matriks_korelasi <- cor(data_clean)
cat("=== MATRIKS KORELASI (PEARSON) ===\n")
## === MATRIKS KORELASI (PEARSON) ===
print(round(matriks_korelasi, 4))
## Y X1 X2 X3
## Y 1.0000 0.9471 0.7611 0.5603
## X1 0.9471 1.0000 0.5340 0.3900
## X2 0.7611 0.5340 1.0000 0.7845
## X3 0.5603 0.3900 0.7845 1.0000
# =============================================================
# 3. TABEL KONTINGENSI (BERDASARKAN MEDIAN)
# =============================================================
# Mengelompokkan data kontinu menjadi 2 kategori berdasarkan median
data_clean$Y_kat <- factor(ifelse(data_clean$Y < median(data_clean$Y), "Y Rendah (< Median)", "Y Tinggi (>= Median)"))
data_clean$X1_kat <- factor(ifelse(data_clean$X1 < median(data_clean$X1), "X1 Rendah (< Median)", "X1 Tinggi (>= Median)"))
data_clean$X2_kat <- factor(ifelse(data_clean$X2 < median(data_clean$X2), "X2 Rendah (< Median)", "X2 Tinggi (>= Median)"))
data_clean$X3_kat <- factor(ifelse(data_clean$X3 < median(data_clean$X3), "X3 Rendah (< Median)", "X3 Tinggi (>= Median)"))
# a. Tabel Kontingensi Y vs X1 (Umur)
tabel_Y_X1 <- table(data_clean$Y_kat, data_clean$X1_kat)
cat("\n=== TABEL KONTINGENSI: Y vs X1 ===\n")
##
## === TABEL KONTINGENSI: Y vs X1 ===
print(addmargins(tabel_Y_X1))
##
## X1 Rendah (< Median) X1 Tinggi (>= Median) Sum
## Y Rendah (< Median) 3 1 4
## Y Tinggi (>= Median) 1 4 5
## Sum 4 5 9
# b. Tabel Kontingensi Y vs X2 (Berat Badan)
tabel_Y_X2 <- table(data_clean$Y_kat, data_clean$X2_kat)
cat("\n=== TABEL KONTINGENSI: Y vs X2 ===\n")
##
## === TABEL KONTINGENSI: Y vs X2 ===
print(addmargins(tabel_Y_X2))
##
## X2 Rendah (< Median) X2 Tinggi (>= Median) Sum
## Y Rendah (< Median) 4 0 4
## Y Tinggi (>= Median) 0 5 5
## Sum 4 5 9
# c. Tabel Kontingensi Y vs X3 (Lingkar Dada)
tabel_Y_X3 <- table(data_clean$Y_kat, data_clean$X3_kat)
cat("\n=== TABEL KONTINGENSI: Y vs X3 ===\n")
##
## === TABEL KONTINGENSI: Y vs X3 ===
print(addmargins(tabel_Y_X3))
##
## X3 Rendah (< Median) X3 Tinggi (>= Median) Sum
## Y Rendah (< Median) 3 1 4
## Y Tinggi (>= Median) 1 4 5
## Sum 4 5 9
# 1. Import dan bersihkan data
library(readxl)
data_raw <- read_excel("bayi.xlsx")
data_clean <- as.data.frame(lapply(data_raw[1:9, c("Y", "X1", "X2", "X3")], as.numeric))
# 2. Hitung Matriks Korelasi
matriks_korelasi <- cor(data_clean)
# 3. Tampilkan Heatmap (Otomatis buka tab Plots)
heatmap(matriks_korelasi,
Rowv = NA, Colv = NA, # Matikan dendrogram
col = cm.colors(256), # Skala warna
scale = "none", # Jangan ubah skala
main = "Heatmap Matriks Korelasi")

# 1. Import dan bersihkan data
library(readxl)
data_raw <- read_excel("bayi.xlsx")
data_clean <- as.data.frame(lapply(data_raw[1:9, c("Y", "X1", "X2", "X3")], as.numeric))
# 2. Hitung Matriks Korelasi
matriks_korelasi <- cor(data_clean)
# 3. Tampilkan Heatmap (Otomatis buka tab Plots)
heatmap(matriks_korelasi,
Rowv = NA, Colv = NA, # Matikan dendrogram
col = cm.colors(256), # Skala warna
scale = "none", # Jangan ubah skala
main = "Heatmap Matriks Korelasi")

# 1. Siapkan data dan matriks korelasi
library(readxl)
data_raw <- read_excel("bayi.xlsx")
data_clean <- as.data.frame(lapply(data_raw[1:9, c("Y", "X1", "X2", "X3")], as.numeric))
mat <- cor(data_clean)
# 2. Gambar heatmap dasar
image(1:ncol(mat), 1:nrow(mat), t(mat[nrow(mat):1, ]),
col = cm.colors(12), axes = FALSE, xlab = "", ylab = "",
main = "Heatmap Matriks Korelasi")
# 3. Tambahkan label sumbu (X dan Y)
axis(1, at = 1:ncol(mat), labels = colnames(mat))
axis(2, at = 1:nrow(mat), labels = rev(rownames(mat)), las = 2)
# 4. Tambahkan angka korelasi di dalam kotak
for (x in 1:ncol(mat)) {
for (y in 1:nrow(mat)) {
# Ambil nilai korelasi dan bulatkan
val <- round(mat[nrow(mat) - y + 1, x], 3)
text(x, y, labels = sprintf("%.3f", val), col = "black", font = 2)
}
}

if(!require(corrplot)) install.packages("corrplot")
## Loading required package: corrplot
## Warning: package 'corrplot' was built under R version 4.5.3
## corrplot 0.95 loaded
library(corrplot)
mat <- cor(data_clean)
# Render heatmap + angka
corrplot(mat,
method = "color", # Menampilkan warna penuh dalam kotak
addCoef.col = "white", # Menampilkan ANGKA (warna putih/hitam)
number.cex = 0.9, # Ukuran font angka
number.digits = 3, # Jumlah angka di belakang koma
tl.col = "black", # Warna teks label variabel
mar = c(0, 0, 2, 0),
main = "Heatmap Korelasi")

if(!require(pheatmap)) install.packages("pheatmap")
## Loading required package: pheatmap
## Warning: package 'pheatmap' was built under R version 4.5.3
library(pheatmap)
mat <- cor(data_clean)
pheatmap(mat,
display_numbers = TRUE, # Menampilkan angka di dalam sel
number_format = "%.3f", # Format 3 desimal
fontsize_number = 10, # Ukuran angka
cluster_rows = FALSE, # Matikan urutan pohon (dendrogram)
cluster_cols = FALSE,
main = "Heatmap Matriks Korelasi")

# =============================================================
# 1. LOAD LIBRARY & DATA
# =============================================================
if(!require(readxl)) install.packages("readxl")
if(!require(Hmisc)) install.packages("Hmisc") # Untuk menghitung p-value
## Loading required package: Hmisc
## Warning: package 'Hmisc' was built under R version 4.5.3
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
library(readxl)
library(Hmisc)
# Membaca data
data_raw <- read_excel("bayi.xlsx")
data_clean <- as.data.frame(lapply(data_raw[1:9, c("Y", "X1", "X2", "X3")], as.numeric))
# =============================================================
# 2. HITUNG KORELASI & P-VALUE
# =============================================================
hasil <- rcorr(as.matrix(data_clean))
cat("=== MATRIKS KOEFISIEN KORELASI (r) ===\n")
## === MATRIKS KOEFISIEN KORELASI (r) ===
print(round(hasil$r, 4))
## Y X1 X2 X3
## Y 1.0000 0.9471 0.7611 0.5603
## X1 0.9471 1.0000 0.5340 0.3900
## X2 0.7611 0.5340 1.0000 0.7845
## X3 0.5603 0.3900 0.7845 1.0000
cat("\n=== MATRIKS P-VALUE (SIGNIFIKANSI) ===\n")
##
## === MATRIKS P-VALUE (SIGNIFIKANSI) ===
print(round(hasil$P, 4))
## Y X1 X2 X3
## Y NA 0.0001 0.0172 0.1166
## X1 0.0001 NA 0.1386 0.2995
## X2 0.0172 0.1386 NA 0.0123
## X3 0.1166 0.2995 0.0123 NA
# =============================================================
# 3. OTOMATISASI INTERPRETASI NILAI KORELASI IN R
# =============================================================
kategori_korelasi <- function(r) {
abs_r <- abs(r)
if (abs_r >= 0.80) return("Sangat Kuat")
else if (abs_r >= 0.60) return("Kuat")
else if (abs_r >= 0.40) return("Sedang/Cukup")
else if (abs_r >= 0.20) return("Rendah")
else return("Sangat Rendah")
}
cat("\n=== RINGKASAN INTERPRETASI HASIL ===\n")
##
## === RINGKASAN INTERPRETASI HASIL ===
vars <- colnames(data_clean)
for (i in 1:(length(vars)-1)) {
for (j in (i+1):length(vars)) {
v1 <- vars[i]
v2 <- vars[j]
r_val <- hasil$r[v1, v2]
p_val <- hasil$P[v1, v2]
kat <- kategori_korelasi(r_val)
# Cek apakah signifikan pada alpha = 0.05
sig <- ifelse(p_val < 0.05, "Signifikan", "Tidak Signifikan")
cat(sprintf("Hubungan %s - %s:\n", v1, v2))
cat(sprintf(" - Nilai r : %.4f (%s)\n", r_val, kat))
cat(sprintf(" - p-value : %.4f (%s)\n\n", p_val, sig))
}
}
## Hubungan Y - X1:
## - Nilai r : 0.9471 (Sangat Kuat)
## - p-value : 0.0001 (Signifikan)
##
## Hubungan Y - X2:
## - Nilai r : 0.7611 (Kuat)
## - p-value : 0.0172 (Signifikan)
##
## Hubungan Y - X3:
## - Nilai r : 0.5603 (Sedang/Cukup)
## - p-value : 0.1166 (Tidak Signifikan)
##
## Hubungan X1 - X2:
## - Nilai r : 0.5340 (Sedang/Cukup)
## - p-value : 0.1386 (Tidak Signifikan)
##
## Hubungan X1 - X3:
## - Nilai r : 0.3900 (Rendah)
## - p-value : 0.2995 (Tidak Signifikan)
##
## Hubungan X2 - X3:
## - Nilai r : 0.7845 (Kuat)
## - p-value : 0.0123 (Signifikan)