#Kurva Distribusi Normal
x <- seq(-4, 4, length.out = 1000)
y <- dnorm(x, mean = 0, sd = 1)

plot(x, y, type = "l",
     main = "Kurva Distribusi Normal",
     xlab = "Nilai",
     ylab = "Kepadatan",
     lwd = 2)

x <- seq(-4, 4, length.out = 1000)
y <- dnorm(x, mean = 0, sd = 1)

plot(x, y, type = "n",
     main = "Kurva Distribusi Normal",
     xlab = "Nilai (z-score)",
     ylab = "Kepadatan",
     ylim = c(0, 0.45))

polygon(c(x, rev(x)), c(y, rep(0, length(y))),
        col = "lightblue", border = NA)

lines(x, y, lwd = 3)

abline(v = c(-3, -2, -1, 0, 1, 2, 3),
       lty = 2, col = "gray50")

abline(v = 0, lwd = 2)

text(0, 0.43, "μ = 0", pos = 3)
text(-1, 0.08, "-1σ", pos = 2)
text(1, 0.08, "+1σ", pos = 4)
text(-2, 0.04, "-2σ", pos = 2)
text(2, 0.04, "+2σ", pos = 4)

#Kurva distribusi normal dengan μ dan varians tertentu
mu <- 10
var <- 2
sd <- sqrt(var)

x <- seq(mu - 4*sd, mu + 4*sd, length.out = 1000)
y <- dnorm(x, mean = mu, sd = sd)

plot(x, y, type = "n",
     main = "Kurva Distribusi Normal (μ = 10, σ² = 2)",
     xlab = "Nilai X",
     ylab = "Kepadatan",
     ylim = c(0, max(y) * 1.15))

polygon(c(x, rev(x)), c(y, rep(0, length(y))),
        col = "lightblue", border = NA)

lines(x, y, lwd = 3)

abline(v = mu, lwd = 2, lty = 2)

abline(v = c(mu-sd, mu+sd, mu-2*sd, mu+2*sd,
             mu-3*sd, mu+3*sd),
       lty = 3, col = "gray50")

text(mu, max(y), "μ = 10", pos = 3)

#Perbandingan kurva normal dengan varians berbeda
x <- seq(0, 20, length.out = 1000)

y1 <- dnorm(x, mean = 10, sd = sqrt(2))
y2 <- dnorm(x, mean = 10, sd = sqrt(4))
y3 <- dnorm(x, mean = 10, sd = sqrt(6))

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

lines(x, y2, lwd = 3, lty = 2)
lines(x, y3, lwd = 3, lty = 3)

abline(v = 10, lty = 2)

legend("topright",
       legend = c("μ = 10, σ² = 2",
                  "μ = 10, σ² = 4",
                  "μ = 10, σ² = 6"),
       lty = c(1, 2, 3), lwd = 3)

#Kurva distribusi normal dengan mean dan varians berbeda
x <- seq(0, 20, length.out = 1000)

y1 <- dnorm(x, mean = 10, sd = sqrt(2))
y2 <- dnorm(x, mean = 11, sd = sqrt(2))
y3 <- dnorm(x, mean = 10, sd = sqrt(4))
y4 <- dnorm(x, mean = 9, sd = sqrt(3))
y5 <- dnorm(x, mean = 12, sd = sqrt(5))

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

lines(x, y2, lwd = 3, lty = 2)
lines(x, y3, lwd = 3, lty = 3)
lines(x, y4, lwd = 3, lty = 4)
lines(x, y5, lwd = 3, lty = 5)

abline(v = c(9, 10, 11, 12), lty = 3, col = "gray")

legend("topright",
       legend = c("μ=10, σ²=2",
                  "μ=11, σ²=2",
                  "μ=10, σ²=4",
                  "μ=9, σ²=3",
                  "μ=12, σ²=5"),
       lty = 1:5,
       lwd = 3)

# Kurva distribusi normal bertumpuk banyak
x <- seq(0, 20, length.out = 1000)

y1 <- dnorm(x, mean = 10, sd = sqrt(2))
y2 <- dnorm(x, mean = 11, sd = sqrt(2))
y3 <- dnorm(x, mean = 10, sd = sqrt(4))
y4 <- dnorm(x, mean = 9, sd = sqrt(3))
y5 <- dnorm(x, mean = 12, sd = sqrt(5))

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

lines(x, y2, lwd = 3, lty = 2, col = "red")
lines(x, y3, lwd = 3, lty = 3, col = "darkgreen")
lines(x, y4, lwd = 3, lty = 4, col = "purple")
lines(x, y5, lwd = 3, lty = 5, col = "orange")

abline(v = c(9, 10, 11, 12), lty = 3, col = "gray")

legend("topright",
       legend = c("μ=10, σ²=2",
                  "μ=11, σ²=2",
                  "μ=10, σ²=4",
                  "μ=9, σ²=3",
                  "μ=12, σ²=5"),
       lty = 1:5,
       lwd = 3,
       col = c("blue", "red", "darkgreen", "purple", "orange"))

#Kurva distribusi normal berdasarkan 3 kolom data
data <- read.table(file.choose(), header = TRUE)

# Mengambil 3 kolom
x1 <- data[[1]]
x2 <- data[[2]]
x3 <- data[[3]]

# Mean dan simpangan baku
mu1 <- mean(x1)
sd1 <- sd(x1)

