# Membuat nilai x
x <- seq(-4, 4, length.out = 100)

# Menghitung nilai distribusi normal
y <- dnorm(x, mean = 0, sd = 1)

# Membuat kurva distribusi normal
plot(x, y,
     type = "l",
     main = "Kurva Distribusi Normal",
     xlab = "Nilai X",
     ylab = "Kepadatan",
     lwd = 2)

# Membuat nilai x
x <- seq(-4, 4, length.out = 500)

# Distribusi normal
y <- dnorm(x, mean = 0, sd = 1)

# Membuat kurva
plot(x, y,
     type = "l",
     lwd = 3,
     col = "blue",
     main = "Kurva Distribusi Normal",
     xlab = "Nilai Z",
     ylab = "Kepadatan")

# Mengisi area di bawah kurva
polygon(c(x, rev(x)),
        c(y, rep(0, length(y))),
        col = "lightblue",
        border = NA)

# Menggambar ulang garis kurva
lines(x, y, lwd = 3, col = "blue")

# Garis tengah / mean
abline(v = 0, col = "red", lwd = 2, lty = 2)

# Keterangan mean
text(0, 0.05, "Mean = 0", col = "red")

# Parameter distribusi
mu <- 10
varians <- 2
sd <- sqrt(varians)

# Membuat nilai x
x <- seq(mu - 4*sd, mu + 4*sd, length.out = 500)

# Nilai distribusi normal
y <- dnorm(x, mean = mu, sd = sd)

# Plot kurva
plot(x, y,
     type = "l",
     lwd = 3,
     col = "blue",
     main = "Kurva Distribusi Normal (μ = 10, Varians = 2)",
     xlab = "Nilai X",
     ylab = "Kepadatan")

# Mengisi area bawah kurva
polygon(c(x, rev(x)),
        c(y, rep(0, length(y))),
        col = "lightblue",
        border = NA)

# Gambar ulang kurva
lines(x, y, lwd = 3, col = "blue")

# Garis tengah (mean)
abline(v = mu, col = "red", lwd = 2, lty = 2)

# Label mean
text(mu, max(y) * 0.95,
     paste("μ =", mu),
     col = "red")

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

mu2 <- 12
var2 <- 2
sd2 <- sqrt(var2)

mu3 <- 14
var3 <- 2
sd3 <- sqrt(var3)

# Nilai x
x <- seq(3, 21, length.out = 500)

# Kurva normal
y1 <- dnorm(x, mu1, sd1)
y2 <- dnorm(x, mu2, sd2)
y3 <- dnorm(x, mu3, sd3)

# Kurva pertama
plot(x, y1,
     type = "l",
     lwd = 3,
     col = "blue",
     main = "Kurva Distribusi Normal",
     xlab = "Nilai X",
     ylab = "Kepadatan")

# Kurva kedua dan ketiga
lines(x, y2, lwd = 3, col = "red")
lines(x, y3, lwd = 3, col = "green")

# Garis tengah masing-masing
abline(v = mu1, col = "blue", lty = 2)
abline(v = mu2, col = "red", lty = 2)
abline(v = mu3, col = "green", lty = 2)

# Keterangan
legend("topright",
       legend = c("μ = 10", "μ = 12", "μ = 14"),
       col = c("blue", "red", "green"),
       lwd = 3)

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

mu2 <- 12
var2 <- 4
sd2 <- sqrt(var2)

mu3 <- 14
var3 <- 1
sd3 <- sqrt(var3)

# Nilai x
x <- seq(3, 21, length.out = 500)

# Distribusi normal
y1 <- dnorm(x, mean = mu1, sd = sd1)
y2 <- dnorm(x, mean = mu2, sd = sd2)
y3 <- dnorm(x, mean = mu3, sd = sd3)

# Kurva pertama
plot(x, y1,
     type = "l",
     lwd = 3,
     col = "blue",
     main = "Kurva Distribusi Normal",
     xlab = "Nilai X",
     ylab = "Kepadatan",
     ylim = c(0, max(y1, y2, y3) * 1.1))

# Kurva kedua dan ketiga
lines(x, y2, lwd = 3, col = "red")
lines(x, y3, lwd = 3, col = "green")

# Garis mean
abline(v = mu1, col = "blue", lty = 2)
abline(v = mu2, col = "red", lty = 2)
abline(v = mu3, col = "green", lty = 2)

# Keterangan
legend("topright",
       legend = c(
         "μ = 10, Var = 2",
         "μ = 12, Var = 4",
         "μ = 14, Var = 1"
       ),
       col = c("blue", "red", "green"),
       lwd = 3,
       lty = 1)

# SIMULASI DISTRIBUSI NORMAL

# Parameter setiap kurva
mu1 <- 1
sigma1 <- 1

mu2 <- 2
sigma2 <- 1

mu3 <- 5
sigma3 <- 5

mu4 <- 10
sigma4 <- 3

mu5 <- 1.50
sigma5 <- 0.10

# Membuat nilai X
x <- seq(-20, 30, length.out = 1000)

