grafik <- 1:5
rata2 <- c(0, 2, 5, 10, 1.5)
sd_val <- c(1, 1, 5, 3, 0.1)
# Warna berbeda untuk tiap kurva
warna <- c("blue", "red", "darkgreen", "orange", "purple")
par(mfrow = c(2, 3)) # grid 2 baris x 3 kolom
for (i in 1:5) {
mean_i <- rata2[i]
sd_i <- sd_val[i]
x <- seq(mean_i - 4 * sd_i, mean_i + 4 * sd_i, length = 300)
y <- dnorm(x, mean = mean_i, sd = sd_i)
plot(x, y, type = "l", lwd = 2.5, col = warna[i],
main = paste0("Grafik/Kurva ", grafik[i],
"\nMean=", mean_i, ", SD=", sd_i),
xlab = "Nilai", ylab = "Densitas")
polygon(c(x, rev(x)), c(y, rep(0, length(y))),
col = adjustcolor(warna[i], alpha.f = 0.3), border = NA)
lines(x, y, lwd = 2.5, col = warna[i])
}
par(mfrow = c(1, 1))

x_min <- min(rata2 - 4 * sd_val)
x_max <- max(rata2 + 4 * sd_val)
y_max <- max(dnorm(rata2, mean = rata2, sd = sd_val))
plot(NULL, xlim = c(x_min, x_max), ylim = c(0, y_max * 1.1),
xlab = "Nilai", ylab = "Densitas",
main = "Gabungan 5 Distribusi Normal")
for (i in 1:5) {
curve(dnorm(x, mean = rata2[i], sd = sd_val[i]),
add = TRUE, col = warna[i], lwd = 2.5)
}
legend("topright",
legend = paste0("Kurva ", grafik, " (μ=", rata2, ", σ=", sd_val, ")"),
col = warna, lwd = 2.5, cex = 0.8)

library(ggplot2)
df <- data.frame(grafik = factor(grafik), rata2 = rata2, sd_val = sd_val)
ggplot(df, aes(color = grafik)) +
lapply(1:5, function(i) {
stat_function(fun = dnorm,
args = list(mean = rata2[i], sd = sd_val[i]),
aes(color = factor(grafik[i])),
xlim = c(rata2[i]-4*sd_val[i], rata2[i]+4*sd_val[i]))
}) +
labs(title = "Simulasi Distribusi Normal", x = "Nilai", y = "Densitas",
color = "Grafik/Kurva") +
theme_minimal()
## Warning in stat_function(fun = dnorm, args = list(mean = rata2[i], sd = sd_val[i]), : All aesthetics have length 1, but the data has 5 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## All aesthetics have length 1, but the data has 5 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## All aesthetics have length 1, but the data has 5 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## All aesthetics have length 1, but the data has 5 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## All aesthetics have length 1, but the data has 5 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.

grafik <- 1:5
mu <- c(0, 2, 5, 10, 1.5)
sigma <- c(1, 1, 5, 3, 0.1)
df <- grafik
warna <- c("blue", "red", "darkgreen", "orange", "purple")
par(mfrow = c(2, 3))
for (i in 1:5) {
mu_i <- mu[i]
sigma_i <- sigma[i]
df_i <- df[i]
x <- seq(mu_i - 6 * sigma_i, mu_i + 6 * sigma_i, length = 300)
y <- dt((x - mu_i) / sigma_i, df = df_i) / sigma_i
plot(x, y, type = "l", lwd = 2.5, col = warna[i],
main = paste0("Grafik/Kurva ", grafik[i],
"\ndf=", df_i, ", mu=", mu_i, ", sigma=", sigma_i),
xlab = "Nilai", ylab = "Densitas")
polygon(c(x, rev(x)), c(y, rep(0, length(y))),
col = adjustcolor(warna[i], alpha.f = 0.3), border = NA)
lines(x, y, lwd = 2.5, col = warna[i])
}
par(mfrow = c(1, 1))

