Kurva Distribusi Normal Baku

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.6.1
# 1. Parameter Utama
mu <- 0
sigma <- 1

# 2. Membuat Data Frame Halus (1000 titik sampel dari mu - 4*sigma s.d. mu + 4*sigma)
x_vals <- seq(mu - 4 * sigma, mu + 4 * sigma, length.out = 1000)
df_norm <- data.frame(
  x = x_vals,
  y = dnorm(x_vals, mean = mu, sd = sigma)
)

# 3. Membuat Grafik dengan ggplot2
ggplot(df_norm, aes(x = x, y = y)) +
  
  # Layer 1: Isian transparan di bawah kurva
  geom_area(fill = "#3B82F6", alpha = 0.2) +
  
  # Layer 2: Garis utama kurva distribusinya
  geom_line(color = "#1D4ED8", linewidth = 1.2) +
  
  # Layer 3: Garis vertikal penanda Rata-Rata / Mean (mu = 10)
  geom_vline(xintercept = mu, linetype = "dashed", color = "#EF4444", linewidth = 0.9) +
  
  # Layer 4: Garis titik-titik penanda Batas 1 Standar Deviasi (mu - sigma dan mu + sigma)
  geom_vline(xintercept = c(mu - sigma, mu + sigma), linetype = "dotted", color = "#6B7280", linewidth = 0.7) +
  
  # Layer 5: Anotasi Teks di dalam Plot
  annotate("text", x = mu + 0.25, y = dnorm(mu, mu, sigma) * 0.95, 
           label = paste0("Mean (\u03bc) = ", mu), color = "#EF4444", fontface = "bold", hjust = 0) +
  
  annotate("text", x = mu + sigma + 0.2, y = dnorm(mu + sigma, mu, sigma), 
           label = paste0("+1\u03c3 (", mu + sigma, ")"), color = "#4B5563", size = 3.5, hjust = 0) +
  
  annotate("text", x = mu - sigma - 0.2, y = dnorm(mu - sigma, mu, sigma), 
           label = paste0("-1\u03c3 (", mu - sigma, ")"), color = "#4B5563", size = 3.5, hjust = 1) +
  
  # Layer 6: Pengaturan Skala dan Ticks Sumbu X & Y
  scale_x_continuous(breaks = seq(mu - 4 * sigma, mu + 4 * sigma, by = sigma)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
  
  # Layer 7: Judul, Subjudul, dan Label Sumbu
  labs(
    title = "Distribusi Normal N(\u03bc = 10, \u03c3\u00b2 = 4)",
    subtitle = "Fungsi Kepadatan Probabilitas (PDF) dengan Rata-rata = 10 dan Standar Deviasi = 2",
    x = "Nilai Variable (X)",
    y = "Kepadatan (Density)",
    caption = "Dibuat dengan R & ggplot2"
  ) +
  
  # Layer 8: Styling Tema Rapi
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, color = "#111827"),
    plot.subtitle = element_text(color = "#4B5563", margin = margin(b = 12)),
    axis.title = element_text(face = "bold", color = "#374151"),
    axis.text = element_text(color = "#4B5563"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_line(color = "#F3F4F6"),
    panel.grid.major.y = element_line(color = "#F3F4F6")
  )

# 5 Kurva Distribusi Normal dengan Nilai Mu dan Sigma

library(ggplot2)

# 1. Definisi Vektor Parameter (mu dan sigma)
mu_vals    <- c(0, 2, 5, 10, 1.5)
sigma_vals <- c(1, 1, 5, 3, 0.1)

# 2. Buat Label Parameter Berurutan
label_levels <- paste0("μ = ", mu_vals, ", σ = ", sigma_vals)

# 3. Membuat Grid Nilai X yang Sangat Rapat (3000 titik agar kurva sigma = 0.1 mulus)
# Rentang X diatur dari -15 sampai 25 agar mencakup ekor distribusi terlebar (mu = 5, sigma = 5)
x_vals <- seq(-15, 25, length.out = 3000)

# 4. Generate Data Frame Gabungan (Tidy Format)
df_list <- lapply(1:length(mu_vals), function(i) {
  data.frame(
    x = x_vals,
    y = dnorm(x_vals, mean = mu_vals[i], sd = sigma_vals[i]),
    Parameter = factor(label_levels[i], levels = label_levels)
  )
})

df_all <- do.call(rbind, df_list)

# 5. Palet 5 Warna kustom yang Kontras dan Elegan
palet_warna <- c(
  "μ = 0, σ = 1"     = "#2563EB", # Biru
  "μ = 2, σ = 1"     = "#059669", # Hijau
  "μ = 5, σ = 5"     = "#D97706", # Oranye
  "μ = 10, σ = 3"    = "#7C3AED", # Ungu
  "μ = 1.5, σ = 0.1" = "#DC2626"  # Merah
)

