library(ggplot2)
## Warning: пакет 'ggplot2' был собран под R версии 4.3.3
library(gridExtra)
## Warning: пакет 'gridExtra' был собран под R версии 4.3.3

Binomicke rodelenie

  # parametre
  binom_n <- c(10,13,11,9)
  binom_p <- c(0.5,0.2,0.9,0.5)
plot_binomial_distribution <- function(binom_n, binom_p) {
  binom_mean <- binom_n * binom_p
  binom_var <- binom_n * binom_p * (1 - binom_p)
  cat("Binomial Distribution:\n")
  cat("Mean:", binom_mean, "\n")
  cat("Variance:", binom_var, "\n\n")
  
  x_binom <- 0:binom_n
  pmf_binom <- dbinom(x_binom, size=binom_n, prob=binom_p)
  cdf_binom <- pbinom(x_binom, size=binom_n, prob=binom_p)
  binom_df <- data.frame(x_binom, pmf_binom, cdf_binom)
  
  plot_binom_pmf <- ggplot(binom_df, aes(x=x_binom)) +
    geom_bar(aes(y=pmf_binom), stat="identity", fill="blue") +
    labs(title="Binomial Distribution - PMF", y="Probability", x="x")
  plot_binom_cdf <- ggplot(binom_df, aes(x=x_binom)) +
    geom_line(aes(y=cdf_binom), color="red") +
    labs(title="Binomial Distribution - CDF", y="Cumulative Probability", x="x")
  
  return(list(plot_binom_pmf, plot_binom_cdf))
}
  # --- grafy - hustota a distribucna funkcia ---
  grafy <- list()
  if(length(binom_n) == length(binom_p)){
    for (i in 1:length(binom_n)){
      grafy<- append(grafy,plot_binomial_distribution(binom_n[i],binom_p[i]))
    }
  }
## Binomial Distribution:
## Mean: 5 
## Variance: 2.5 
## 
## Binomial Distribution:
## Mean: 2.6 
## Variance: 2.08 
## 
## Binomial Distribution:
## Mean: 9.9 
## Variance: 0.99 
## 
## Binomial Distribution:
## Mean: 4.5 
## Variance: 2.25
  do.call(grid.arrange, c(grafy, ncol=2))

Normalne rozdelenie

  # parametre
  normal_mean = c(0,1,3,0.3)
  normal_sd = c(1,0.1,2,0.5)
  plot_normal_distribution <- function(normal_mean, normal_sd) {
  cat("Normal Distribution:\n")
  cat("Mean:", normal_mean, "\n")
  cat("Variance:", normal_sd^2, "\n\n")
  
  x_normal <- seq(-4, 4, length=1000)
  pdf_normal <- dnorm(x_normal, mean=normal_mean, sd=normal_sd)
  cdf_normal <- pnorm(x_normal, mean=normal_mean, sd=normal_sd)
  normal_df <- data.frame(x_normal, pdf_normal, cdf_normal)
  
  plot_normal_pdf <- ggplot(normal_df, aes(x=x_normal)) +
    geom_line(aes(y=pdf_normal), color="blue") +
    labs(title="Normal Distribution - PDF", y="Density", x="x")
  plot_normal_cdf <- ggplot(normal_df, aes(x=x_normal)) +
    geom_line(aes(y=cdf_normal), color="red") +
    labs(title="Normal Distribution - CDF", y="Cumulative Probability", x="x")
  
  return(list(plot_normal_pdf, plot_normal_cdf))
  }
  # --- grafy - hustota a distribucna funkcia ---
  
  grafy <- list()
  if(length(normal_sd) == length(normal_mean)){
    for (i in 1:length(normal_sd)){
      grafy<- append(grafy,plot_normal_distribution(normal_mean[i],normal_sd[i]))
    }
  }