x_min <- min(mu - 6 * sigma)
x_max <- max(mu + 6 * sigma)
y_max <- max(sapply(1:5, function(i) dt(0, df[i]) / sigma[i]))
plot(NULL, xlim = c(x_min, x_max), ylim = c(0, y_max * 1.1),
xlab = "Nilai", ylab = "Densitas",
main = "Gabungan 5 Distribusi t")
for (i in 1:5) {
curve(dt((x - mu[i]) / sigma[i], df = df[i]) / sigma[i],
add = TRUE, col = warna[i], lwd = 2.5,
from = mu[i] - 6*sigma[i], to = mu[i] + 6*sigma[i])
}
legend("topright",
legend = paste0("Kurva ", grafik, " (df=", df, ", mu=", mu, ", sigma=", sigma, ")"),
col = warna, lwd = 2.5, cex = 0.75)

mu_1 <- mu[1]; sigma_1 <- sigma[1]; df_1 <- df[1]
x <- seq(mu_1 - 6*sigma_1, mu_1 + 6*sigma_1, length = 300)
y_t <- dt((x - mu_1)/sigma_1, df = df_1) / sigma_1
y_normal <- dnorm(x, mean = mu_1, sd = sigma_1)
plot(x, y_normal, type = "l", lwd = 2.5, col = "black", lty = 2,
xlab = "Nilai", ylab = "Densitas",
main = "Perbandingan Distribusi t vs Normal (Kurva 1)")
lines(x, y_t, lwd = 2.5, col = "blue")
legend("topright", legend = c("Normal", paste0("t (df=", df_1, ")")),
col = c("black", "blue"), lty = c(2, 1), lwd = 2.5)

grafik <- 1:5
df1 <- grafik
df2 <- c(1, 1, 5, 3, 0.1)
warna <- c("blue", "red", "darkgreen", "orange", "purple")
par(mfrow = c(2, 3))
x_batas <- 10
for (i in 1:5) {
df1_i <- df1[i]
df2_i <- df2[i]
x <- seq(0.001, x_batas, length = 400)
y <- df(x, df1 = df1_i, df2 = df2_i)
plot(x, y, type = "l", lwd = 2.5, col = warna[i],
main = paste0("Grafik/Kurva ", grafik[i],
"\ndf1=", df1_i, ", df2=", df2_i),
xlab = "Nilai", ylab = "Densitas", xlim = c(0, x_batas))
polygon(c(x, rev(x)), c(y, rep(0, length(y))),
col = adjustcolor(warna[i], alpha.f = 0.3), border = NA)
lines(x, y, lwd = 2.5, col = warna[i])
}
par(mfrow = c(1, 1))

x <- seq(0.001, x_batas, length = 400)
y_max <- max(sapply(1:5, function(i) max(df(x, df1[i], df2[i]))))
plot(NULL, xlim = c(0, x_batas), ylim = c(0, y_max * 1.1),
xlab = "Nilai", ylab = "Densitas",
main = "Gabungan 5 Distribusi F")
for (i in 1:5) {
curve(df(x, df1 = df1[i], df2 = df2[i]),
add = TRUE, col = warna[i], lwd = 2.5,
from = 0.001, to = x_batas)
}
legend("topright",
legend = paste0("Kurva ", grafik, " (df1=", df1, ", df2=", df2, ")"),
col = warna, lwd = 2.5, cex = 0.8)

grafik <- 1:5
df_val <- grafik
sigma <- c(1, 1, 5, 3, 0.1)
warna <- c("blue", "red", "darkgreen", "orange", "purple")
par(mfrow = c(2, 3))
for (i in 1:5) {
df_i <- df_val[i]
sigma_i <- sigma[i]
batas_atas <- qchisq(0.995, df = df_i) * sigma_i
x <- seq(0.001, batas_atas, length = 400)
y <- dchisq(x / sigma_i, df = df_i) / sigma_i
plot(x, y, type = "l", lwd = 2.5, col = warna[i],
main = paste0("Grafik/Kurva ", grafik[i],
"\ndf=", df_i, ", sigma=", sigma_i),
xlab = "Nilai", ylab = "Densitas")
polygon(c(x, rev(x)), c(y, rep(0, length(y))),
col = adjustcolor(warna[i], alpha.f = 0.3), border = NA)
lines(x, y, lwd = 2.5, col = warna[i])
}
par(mfrow = c(1, 1))