# 6. Visualisasi Grafik Bertumpuk dengan ggplot2
ggplot(df_all, aes(x = x, y = y, color = Parameter, fill = Parameter)) +
  
  # Layer 1: Isian area transparan (position = "identity" agar saling bertumpuk, bukan akumulasi)
  geom_area(alpha = 0.15, position = "identity") +
  
  # Layer 2: Garis Kurva Utama
  geom_line(linewidth = 1) +
  
  # Layer 3: Pemetaan Warna kustom
  scale_color_manual(values = palet_warna) +
  scale_fill_manual(values = palet_warna) +
  
  # Layer 4: Pengaturan Skala Sumbu
  scale_x_continuous(breaks = seq(-15, 25, by = 5)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
  
  # Layer 5: Label & Judul
  labs(
    title = "Perbandingan 5 Distribusi Normal",
    subtitle = "Visualisasi pengaruh variasi Rata-rata (\u03bc) dan Standar Deviasi (\u03c3)",
    x = "Nilai Variable (X)",
    y = "Kepadatan (Density)",
    color = "Parameter",
    fill  = "Parameter",
    caption = "Dibuat dengan R & ggplot2"
  ) +
  
  # Layer 6: Styling Tema Publikasi
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 15, color = "#111827"),
    plot.subtitle = element_text(color = "#4B5563", margin = margin(b = 14)),
    axis.title = element_text(face = "bold", color = "#374151"),
    axis.text = element_text(color = "#4B5563"),
    
    # Kustomisasi Kotak Legend
    legend.position = "right",
    legend.title = element_text(face = "bold", size = 10),
    legend.background = element_rect(fill = "#F9FAFB", color = "#E5E7EB", linewidth = 0.5),
    legend.margin = margin(6, 10, 6, 10),
    
    panel.grid.minor = element_blank(),
    panel.grid.major = element_line(color = "#F3F4F6")
  )

# Kurva Distribusi t, F, Chi-Square, Gamma, Weibull, Eksponensial, Pareto

library(ggplot2)

# 1. Set data x
x_val <- seq(0.01, 10, length.out = 500)

# 2. Rumus manual Pareto Tipe I
dpareto <- function(x, xm = 1, alpha = 3) {
  ifelse(x >= xm, (alpha * (xm^alpha)) / (x^(alpha + 1)), 0)
}

# 3. Gabungkan data 8 distribusi kontinu
df_all <- rbind(
  data.frame(x = seq(-4, 4, length.out = 500), y = dt(seq(-4, 4, length.out = 500), df = 5), Distribusi = "t-Student (df=5)"),
  data.frame(x = x_val, y = df(x_val, df1 = 5, df2 = 10), Distribusi = "F (df1=5, df2=10)"),
  data.frame(x = seq(0, 15, length.out = 500), y = dchisq(seq(0, 15, length.out = 500), df = 4), Distribusi = "Chi-Square (df=4)"),
  data.frame(x = x_val, y = dgamma(x_val, shape = 2, rate = 1), Distribusi = "Gamma (shape=2, rate=1)"),
  data.frame(x = seq(0, 4, length.out = 500), y = dweibull(seq(0, 4, length.out = 500), shape = 2, scale = 1), Distribusi = "Weibull (shape=2, scale=1)"),
  data.frame(x = seq(0, 5, length.out = 500), y = dexp(seq(0, 5, length.out = 500), rate = 1), Distribusi = "Eksponensial (rate=1)"),
  data.frame(x = seq(1, 5, length.out = 500), y = dpareto(seq(1, 5, length.out = 500), xm = 1, alpha = 3), Distribusi = "Pareto (xm=1, alpha=3)"),
  data.frame(x = seq(-1, 6, length.out = 500), y = dunif(seq(-1, 6, length.out = 500), min = 0, max = 5), Distribusi = "Uniform (0,5)")
)

# 4. Plot gabungan dengan Facet (dipisah per panel kecil)
ggplot(df_all, aes(x = x, y = y, color = Distribusi, fill = Distribusi)) +
  geom_area(alpha = 0.25, show.legend = FALSE) +
  geom_line(size = 1, show.legend = FALSE) +
  facet_wrap(~ Distribusi, scales = "free", ncol = 4) + # Membagi jadi 8 kotak kecil (2 baris x 4 kolom)
  labs(
    title = "Perbandingan 8 Distribusi Kontinu",
    x = "Nilai X",
    y = "Kerapatan Probabilitas f(x)"
  ) +
  theme_bw() +
  theme(
    strip.background = element_rect(fill = "#E9ECEF"),
    strip.text = element_text(face = "bold", size = 9),
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5)
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

library(ggplot2)

# ------------------------------------------------------------
# 1. Definisi Fungsi Pareto
# ------------------------------------------------------------
dpareto <- function(x, xm = 1, alpha = 3) {
  ifelse(x >= xm, (alpha * (xm^alpha)) / (x^(alpha + 1)), 0)
}