# Menghitung distribusi normal
y1 <- dnorm(x, mean = mu1, sd = sigma1)
y2 <- dnorm(x, mean = mu2, sd = sigma2)
y3 <- dnorm(x, mean = mu3, sd = sigma3)
y4 <- dnorm(x, mean = mu4, sd = sigma4)
y5 <- dnorm(x, mean = mu5, sd = sigma5)

# Membuat grafik kurva pertama
plot(x, y1,
     type = "l",
     lwd = 3,
     col = "blue",
     main = "Simulasi Distribusi Normal",
     xlab = "Nilai X",
     ylab = "Kepadatan",
     ylim = c(0, max(y5) * 1.1))

# Menambahkan kurva lainnya
lines(x, y2, col = "red", lwd = 3)
lines(x, y3, col = "green", lwd = 3)
lines(x, y4, col = "purple", lwd = 3)
lines(x, y5, col = "orange", lwd = 3)

# Garis tengah / rata-rata (MU)
abline(v = mu1, col = "blue", lty = 2)
abline(v = mu2, col = "red", lty = 2)
abline(v = mu3, col = "green", lty = 2)
abline(v = mu4, col = "purple", lty = 2)
abline(v = mu5, col = "orange", lty = 2)

# Keterangan kurva
legend("topright",
       legend = c(
         "Kurva 1: μ = 1, σ = 1",
         "Kurva 2: μ = 2, σ = 1",
         "Kurva 3: μ = 5, σ = 5",
         "Kurva 4: μ = 10, σ = 3",
         "Kurva 5: μ = 1,50, σ = 0,10"
       ),
       col = c("blue", "red", "green", "purple", "orange"),
       lwd = 3,
       cex = 0.8)

# SIMULASI DISTRIBUSI NORMAL

# Rata-rata (MU)
mu <- c(1, 2, 5, 10, 1.50)

# Simpangan baku (SIGMA)
sigma <- c(1, 1, 5, 3, 0.10)

# Warna
warna <- c("blue", "red", "green", "purple", "orange")

# Membuat 5 grafik tersusun ke bawah
par(mfrow = c(5, 1),
    mar = c(3, 4, 2, 1))

for (i in 1:5) {

  # Batas X menyesuaikan masing-masing distribusi
  x <- seq(mu[i] - 4*sigma[i],
           mu[i] + 4*sigma[i],
           length.out = 500)

  # Distribusi normal
  y <- dnorm(x,
             mean = mu[i],
             sd = sigma[i])

  # Grafik
  plot(x, y,
       type = "l",
       lwd = 3,
       col = warna[i],
       main = paste("Kurva", i,
                    ": μ =", mu[i],
                    ", σ =", sigma[i]),
       xlab = "Nilai X",
       ylab = "Kepadatan")

  # Area bawah kurva
  polygon(c(x, rev(x)),
          c(y, rep(0, length(y))),
          col = adjustcolor(warna[i], alpha.f = 0.25),
          border = NA)

  # Kurva
  lines(x, y,
        col = warna[i],
        lwd = 3)

  # Garis rata-rata
  abline(v = mu[i],
         col = "black",
         lty = 2,
         lwd = 2)
}

# SIMULASI DISTRIBUSI NORMAL

# Data sesuai tabel
mu <- c(1, 2, 5, 10, 1.50)
sigma <- c(1, 1, 5, 3, 0.10)

# Warna kurva
warna <- c("blue", "red", "green3", "purple", "orange")

# Nilai X
x <- seq(-10, 20, length.out = 2000)

# Grafik kosong
plot(x, rep(0, length(x)),
     type = "n",
     ylim = c(0, 1.15),
     xlim = c(-5, 16),
     main = "Simulasi Distribusi Normal",
     xlab = "Nilai X",
     ylab = "Kepadatan Relatif")

# Membuat 5 kurva
for(i in 1:5) {
  
  # Distribusi normal
  y <- dnorm(x,
             mean = mu[i],
             sd = sigma[i])
  
  # Normalisasi supaya tinggi maksimum = 1
  y <- y / max(y)
  
  # Area bawah kurva
  polygon(c(x, rev(x)),
          c(y, rep(0, length(y))),
          col = adjustcolor(warna[i], alpha.f = 0.15),
          border = NA)
  
  # Kurva
  lines(x, y,
        col = warna[i],
        lwd = 3)
  
  # Garis mean
  abline(v = mu[i],
         col = warna[i],
         lty = 2,
         lwd = 1.5)
}

# Legenda
legend("topright",
       legend = c(
         "μ = 1, σ = 1",
         "μ = 2, σ = 1",
         "μ = 5, σ = 5",
         "μ = 10, σ = 3",
         "μ = 1,50, σ = 0,10"
       ),
       col = warna,
       lwd = 3,
       lty = 1,
       bg = "white",
       cex = 0.8)

# Nilai x
x <- seq(-5, 5, length.out = 1000)

# Derajat bebas
df <- c(1, 2, 5, 10, 30)

# Warna
warna <- c("blue", "red", "green3", "purple", "orange")