## Normal Distribution:
## Mean: 0 
## Variance: 1 
## 
## Normal Distribution:
## Mean: 1 
## Variance: 0.01 
## 
## Normal Distribution:
## Mean: 3 
## Variance: 4 
## 
## Normal Distribution:
## Mean: 0.3 
## Variance: 0.25
  do.call(grid.arrange, c(grafy, ncol=2))

  # Exponenciálne rozdelenie
  plot_exponential_distribution <- function(rate) {
    cat("Exponenciálne rozdelenie:\n")
    cat("Miera (rate):", rate, "\n")
    cat("Stredná hodnota:", 1/rate, "\n")
    cat("Rozptyl:", 1/(rate^2), "\n\n")
    
    x_exp <- seq(0, 10, length=1000)  # hodnoty pre x
    pdf_exp <- dexp(x_exp, rate=rate)  # hustota
    cdf_exp <- pexp(x_exp, rate=rate)  # distribučná funkcia
    exp_df <- data.frame(x_exp, pdf_exp, cdf_exp)
    
    plot_exp_pdf <- ggplot(exp_df, aes(x=x_exp)) +
      geom_line(aes(y=pdf_exp), color="blue") +
      labs(title="Exponenciálne rozdelenie - PDF", y="Hustota", x="x")
    
    plot_exp_cdf <- ggplot(exp_df, aes(x=x_exp)) +
      geom_line(aes(y=cdf_exp), color="red") +
      labs(title="Exponenciálne rozdelenie - CDF", y="Kumulatívna pravdepodobnosť", x="x")
    
    return(list(plot_exp_pdf, plot_exp_cdf))
  }
# Parametre pre rozdelenia
rates <- c(0.5, 1, 2,5)

grafy <- list()

# Exponenciálne rozdelenie (spojité)
for (i in 1:length(rates)) {
  grafy <- append(grafy, plot_exponential_distribution(rates[i]))
}
## Exponenciálne rozdelenie:
## Miera (rate): 0.5 
## Stredná hodnota: 2 
## Rozptyl: 4 
## 
## Exponenciálne rozdelenie:
## Miera (rate): 1 
## Stredná hodnota: 1 
## Rozptyl: 1 
## 
## Exponenciálne rozdelenie:
## Miera (rate): 2 
## Stredná hodnota: 0.5 
## Rozptyl: 0.25 
## 
## Exponenciálne rozdelenie:
## Miera (rate): 5 
## Stredná hodnota: 0.2 
## Rozptyl: 0.04
# Zobrazenie všetkých grafov v mriežke
do.call(grid.arrange, c(grafy, ncol=2))

  # Poissonovo rozdelenie
  plot_poisson_distribution <- function(lambda) {
    cat("Poissonovo rozdelenie:\n")
    cat("Lambda:", lambda, "\n")
    cat("Stredná hodnota:", lambda, "\n")
    cat("Rozptyl:", lambda, "\n\n")
    
    x_pois <- 0:20  # hodnoty pre x
    pmf_pois <- dpois(x_pois, lambda=lambda)  # PMF
    cdf_pois <- ppois(x_pois, lambda=lambda)  # CDF
    pois_df <- data.frame(x_pois, pmf_pois, cdf_pois)
    
    plot_pois_pmf <- ggplot(pois_df, aes(x=x_pois)) +
      geom_bar(aes(y=pmf_pois), stat="identity", fill="blue") +
      labs(title="Poissonovo rozdelenie - PMF", y="Pravdepodobnosť", x="x")
    
    plot_pois_cdf <- ggplot(pois_df, aes(x=x_pois)) +
      geom_line(aes(y=cdf_pois), color="red") +
      labs(title="Poissonovo rozdelenie - CDF", y="Kumulatívna pravdepodobnosť", x="x")
    
    return(list(plot_pois_pmf, plot_pois_cdf))
  }
# Parametre pre rozdelenia
lambdas <- c(0.7, 2, 4, 6) 

grafy <- list()

# Poissonovo rozdelenie (diskrétne)
for (i in 1:length(lambdas)) {
  grafy <- append(grafy, plot_poisson_distribution(lambdas[i]))
}
## Poissonovo rozdelenie:
## Lambda: 0.7 
## Stredná hodnota: 0.7 
## Rozptyl: 0.7 
## 
## Poissonovo rozdelenie:
## Lambda: 2 
## Stredná hodnota: 2 
## Rozptyl: 2 
## 
## Poissonovo rozdelenie:
## Lambda: 4 
## Stredná hodnota: 4 
## Rozptyl: 4 
## 
## Poissonovo rozdelenie:
## Lambda: 6 
## Stredná hodnota: 6 
## Rozptyl: 6
# Zobrazenie všetkých grafov v mriežke
do.call(grid.arrange, c(grafy, ncol=2))