#Membuat kurva distribusi normal

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
# Membuat data untuk sumbu X
df <- data.frame(x = c(-4, 4))

# Membuat kurva menggunakan stat_function
ggplot(df, aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = 0, sd = 1), color = "#2b5c8f", size = 1.2) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "red", size = 0.8) +
  labs(title = "Kurva Distribusi Normal (mu = 0, sigma = 1)",
       x = "Nilai X",
       y = "Kepadatan (Density)") +
  theme_minimal()
## 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.

# Parameter
mu <- 10
variansi <- 2
sd_val <- sqrt(variansi) # Standar deviasi = akar variansi

# Rentang X (sekitar 4 standar deviasi ke kiri dan kanan dari mu)
x_min <- mu - 4 * sd_val
x_max <- mu + 4 * sd_val

# Membuat kurva
curve(dnorm(x, mean = mu, sd = sd_val), 
      from = x_min, to = x_max, 
      col = "darkblue", 
      lwd = 2,
      main = expression(paste("Kurva Distribusi Normal (", mu, " = 10, ", sigma^2, " = 2)")),
      xlab = "Nilai X", 
      ylab = "Kepadatan (Density)")

# Garis tegak merah di titik rata-rata (mu = 10)
abline(v = mu, col = "red", lty = 2, lwd = 1.5)

# Parameter Kurva 1
mu1 <- 10
var1 <- 2
sd1 <- sqrt(var1)

# Parameter Kurva 2
mu2 <- 12
var2 <- 4
sd2 <- sqrt(var2)

# Rentang sumbu X agar mencakup kedua kurva
x_min <- min(mu1 - 4 * sd1, mu2 - 4 * sd2)
x_max <- max(mu1 + 4 * sd1, mu2 + 4 * sd2)

# 1. Kurva Pertama
curve(dnorm(x, mean = mu1, sd = sd1), 
      from = x_min, to = x_max, 
      col = "#2b5c8f", 
      lwd = 2,
      ylim = c(0, max(dnorm(mu1, mu1, sd1), dnorm(mu2, mu2, sd2)) * 1.1),
      main = "Perbandingan Dua Kurva Distribusi Normal",
      xlab = "Nilai X", 
      ylab = "Kepadatan (Density)")

# 2. Kurva Kedua (ditumpuk)
curve(dnorm(x, mean = mu2, sd = sd2), 
      col = "#e74c3c", 
      lwd = 2, 
      add = TRUE)

# Garis putus-putus untuk masing-masing rata-rata (mu)
abline(v = mu1, col = "#2b5c8f", lty = 2, lwd = 1.5)
abline(v = mu2, col = "#e74c3c", lty = 2, lwd = 1.5)

# Legenda
legend("topright", 
       legend = c(bquote(mu[1] == .(mu1) ~ "," ~ sigma[1]^2 == .(var1)),
                  bquote(mu[2] == .(mu2) ~ "," ~ sigma[2]^2 == .(var2))),
       col = c("#2b5c8f", "#e74c3c"), 
       lwd = 2, 
       bty = "n")

library(ggplot2)

# Buat dataframe parameter berdasarkan tabel
params <- data.frame(
  kurva = factor(1:5),
  mu = c(0, 2, 5, 10, 1.5),
  sigma = c(1, 1, 5, 3, 0.1)
)

# Rentang x mencakup seluruh cakupan kurva (dari min mu-4*sigma sampai max mu+4*sigma)
x_min <- min(params$mu - 4 * params$sigma)
x_max <- max(params$mu + 4 * params$sigma)

df <- data.frame(x = c(x_min, x_max))

# Membuat grafik
ggplot(df, aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = 0, sd = 1), aes(color = "Kurva 1 (mu=0, sd=1)"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = 2, sd = 1), aes(color = "Kurva 2 (mu=2, sd=1)"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = 5, sd = 5), aes(color = "Kurva 3 (mu=5, sd=5)"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = 10, sd = 3), aes(color = "Kurva 4 (mu=10, sd=3)"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = 1.5, sd = 0.1), aes(color = "Kurva 5 (mu=1.5, sd=0.1)"), linewidth = 1) +
  labs(title = "SIMULASI DISTRIBUSI NORMAL",
       x = "Nilai X",
       y = "Kepadatan (Density)",
       color = "Kurva / Grafik") +
  theme_minimal()

#Membuat Kurva Dstribusi T

x <- seq(-4, 4, length.out = 1000)
y <- dt(x, df = 5)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi T",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi F

x <- seq(0, 5, length.out = 1000)
y <- df(x, df1 = 5, df2 = 10)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi F",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Chi-Square

x <- seq(0, 20, length.out = 1000)
y <- dchisq(x, df = 5)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Chi-Square",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Gamma

x <- seq(0, 10, length.out = 1000)
y <- dgamma(x, shape = 3, rate = 1.5)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Gamma",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Weibull

x <- seq(0, 10, length.out = 1000)
y <- dweibull(x, shape = 2, scale = 3)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Weibull",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Eksponensial

x <- seq(0, 10, length.out = 1000)
y <- dexp(x, rate = 0.5)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Eksponensial",
     xlab = "x",
     ylab = "f(x)")

#Membuat KUrva Distribusi Pareto

x <- seq(1, 10, length.out = 1000)

alpha <- 3
xm <- 1

y <- alpha * xm^alpha / x^(alpha + 1)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Pareto",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Uniform

x <- seq(-2, 5, length.out = 1000)
y <- dunif(x, min = 0, max = 3)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Uniform",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Beta

x <- seq(0, 1, length.out = 1000)
y <- dbeta(x, shape1 = 2, shape2 = 5)

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Beta",
     xlab = "x",
     ylab = "f(x)")

#Membuat Kurva Distribusi Inverse-Gaussian

x <- seq(0.01, 10, length.out = 1000)

mu <- 2
lambda <- 3

y <- sqrt(lambda / (2 * pi * x^3)) *
     exp(-lambda * (x - mu)^2 / (2 * mu^2 * x))

plot(x, y,
     type = "l",
     main = "Kurva Distribusi Inverse-Gaussian",
     xlab = "x",
     ylab = "f(x)")