# Parameter distribusi normal
mu <- 10
sigma <- 2

# Membuat rentang nilai X
x <- seq(mu - 4*sigma, mu + 4*sigma, length.out = 1000)

# Menghitung kepadatan distribusi normal
y <- dnorm(x, mean = mu, sd = sigma)

# Membuat grafik
plot(x, y,
     type = "l",
     lwd = 2,
     main = "Grafik Distribusi Normal",
     xlab = "Nilai X",
     ylab = "Kepadatan",
     col = "blue")

# ============================================================
# Visualisasi: Poisson vs Binomial Negatif & Uniform Diskrit
# ============================================================
# Package yang dibutuhkan:
# install.packages(c("ggplot2", "tidyr"))

library(ggplot2)
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.5.3
# ------------------------------------------------------------
# 1. Poisson vs Binomial Negatif (mean sama = 6, varians beda)
#    -> ilustrasi overdispersi
# ------------------------------------------------------------

x <- 0:25
mean_target <- 6

df1 <- data.frame(
  x = x,
  "Binomial Negatif (r=0.5, mean=6)" = dnbinom(x, size = 0.5, mu = mean_target),
  "Binomial Negatif (r=2, mean=6)"   = dnbinom(x, size = 2,   mu = mean_target),
  "Poisson (lambda=6)"               = dpois(x, lambda = mean_target),
  check.names = FALSE
)

df1_long <- pivot_longer(
  df1, cols = -x,
  names_to = "Distribusi", values_to = "Probabilitas"
)

p1 <- ggplot(df1_long, aes(x = x, y = Probabilitas,
                            color = Distribusi, linetype = Distribusi)) +
  geom_line(linewidth = 0.9) +
  geom_point(size = 1.6) +
  scale_color_manual(values = c("#4C72B0", "#55A868", "#333333")) +
  labs(
    title = "Poisson vs Binomial Negatif",
    subtitle = "Mean sama (6), varians berbeda -> overdispersi",
    x = "x (count)",
    y = "P(X = x)"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    legend.position = "bottom",
    legend.title = element_blank(),
    plot.title = element_text(face = "bold")
  )

print(p1)

# ------------------------------------------------------------
# 2. Distribusi Uniform Diskrit — hasil lemparan dadu (1-6)
# ------------------------------------------------------------

df2 <- data.frame(
  x = factor(1:6),
  Probabilitas = rep(1/6, 6)
)

p2 <- ggplot(df2, aes(x = x, y = Probabilitas)) +
  geom_col(fill = "#A9C4D8", width = 0.6) +
  geom_hline(yintercept = 1/6, linetype = "dashed", color = "grey40") +
  labs(
    title = "Distribusi Uniform Diskrit",
    subtitle = "Contoh: hasil lemparan dadu (1-6)",
    x = "Mata dadu",
    y = "P(X = x)"
  ) +
  ylim(0, 0.25) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold"))

print(p2)

# Simpan sebagai gambar (opsional):
# ggsave("poisson_vs_binomneg.png", p1, width = 7, height = 5, dpi = 300)
# ggsave("uniform_diskrit.png", p2, width = 6, height = 4, dpi = 300)
# ============================================================
# Simulasi Distribusi Normal
# Kurva 1-5 dengan rata-rata (mu) dan simpangan baku (sigma) berbeda
# ============================================================
# install.packages("ggplot2")
library(ggplot2)

# Data dari tabel
df_param <- data.frame(
  kurva = 1:5,
  mu    = c(0, 2, 5, 10, 1.5),
  sigma = c(1, 1, 5, 3, 0.1)
)

# Rentang x yang mencakup seluruh kurva (+-4 simpangan baku)
x_min <- min(df_param$mu - 4 * df_param$sigma)
x_max <- max(df_param$mu + 4 * df_param$sigma)
x_seq <- seq(x_min, x_max, length.out = 1000)

# Hitung densitas f(x) untuk tiap kurva
df_dens <- do.call(rbind, lapply(seq_len(nrow(df_param)), function(i) {
  data.frame(
    kurva = factor(df_param$kurva[i]),
    label = sprintf("Kurva %d (mu=%.3g, sigma=%.3g)",
                     df_param$kurva[i], df_param$mu[i], df_param$sigma[i]),
    x = x_seq,
    density = dnorm(x_seq, mean = df_param$mu[i], sd = df_param$sigma[i])
  )
}))

# ------------------------------------------------------------
# 1. Semua kurva dalam satu grafik (overlay)
# ------------------------------------------------------------
p1 <- ggplot(df_dens, aes(x = x, y = density, color = label)) +
  geom_line(linewidth = 1) +
  labs(
    title = "Simulasi Distribusi Normal",
    subtitle = "Perbandingan kurva dengan mu dan sigma berbeda",
    x = "x",
    y = "Densitas f(x)"
  ) +
  theme_minimal(base_size = 12) +
  theme(legend.position = "bottom", legend.title = element_blank())

print(p1)

# ------------------------------------------------------------
# 2. Kurva terpisah per panel (skala bebas)
#    -> lebih jelas karena sigma sangat bervariasi (0.1 s.d. 5),
#       sehingga di grafik overlay kurva sigma kecil akan
#       tampak jauh lebih tinggi/tajam dan menutupi yang lain
# ------------------------------------------------------------
p2 <- ggplot(df_dens, aes(x = x, y = density, color = label)) +
  geom_line(linewidth = 1) +
  facet_wrap(~label, scales = "free", ncol = 2) +
  labs(
    title = "Simulasi Distribusi Normal (per kurva)",
    x = "x",
    y = "Densitas f(x)"
  ) +
  theme_minimal(base_size = 11) +
  theme(legend.position = "none")

print(p2)

# Simpan sebagai gambar (opsional):
# ggsave("normal_overlay.png", p1, width = 8, height = 5, dpi = 300)
# ggsave("normal_facet.png", p2, width = 8, height = 6, dpi = 300)