# Data
lama <- c(50, 55, 48, 60, 52, 58, 45, 53, 56, 59)
baru <- c(48, 50, 47, 55, 53, 54, 40, 52, 56, 56)
no_mesin <- 1:10
# Plot
library(ggplot2)
library(tidyr)
df <- data.frame(Mesin = factor(no_mesin),
Lama = lama,
Baru = baru) %>%
pivot_longer(-Mesin, names_to = "Pelumas", values_to = "Konsumsi")
ggplot(df, aes(x = Mesin, y = Konsumsi, fill = Pelumas)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Perbandingan Konsumsi Energi per Mesin",
y = "kWh/ton", x = "Mesin") +
theme_minimal()
library(tidyr)
library(ggplot2)
# Data
df_paired <- data.frame(
Mesin = 1:10,
Lama = lama,
Baru = baru
)
# Ubah ke format long
df_long <- pivot_longer(df_paired,
cols = c(Lama, Baru),
names_to = "Pelumas",
values_to = "Konsumsi")
# Atur urutan faktor agar Lama di kiri, Baru di kanan
df_long$Pelumas <- factor(df_long$Pelumas, levels = c("Lama", "Baru"))
# Plot
ggplot(df_long, aes(x = Pelumas, y = Konsumsi, group = Mesin)) +
geom_line(color = "gray") +
geom_point(size = 3, aes(color = Pelumas)) +
labs(title = "Perubahan Konsumsi Energi per Mesin",
x = "Pelumas", y = "Konsumsi Energi (kWh/ton)") +
theme_minimal()
dfree <- 9
x_vals <- seq(-4, 4, 0.01)
t_dist <- dt(x_vals, df = dfree)
plot(x_vals, t_dist, type = "l", lwd = 2, col = "black",
main = "Distribusi t dengan Area Kritis",
ylab = "Density", xlab = "t")
# Area kritis
crit_val <- qt(0.975, dfree)
abline(v = c(-crit_val, crit_val), col = "red", lty = 2)
abline(v = 3.56, col = "blue", lwd = 2)
legend("topright", legend = c("Batas Kritis", "t Hitung"),
col = c("red", "blue"), lty = c(2,1), lwd = 2)
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1f4QWCu7xCEEKa8M7bwJR0gxbi9Nhcuyt?usp=drive_link
library(ggplot2)
# Data
x1 <- c(4.0, 5.5, 4.2, 5.3, 4.5, 5.0, 4.6, 5.1) # BioSubur
x2 <- c(5.2, 4.5, 5.5, 4.8, 5.0, 5.3, 4.6, 5.4, 4.7, 5.0) # NutriPrima
df <- data.frame(
Pupuk = factor(c(rep("BioSubur", length(x1)), rep("NutriPrima", length(x2))),
levels = c("BioSubur", "NutriPrima")),
Panen = c(x1, x2)
)
ggplot(df, aes(x = Pupuk, y = Panen, fill = Pupuk)) +
geom_boxplot(alpha = 0.6, outlier.shape = NA) +
geom_jitter(width = 0.15, size = 2, alpha = 0.8) +
labs(title = "Sebaran Hasil Panen Tomat per Pupuk",
x = "Jenis Pupuk", y = "Hasil Panen (kg/petak)") +
theme_minimal() +
theme(legend.position = "none")
suppressPackageStartupMessages(library(dplyr))
# Hitung rata-rata dan SD/SEM
summary_df <- df %>%
group_by(Pupuk) %>%
summarise(
Mean = mean(Panen),
SD = sd(Panen),
N = n(),
SEM = SD / sqrt(N)
)
# Plot
ggplot(summary_df, aes(x = Pupuk, y = Mean, fill = Pupuk)) +
geom_bar(stat = "identity", width = 0.6, alpha = 0.7) +
geom_errorbar(aes(ymin = Mean - SEM, ymax = Mean + SEM), width = 0.2) +
labs(title = "Rata-rata Hasil Panen dengan Error Bar (SEM)",
x = "Jenis Pupuk", y = "Rata-rata Panen (kg/petak)") +
theme_minimal() +
theme(legend.position = "none")
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1n2MZMTy9K-2FqkzucCEkohJnXrk1lmuC?usp=drive_link
library(ggplot2)
df <- 8
t_hit <- 1.333
t_crit <- qt(0.95, df) # alpha=0.05 satu sisi kanan
# buat data untuk kurva distribusi t
x <- seq(-4, 4, length.out = 1000)
y <- dt(x, df)
data_t <- data.frame(x = x, y = y)
ggplot(data_t, aes(x, y)) +
geom_line(linewidth = 1, color = "blue") +
geom_area(data = subset(data_t, x >= t_crit), aes(x, y), fill = "red", alpha = 0.3) +
geom_vline(xintercept = t_crit, color = "red", linetype = "dashed", linewidth = 1) +
geom_vline(xintercept = t_hit, color = "darkgreen", linetype = "dashed", linewidth = 1) +
annotate("text", x = t_crit + 0.4, y = 0.2, label = "t kritis", color = "red", size = 5) +
annotate("text", x = t_hit, y = 0.15, label = "t hitung", color = "darkgreen", size = 5) +
labs(title = "Distribusi t (df=8) dan Posisi Statistik Uji",
subtitle = "Uji satu arah kanan, alpha=0.05",
x = "t value",
y = "Density") +
theme_minimal()
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1uTmRr3oY-IQcTtD_BSH4fnuQaSiWx7Jz?usp=drive_link
library(ggplot2)
suppressPackageStartupMessages(library(gridExtra))
x <- c(35, 40, 48, 55, 60, 65, 70, 75, 82, 88, 95, 100)
df <- data.frame(skor = x)
# Histogram dan density bebas warning
p1 <- ggplot(df, aes(x = skor)) +
geom_histogram(aes(y = after_stat(density)), bins = 6,
fill = "lightblue", color = "black", alpha = 0.7) +
geom_density(color = "red", linewidth = 1) +
labs(title = "Distribusi Skor Sikap Responden",
x = "Skor Sikap", y = "Density") +
theme_minimal()
# Boxplot
p2 <- ggplot(df, aes(y = skor)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Boxplot Skor Sikap Responden",
y = "Skor Sikap") +
theme_minimal()
# Chi-square plot
df_chisq <- data.frame(x = seq(0, 40, length.out = 1000))
df_chisq$y <- dchisq(df_chisq$x, df = 11)
p3 <- ggplot(df_chisq, aes(x = x, y = y)) +
geom_line(color = "blue", linewidth = 1) +
geom_vline(xintercept = 31.49, color = "red", linetype = "dashed", linewidth = 1) +
geom_vline(xintercept = 17.28, color = "darkgreen", linetype = "dotted", linewidth = 1) +
annotate("text", x = 31.5, y = 0.05, label = "Statistik Uji = 31.49", color = "red", hjust = 0) +
annotate("text", x = 17.5, y = 0.07, label = "Nilai Kritis = 17.28", color = "darkgreen", hjust = 0) +
labs(title = "Distribusi Chi-square (df = 11)",
x = expression(chi^2), y = "Density") +
theme_minimal()
# Tampilkan semua grafik
grid.arrange(p1, p2, p3, nrow = 3)
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1gmz9yRq-J1x65MOqN_v7nblagKFoJRQ9?usp=drive_link
# Data diketahui
mu0 <- 40 # nilai hipotesis nol
sigma <- 3 # simpangan baku populasi
n <- 36 # ukuran sampel
x_bar <- 41.2 # rata-rata sampel
alpha <- 0.05
# Nilai kritis untuk uji dua arah
z_krit <- qnorm(1 - alpha/2)
# Rentang nilai x
x <- seq(mu0 - 4*sigma, mu0 + 4*sigma, length.out = 1000)
se <- sigma / sqrt(n)
y <- dnorm(x, mean = mu0, sd = se)
# Plot distribusi normal
plot(x, y, type = "l", lwd = 2, col = "black",
ylab = "Kerapatan", xlab = "Kekuatan Tekan (MPa)",
main = "Uji Hipotesis Dua Arah – Distribusi Normal")
# Daerah penolakan
x_reject_left <- x[x <= mu0 - z_krit * se]
y_reject_left <- y[x <= mu0 - z_krit * se]
polygon(c(x_reject_left, rev(x_reject_left)),
c(y_reject_left, rep(0, length(y_reject_left))),
col = rgb(1, 0, 0, 0.3), border = NA)
x_reject_right <- x[x >= mu0 + z_krit * se]
y_reject_right <- y[x >= mu0 + z_krit * se]
polygon(c(x_reject_right, rev(x_reject_right)),
c(y_reject_right, rep(0, length(y_reject_right))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis rata-rata sampel
abline(v = x_bar, col = "blue", lwd = 2, lty = 2)
# Tambahkan legenda
legend("topright", legend = c("Distribusi Normal", "Daerah Tolak Hâ‚€", "Rata-rata Sampel"),
col = c("black", rgb(1, 0, 0, 0.3), "blue"), lwd = c(2, 10, 2), lty = c(1, NA, 2), pch = c(NA, 15, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1Y4hWlU1nDdI1S_KOOy-JTRakMsj65upo?usp=drive_link
# Data diketahui
n <- 300
x <- 87
phat <- x / n # proporsi sampel
p0 <- 0.35 # proporsi hipotesis nol
alpha <- 0.10
# Statistik uji
z <- (phat - p0) / sqrt(p0 * (1 - p0) / n)
z_krit <- qnorm(alpha) # karena uji satu sisi kiri
# Rentang untuk x-axis (z-score)
z_range <- seq(-4, 4, length.out = 1000)
y <- dnorm(z_range)
# Plot distribusi normal standar
plot(z_range, y, type = "l", lwd = 2, col = "black",
xlab = "Z", ylab = "Kerapatan",
main = "Uji Proporsi – Uji Satu Sisi Kiri")
# Daerah tolak (area merah)
x_reject <- z_range[z_range <= z_krit]
y_reject <- y[z_range <= z_krit]
polygon(c(x_reject, rev(x_reject)),
c(y_reject, rep(0, length(y_reject))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis z hitung
abline(v = z, col = "blue", lwd = 2, lty = 2)
# Legenda
legend("topright", legend = c("Distribusi Normal", "Daerah Tolak Hâ‚€", "Z Hitung"),
col = c("black", rgb(1, 0, 0, 0.3), "blue"),
lwd = c(2, 10, 2), lty = c(1, NA, 2), pch = c(NA, 15, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1nrHDURogNR-4YyorrBGW4fW8LAjHLetD?usp=drive_link
# Diketahui
xbar1 <- 75.004
xbar2 <- 75.015
sigma1_sq <- 0.0025
sigma2_sq <- 0.0036
n1 <- 10
n2 <- 12
alpha <- 0.05
# Statistik uji
z <- (xbar1 - xbar2) / sqrt(sigma1_sq / n1 + sigma2_sq / n2)
# Nilai kritis
z_crit <- qnorm(1 - alpha/2)
# Rentang z
z_vals <- seq(-4, 4, length.out = 1000)
density_vals <- dnorm(z_vals)
# Plot distribusi normal standar
plot(z_vals, density_vals, type = "l", lwd = 2, col = "black",
xlab = "Z", ylab = "Kerapatan",
main = "Uji Z Dua Sampel – Uji Dua Arah")
# Daerah tolak H0 di dua sisi
x_left <- z_vals[z_vals <= -z_crit]
y_left <- density_vals[z_vals <= -z_crit]
polygon(c(x_left, rev(x_left)), c(y_left, rep(0, length(y_left))),
col = rgb(1, 0, 0, 0.3), border = NA)
x_right <- z_vals[z_vals >= z_crit]
y_right <- density_vals[z_vals >= z_crit]
polygon(c(x_right, rev(x_right)), c(y_right, rep(0, length(y_right))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis z hitung
abline(v = z, col = "blue", lwd = 2, lty = 2)
# Legenda
legend("topright", legend = c("Distribusi Normal", "Daerah Tolak Hâ‚€", "Z Hitung"),
col = c("black", rgb(1, 0, 0, 0.3), "blue"),
lwd = c(2, 10, 2), lty = c(1, NA, 2), pch = c(NA, 15, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1pif5C8g0iXQnJXGaqzI3KWydgWz8aRWQ?usp=drive_link
# Diketahui
n1 <- 400; x1 <- 48; p1_hat <- x1 / n1
n2 <- 500; x2 <- 45; p2_hat <- x2 / n2
alpha <- 0.01
# Proporsi gabungan
p_pool <- (x1 + x2) / (n1 + n2)
# Z hitung
z <- (p1_hat - p2_hat) / sqrt(p_pool * (1 - p_pool) * (1/n1 + 1/n2))
# Z kritis
z_crit <- qnorm(1 - alpha)
# Plot distribusi normal standar
z_vals <- seq(-4, 4, length.out = 1000)
density_vals <- dnorm(z_vals)
plot(z_vals, density_vals, type = "l", lwd = 2, col = "black",
xlab = "Z", ylab = "Kerapatan",
main = "Uji Z Dua Proporsi – Satu Sisi Kanan")
# Daerah tolak H0
x_right <- z_vals[z_vals >= z_crit]
y_right <- density_vals[z_vals >= z_crit]
polygon(c(x_right, rev(x_right)), c(y_right, rep(0, length(y_right))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis z hitung
abline(v = z, col = "blue", lwd = 2, lty = 2)
# Legenda
legend("topright", legend = c("Distribusi Normal", "Daerah Tolak Hâ‚€", "Z Hitung"),
col = c("black", rgb(1, 0, 0, 0.3), "blue"),
lwd = c(2, 10, 2), lty = c(1, NA, 2), pch = c(NA, 15, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1Zv6OC16GwpkI8bZkpTPigfQSijKTE9L_?usp=drive_link
# Data
x1 <- c(2650, 2750, 2500, 2800, 2670, 2730, 2530, 2770, 2700)
x2 <- c(2600, 2700, 2450, 2730, 2530, 2670, 2550)
n1 <- length(x1)
n2 <- length(x2)
mean1 <- mean(x1)
mean2 <- mean(x2)
var1 <- var(x1)
var2 <- var(x2)
# Pooled variance
sp2 <- ((n1 - 1)*var1 + (n2 - 1)*var2) / (n1 + n2 - 2)
# t hitung
t_hitung <- (mean1 - mean2) / sqrt(sp2 * (1/n1 + 1/n2))
# Derajat bebas dan nilai kritis
df <- n1 + n2 - 2
alpha <- 0.01
t_kritis <- qt(1 - alpha, df)
# Plot distribusi t
t_vals <- seq(-4, 4, length.out = 1000)
density_vals <- dt(t_vals, df)
plot(t_vals, density_vals, type = "l", lwd = 2, col = "black",
xlab = "t", ylab = "Kerapatan",
main = "Uji t Dua Sampel – Satu Sisi Kanan")
# Daerah tolak H0
x_reject <- t_vals[t_vals >= t_kritis]
y_reject <- dt(x_reject, df)
polygon(c(x_reject, rev(x_reject)), c(y_reject, rep(0, length(y_reject))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis t hitung
abline(v = t_hitung, col = "blue", lwd = 2, lty = 2)
# Legenda
legend("topright", legend = c("Distribusi t", "Daerah Tolak Hâ‚€", "t Hitung"),
col = c("black", rgb(1, 0, 0, 0.3), "blue"),
lwd = c(2, 10, 2), lty = c(1, NA, 2), pch = c(NA, 15, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1cIfRewuM7WKi2X4QWFy_O1t1Hm2Qyf5M?usp=drive_link
# Parameter
mu_0 <- 1100 # Rata-rata populasi (hipotesis nol)
x_bar <- 1091 # Rata-rata sampel
sigma <- 25 # Standar deviasi populasi
n <- 40 # Ukuran sampel
alpha <- 0.05 # Tingkat signifikansi
# Statistik uji z
z_hit <- (x_bar - mu_0) / (sigma / sqrt(n))
z_kritis <- qnorm(alpha, lower.tail = TRUE)
# Vektor untuk distribusi normal standar
z_vals <- seq(-4, 4, length.out = 1000)
densitas <- dnorm(z_vals)
# Plot
plot(z_vals, densitas, type = "l", lwd = 2, col = "black",
ylab = "Kerapatan", xlab = "z",
main = "Uji Z Satu Sisi Kiri – Efektivitas Sistem Pendinginan Baru")
# Daerah penolakan H0 (warna merah)
z_reject <- z_vals[z_vals <= z_kritis]
polygon(c(z_reject, rev(z_reject)),
c(dnorm(z_reject), rep(0, length(z_reject))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis vertikal untuk z_hitung
abline(v = z_hit, col = "blue", lwd = 2, lty = 2)
# Legenda
legend("topright", legend = c("Distribusi Z", "Daerah Tolak Hâ‚€", "z Hitung"),
col = c("black", rgb(1, 0, 0, 0.3), "blue"),
lwd = c(2, 10, 2), lty = c(1, NA, 2), pch = c(NA, 15, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1sok1CFqTHseCNA0g3ygLSQ22BMYwxbUl?usp=drive_link
# Parameter dari data
s1_sq <- 0.0002182 # Ragam Mesin M1 (lebih besar)
s2_sq <- 0.0000622 # Ragam Mesin M2 (lebih kecil)
f_stat <- s1_sq / s2_sq
# Derajat bebas
df1 <- 13 - 1 # n1 - 1
df2 <- 10 - 1 # n2 - 1
alpha <- 0.10
# Nilai kritis F (satu sisi kanan)
f_critical <- qf(1 - alpha, df1, df2)
# Plot distribusi F
f_vals <- seq(0, 6, length.out = 1000)
densitas <- df(f_vals, df1, df2)
plot(f_vals, densitas, type = "l", lwd = 2, col = "black",
main = "Uji F Satu Sisi Kanan – Perbandingan Ragam Mesin M1 dan M2",
xlab = "Nilai F", ylab = "Kerapatan")
# Area penolakan (daerah kritis)
polygon(c(f_vals[f_vals > f_critical], rev(f_vals[f_vals > f_critical])),
c(densitas[f_vals > f_critical], rep(0, sum(f_vals > f_critical))),
col = rgb(1, 0, 0, 0.3), border = NA)
# Garis vertikal untuk F hitung
abline(v = f_stat, col = "blue", lwd = 2, lty = 2)
# Garis vertikal untuk F kritis
abline(v = f_critical, col = "darkred", lwd = 2, lty = 3)
# Legenda
legend("topright", legend = c("Distribusi F", "Daerah Tolak Hâ‚€", "F Hitung", "F Kritis"),
col = c("black", rgb(1, 0, 0, 0.3), "blue", "darkred"),
lwd = c(2, 10, 2, 2), lty = c(1, NA, 2, 3), pch = c(NA, 15, NA, NA))
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1jqFwgthn8yQsWr3HmNQqmAnalNhIQ3AF?usp=drive_link
# Data skor per metode
metode <- factor(rep(c("A", "B", "C", "D"), times = c(5, 6, 7, 6)))
skor <- c(
75, 80, 72, 78, 70, # Metode A
82, 88, 85, 90, 80, 86, # Metode B
88, 92, 95, 85, 90, 87, 93, # Metode C
78, 82, 80, 75, 85, 77 # Metode D
)
# Buat data frame
data <- data.frame(
Metode = metode,
Skor = skor
)
# Analisis ANOVA
anova_model <- aov(Skor ~ Metode, data = data)
summary(anova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## Metode 3 764.6 254.88 18.31 5.9e-06 ***
## Residuals 20 278.3 13.92
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Plot boxplot
boxplot(Skor ~ Metode,
data = data,
main = "Perbandingan Skor Proyek Akhir Berdasarkan Metode Pengajaran",
xlab = "Metode Pengajaran",
ylab = "Skor Proyek Akhir",
col = c("lightblue", "lightgreen", "lightpink", "lightyellow"),
border = "darkgray")
# Tambahkan garis rata-rata keseluruhan
abline(h = mean(skor), col = "red", lty = 2)
legend("topright", legend = "Rata-rata total", col = "red", lty = 2, bty = "n")
PDF Kasus dan Soal: https://drive.google.com/drive/folders/1orRBxAG1Eh3qzFCj4rb2UcaXngotkZfP?usp=drive_link