mu2 <- mean(x2)
sd2 <- sd(x2)

mu3 <- mean(x3)
sd3 <- sd(x3)

# Rentang nilai
x <- seq(min(c(x1, x2, x3)),
         max(c(x1, x2, x3)),
         length.out = 1000)

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

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

lines(x, y2, lwd = 3, lty = 2, col = "red")
lines(x, y3, lwd = 3, lty = 3, col = "darkgreen")

legend("topright",
       legend = names(data),
       lty = 1:3,
       lwd = 3,
       col = c("blue", "red", "darkgreen"))

#Data parameter distribusi
data <- read.table(file.choose(), header = TRUE, sep = "\t")

x <- seq(0.001, 20, length.out = 2000)

y1 <- dnorm(x, mean = data[1,2], sd = data[1,3])
y2 <- dnorm(x, mean = data[2,2], sd = data[2,3])
y3 <- dnorm(x, mean = data[3,2], sd = data[3,3])
y4 <- dnorm(x, mean = data[4,2], sd = data[4,3])
y5 <- dnorm(x, mean = data[5,2], sd = data[5,3])

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

lines(x, y2, lwd = 3, lty = 2, col = "red")
lines(x, y3, lwd = 3, lty = 3, col = "darkgreen")
lines(x, y4, lwd = 3, lty = 4, col = "purple")
lines(x, y5, lwd = 3, lty = 5, col = "orange")

abline(v = c(0, 2, 5, 10, 1.5),
       lty = 3, col = "gray")

legend("topright",
       legend = c("μ=0, σ=1",
                  "μ=2, σ=1",
                  "μ=5, σ=5",
                  "μ=10, σ=3",
                  "μ=1.5, σ=0.5"),
       lty = 1:5,
       lwd = 3,
       col = c("blue", "red", "darkgreen", "purple", "orange"))

#Kurva 11 distribusi probabilitas
data <- read.table(file.choose(),
                   header = TRUE,
                   sep = "\t")

# Rentang nilai X
x <- seq(-5, 20, length.out = 2000)

# Parameter dari data
mu <- data[[2]]
sigma <- data[[3]]

# Distribusi Normal
y1 <- dnorm(x,
            mean = mu[1],
            sd = sigma[1])

# Distribusi t
y2 <- dt(x,
         df = mu[2])

# Distribusi F
y3 <- df(x,
         df1 = mu[3],
         df2 = sigma[3])

# Distribusi Chi-Square
y4 <- dchisq(x,
             df = mu[4])

# Distribusi Gamma
y5 <- dgamma(x,
             shape = mu[5],
             rate = sigma[5])

# Distribusi Weibull
y6 <- dweibull(x,
               shape = mu[3],
               scale = sigma[4])

# Distribusi Eksponensial
y7 <- dexp(x,
           rate = sigma[5])

# Distribusi Pareto
y8 <- ifelse(x >= sigma[3],
             mu[3] * sigma[3]^mu[3] /
               x^(mu[3] + 1),
             0)

# Distribusi Uniform
y9 <- dunif(x,
            min = mu[1],
            max = sigma[1])

# Distribusi Beta
y10 <- ifelse(x >= 0 & x <= 1,
              dbeta(x,
                    shape1 = mu[2],
                    shape2 = sigma[2]),
              0)

# Distribusi Inverse-Gaussian
m <- mu[4]
lambda <- sigma[4]

y11 <- ifelse(x > 0,
              sqrt(lambda / (2 * pi * x^3)) *
                exp(-lambda * (x - m)^2 /
                      (2 * m^2 * x)),
              0)
## Warning in sqrt(lambda/(2 * pi * x^3)): NaNs produced
# Menentukan batas grafik
ymax <- max(c(y1, y2, y3, y4, y5,
              y6, y7, y8, y9, y10, y11),
            na.rm = TRUE)

# Grafik utama
plot(x, y1,
     type = "l",
     lwd = 3,
     col = "blue",
     main = "Perbandingan Distribusi Probabilitas",
     xlab = "Nilai X",
     ylab = "Kepadatan",
     ylim = c(0, ymax * 1.1))

# Menambahkan kurva
lines(x, y2, lwd = 3, lty = 2, col = "red")
lines(x, y3, lwd = 3, lty = 3, col = "darkgreen")
lines(x, y4, lwd = 3, lty = 4, col = "purple")
lines(x, y5, lwd = 3, lty = 5, col = "orange")
lines(x, y6, lwd = 3, lty = 6, col = "brown")
lines(x, y7, lwd = 3, lty = 1, col = "cyan4")
lines(x, y8, lwd = 3, lty = 2, col = "deeppink")
lines(x, y9, lwd = 3, lty = 3, col = "black")
lines(x, y10, lwd = 3, lty = 4, col = "goldenrod")
lines(x, y11, lwd = 3, lty = 5, col = "darkblue")

# Legenda
legend("topright",
       legend = c("Normal",
                  "t",
                  "F",
                  "Chi-Square",
                  "Gamma",
                  "Weibull",
                  "Eksponensial",
                  "Pareto",
                  "Uniform",
                  "Beta",
                  "Inverse-Gaussian"),
       col = c("blue", "red", "darkgreen", "purple",
               "orange", "brown", "cyan4", "deeppink",
               "black", "goldenrod", "darkblue"),
       lty = c(1,2,3,4,5,6,1,2,3,4,5),
       lwd = 3,
       cex = 0.7)