# ------------------------------------------------------------
# 2. Sumbu X Bersama (-4 sampai 15 agar mencakup semua domain)
# ------------------------------------------------------------
x_vals <- seq(-4, 15, length.out = 1000)

# ------------------------------------------------------------
# 3. Membuat Data Frame Gabungan (Tidy Format)
# ------------------------------------------------------------
df_all <- rbind(
  data.frame(x = x_vals, y = dt(x_vals, df = 5),                   Distribusi = "t-Student (df=5)"),
  data.frame(x = x_vals, y = df(x_vals, df1 = 5, df2 = 10),        Distribusi = "F (df1=5, df2=10)"),
  data.frame(x = x_vals, y = dchisq(x_vals, df = 4),               Distribusi = "Chi-Square (df=4)"),
  data.frame(x = x_vals, y = dgamma(x_vals, shape = 2, rate = 1),  Distribusi = "Gamma (shape=2, rate=1)"),
  data.frame(x = x_vals, y = dweibull(x_vals, shape = 2, scale = 1),Distribusi = "Weibull (shape=2, scale=1)"),
  data.frame(x = x_vals, y = dexp(x_vals, rate = 1),               Distribusi = "Eksponensial (rate=1)"),
  data.frame(x = x_vals, y = dpareto(x_vals, xm = 1, alpha = 3),   Distribusi = "Pareto (xm=1, alpha=3)"),
  data.frame(x = x_vals, y = dunif(x_vals, min = 0, max = 5),       Distribusi = "Uniform (min=0, max=5)")
)

# Mengunci urutan label di legenda sesuai keinginan Anda
dist_levels <- c(
  "t-Student (df=5)", "F (df1=5, df2=10)", "Chi-Square (df=4)", 
  "Gamma (shape=2, rate=1)", "Weibull (shape=2, scale=1)", 
  "Eksponensial (rate=1)", "Pareto (xm=1, alpha=3)", "Uniform (min=0, max=5)"
)
df_all$Distribusi <- factor(df_all$Distribusi, levels = dist_levels)

# ------------------------------------------------------------
# 4. Palet Warna Kustom (Sesuai Hex Code Kode Asli Anda)
# ------------------------------------------------------------
palet_warna <- c(
  "t-Student (df=5)"        = "#4361EE",
  "F (df1=5, df2=10)"       = "#F72585",
  "Chi-Square (df=4)"       = "#4CC9F0",
  "Gamma (shape=2, rate=1)"  = "#7209B7",
  "Weibull (shape=2, scale=1)" = "#3A0CA3",
  "Eksponensial (rate=1)"   = "#4895EF",
  "Pareto (xm=1, alpha=3)"  = "#10B981",
  "Uniform (min=0, max=5)"  = "#F59E0B"
)

# ------------------------------------------------------------
# 5. Visualisasi 1 Frame
# ------------------------------------------------------------
ggplot(df_all, aes(x = x, y = y, color = Distribusi, fill = Distribusi)) +
  
  # Layer 1: Isian area transparan bertumpuk
  geom_area(alpha = 0.12, position = "identity") +
  
  # Layer 2: Garis utama kurva
  geom_line(linewidth = 0.9) +
  
  # Layer 3: Pemetaan Warna Kustom
  scale_color_manual(values = palet_warna) +
  scale_fill_manual(values = palet_warna) +
  
  # Layer 4: Penyesuaian Skala
  # Batasi Y hingga 1.2 agar kurva Pareto (puncak y=3) tidak memipihkan kurva lainnya
  coord_cartesian(ylim = c(0, 1.2)) + 
  scale_x_continuous(breaks = seq(-4, 15, by = 2)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
  
  # Layer 5: Judul dan Label
  labs(
    title = "Perbandingan 8 Distribusi Kontinu",
    subtitle = "Digabungkan dalam Satu Sumbu Koordinat",
    x = "Nilai Variable (x)",
    y = "Kepadatan Probabilitas f(x)",
    color = "Jenis Distribusi",
    fill  = "Jenis Distribusi",
    caption = "Dibuat dengan R & ggplot2"
  ) +
  
  # Layer 6: Styling Tema
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 15, color = "#111827"),
    plot.subtitle = element_text(color = "#4B5563", margin = margin(b = 12)),
    axis.title = element_text(face = "bold", color = "#374151"),
    
    # Pengaturan Legenda di Samping
    legend.position = "right",
    legend.title = element_text(face = "bold", size = 10),
    legend.background = element_rect(fill = "#F9FAFB", color = "#E5E7EB", linewidth = 0.5),
    legend.margin = margin(6, 10, 6, 10),
    
    panel.grid.minor = element_blank(),
    panel.grid.major = element_line(color = "#F3F4F6")
  )