x_batas <- max(sapply(1:5, function(i) qchisq(0.995, df_val[i]) * sigma[i]))
x <- seq(0.001, x_batas, length = 400)
y_max <- max(sapply(1:5, function(i) max(dchisq(x / sigma[i], df_val[i]) / sigma[i])))
plot(NULL, xlim = c(0, x_batas), ylim = c(0, y_max * 1.1),
xlab = "Nilai", ylab = "Densitas",
main = "Gabungan 5 Distribusi Chi-Square")
for (i in 1:5) {
curve(dchisq(x / sigma[i], df = df_val[i]) / sigma[i],
add = TRUE, col = warna[i], lwd = 2.5,
from = 0.001, to = x_batas)
}
legend("topright",
legend = paste0("Kurva ", grafik, " (df=", df_val, ", sigma=", sigma, ")"),
col = warna, lwd = 2.5, cex = 0.8)

grafik <- 1:5
mean_val <- c(0, 2, 5, 10, 1.5)
sigma <- c(1, 1, 5, 3, 0.1)
var_val <- sigma^2
warna <- c("blue", "red", "darkgreen", "orange", "purple")
n_val <- numeric(5)
p_val <- numeric(5)
for (i in 1:5) {
mu <- mean_val[i]
vr <- var_val[i]
if (mu <= 0 || vr >= mu) {
cat("Grafik", i, ": var >= mean atau mean<=0 -> TIDAK VALID untuk binomial,",
"pakai fallback p = 0.5\n")
p_init <- 0.5
} else {
p_init <- 1 - vr / mu
}
n_i <- if (mu > 0) max(1, round(mu / p_init)) else 0
p_i <- if (n_i > 0) min(max(mu / n_i, 0), 1) else 0
n_val[i] <- n_i
p_val[i] <- p_i
}
## Grafik 1 : var >= mean atau mean<=0 -> TIDAK VALID untuk binomial, pakai fallback p = 0.5
## Grafik 3 : var >= mean atau mean<=0 -> TIDAK VALID untuk binomial, pakai fallback p = 0.5
cat("\nRingkasan parameter hasil metode momen:\n")
##
## Ringkasan parameter hasil metode momen:
print(data.frame(Grafik = grafik, Mean = mean_val, Var = var_val,
n = n_val, p = round(p_val, 4),
Var_tercapai = round(n_val * p_val * (1 - p_val), 4)))
## Grafik Mean Var n p Var_tercapai
## 1 1 0.0 1.00 0 0.00 0.000
## 2 2 2.0 1.00 4 0.50 1.000
## 3 3 5.0 25.00 10 0.50 2.500
## 4 4 10.0 9.00 100 0.10 9.000
## 5 5 1.5 0.01 2 0.75 0.375
par(mfrow = c(2, 3))
for (i in 1:5) {
n_i <- n_val[i]
p_i <- p_val[i]
if (n_i == 0) {
plot.new()
title(main = paste0("Grafik/Kurva ", grafik[i], "\n(mean=0, degenerate)"))
text(0.5, 0.5, "Tidak ada distribusi\n(mean asli = 0)")
next
}
x <- 0:n_i
y <- dbinom(x, size = n_i, prob = p_i)
barplot(y, names.arg = x, col = warna[i],
main = paste0("Grafik/Kurva ", grafik[i],
"\nn=", n_i, ", p=", round(p_i, 3)),
xlab = "Jumlah sukses (x)", ylab = "Peluang")
}
par(mfrow = c(1, 1))

x_max <- max(n_val)
plot(NULL, xlim = c(0, x_max), ylim = c(0, 0.6),
xlab = "Jumlah sukses (x)", ylab = "Peluang",
main = "Gabungan 5 Distribusi Binomial")
for (i in 1:5) {
if (n_val[i] == 0) next
x <- 0:n_val[i]
y <- dbinom(x, size = n_val[i], prob = p_val[i])
lines(x, y, type = "b", col = warna[i], lwd = 2, pch = 16)
}
legend("topright",
legend = paste0("Kurva ", grafik, " (n=", n_val, ", p=", round(p_val, 3), ")"),
col = warna, lwd = 2, pch = 16, cex = 0.75)