# Grafik kosong
plot(x, dt(x, df = df[1]),
     type = "l",
     lwd = 3,
     col = warna[1],
     main = "Kurva Distribusi t",
     xlab = "Nilai t",
     ylab = "Kepadatan",
     ylim = c(0, 0.45))

# Menambahkan kurva lainnya
for(i in 2:length(df)) {
  lines(x,
        dt(x, df = df[i]),
        col = warna[i],
        lwd = 3)
}

# Garis tengah
abline(v = 0, col = "black", lty = 2)

# Legenda
legend("topright",
       legend = paste("df =", df),
       col = warna,
       lwd = 3,
       bg = "white")

df1 <- c(1, 2, 5, 10)
df2 <- c(5, 5, 10, 20)

warna <- c("blue", "red", "green3", "purple")

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

plot(x, df(x, df1[1], df2[1]),
     type = "n",
     main = "Simulasi Distribusi F",
     xlab = "Nilai F",
     ylab = "Kepadatan",
     xlim = c(0, 10),
     ylim = c(0, 1))

for(i in 1:4) {

  y <- df(x, df1[i], df2[i])

  polygon(c(x, rev(x)),
          c(y, rep(0, length(x))),
          col = adjustcolor(warna[i], alpha.f = 0.15),
          border = NA)

  lines(x, y,
        col = warna[i],
        lwd = 3)
}

legend("topright",
       legend = c(
         "df1 = 1, df2 = 5",
         "df1 = 2, df2 = 5",
         "df1 = 5, df2 = 10",
         "df1 = 10, df2 = 20"
       ),
       col = warna,
       lwd = 3,
       bg = "white")

# Derajat bebas
df <- c(1, 2, 5, 10, 20)

# Warna
warna <- c("blue", "red", "green3", "purple", "orange")

# Nilai X
x <- seq(0, 30, length.out = 1000)

# Grafik kosong
plot(x, dchisq(x, df = df[1]),
     type = "l",
     lwd = 3,
     col = warna[1],
     main = "Kurva Distribusi Chi-Square",
     xlab = expression(chi^2),
     ylab = "Kepadatan",
     xlim = c(0, 30),
     ylim = c(0, 0.5))

# Menambahkan kurva lainnya
for(i in 2:length(df)) {
  lines(x,
        dchisq(x, df = df[i]),
        col = warna[i],
        lwd = 3)
}

# Garis putus-putus
abline(v = 0, col = "black", lty = 2)

# Legenda
legend("topright",
       legend = paste("df =", df),
       col = warna,
       lwd = 3,
       bg = "white")

# ==========================================
# GABUNGAN DISTRIBUSI
# Gamma, Weibull, Eksponensial, Pareto, Uniform
# ==========================================

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

# Warna
warna <- c("blue", "red", "green3", "purple", "orange")

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

# Membuat grafik kosong
plot(x, dgamma(x, shape=2, rate=1),
     type="n",
     main="Kurva Distribusi Peluang",
     xlab="X",
     ylab="Kepadatan",
     xlim=c(0,10),
     ylim=c(0,1.1))

# 1. Gamma
lines(x, dgamma(x, shape=2, rate=1),
      col=warna[1], lwd=3)

# 2. Weibull
lines(x, dweibull(x, shape=2, scale=1),
      col=warna[2], lwd=3)

# 3. Eksponensial
lines(x, dexp(x, rate=1),
      col=warna[3], lwd=3)

# 4. Pareto
lines(x, dpareto(x, alpha=3, xm=1),
      col=warna[4], lwd=3)

# 5. Uniform
lines(x, dunif(x, min=0, max=5),
      col=warna[5], lwd=3)

# Legenda
legend("topright",
       legend=c("Gamma",
                "Weibull",
                "Eksponensial",
                "Pareto",
                "Uniform"),
       col=warna,
       lwd=3,
       bg="white")

# ==========================================
# DISTRIBUSI GAMMA, WEIBULL, EKSPONENSIAL,
# PARETO, DAN UNIFORM
# ==========================================

# Membagi layar menjadi 1 baris 5 kolom
par(mfrow=c(2,3))

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

# 1. GAMMA
plot(x, dgamma(x, shape=2, rate=1),
     type="l", lwd=3, col="blue",
     main="Gamma",
     xlab="X", ylab="Kepadatan")

# 2. WEIBULL
plot(x, dweibull(x, shape=2, scale=1),
     type="l", lwd=3, col="red",
     main="Weibull",
     xlab="X", ylab="Kepadatan")

# 3. EKSPONENSIAL
plot(x, dexp(x, rate=1),
     type="l", lwd=3, col="green3",
     main="Eksponensial",
     xlab="X", ylab="Kepadatan")

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

plot(x, dpareto(x),
     type="l", lwd=3, col="purple",
     main="Pareto",
     xlab="X", ylab="Kepadatan")

# 5. UNIFORM
plot(x, dunif(x, min=0, max=5),
     type="l", lwd=3, col="orange",
     main="Uniform",
     xlab="X", ylab="Kepadatan")

# Kembali ke tampilan normal
par(mfrow=c(1,1))