Cvičenie 2.1

Zadanie: Zmena parametrov rozdelení: Vykreslite do mriežky hustoty a distribučné funkcie binomického a normálneho rozdelenia pre rôzne parametre daných rozdelení.

library(ggplot2)
library(gridExtra)

Binomicke rodelenie:

  # parametre
  n <- 2
  binom_n <- c(10,20)
  binom_p <- c(0.5,0.7)
  # charakteristiky
  binom_mean <- c(0,0)
  binom_var <- c(0,0)
  for (i in 1:n){
    binom_mean[i] <- binom_n[i] * binom_p[i]
    binom_var[i] <- binom_n[i] * binom_p[i] * (1 - binom_p[i])
  }
  cat("Binomial Distribution:\n")
## Binomial Distribution:
  for (i in 1:n){
    cat("Mean",i,":", binom_mean[i], "\n")
  }
## Mean 1 : 5 
## Mean 2 : 14
  for (i in 1:n){
    cat("Variance",i,":", binom_var[i], "\n\n")
  }
## Variance 1 : 2.5 
## 
## Variance 2 : 4.2
  # --- grafy - hustota a distribucna funkcia ---
  x_binom1 <- 0:binom_n[1]
  pmf_binom1 <- dbinom(x_binom1, size=binom_n[1], prob=binom_p[1])
  cdf_binom1 <- pbinom(x_binom1, size=binom_n[1], prob=binom_p[1])
  
  x_binom2 <- 0:binom_n[2]
  pmf_binom2 <- dbinom(x_binom2, size=binom_n[2], prob=binom_p[2])
  cdf_binom2 <- pbinom(x_binom2, size=binom_n[2], prob=binom_p[2])
  
  binom_df1 <- data.frame(x_binom1, pmf_binom1, cdf_binom1)
  
  binom_df2 <- data.frame(x_binom2, pmf_binom2, cdf_binom2)
  
  plot_binom_pmf1 <- ggplot(binom_df1, aes(x=x_binom1)) +
    geom_bar(aes(y=pmf_binom1), stat="identity", fill="blue") +
    labs(title="Binomial Distribution - PMF", y="Probability", x="x")
  
  plot_binom_cdf1 <- ggplot(binom_df1, aes(x=x_binom1)) +
    geom_line(aes(y=cdf_binom1), color="red") +
    labs(title="Binomial Distribution - CDF", y="Cumulative Probability", x="x")
  
  plot_binom_pmf2 <- ggplot(binom_df2, aes(x=x_binom2)) +
    geom_bar(aes(y=pmf_binom2), stat="identity", fill="blue") +
    labs(title="Binomial Distribution - PMF", y="Probability", x="x")
  
  plot_binom_cdf2 <- ggplot(binom_df2, aes(x=x_binom2)) +
    geom_line(aes(y=cdf_binom2), color="red") +
    labs(title="Binomial Distribution - CDF", y="Cumulative Probability", x="x")
  
  grid.arrange(plot_binom_pmf1, plot_binom_cdf1, plot_binom_pmf2, plot_binom_cdf2, ncol=2)

Normalne rozdelenie

  # parametre
  n <- 2
  normal_mean <- c(0,2)
  normal_sd <- c(1,0.6)
  # charakteristiky
  cat("Normal Distribution:\n")
## Normal Distribution:
  for (i in 1:n){
    cat("Mean:", normal_mean[i], "\n")
  }
## Mean: 0 
## Mean: 2
  for (i in 1:n){
    cat("Variance:", normal_sd[i]^2, "\n\n")
  }  
## Variance: 1 
## 
## Variance: 0.36
  # --- grafy - hustota a distribucna funkcia ---
  x_normal <- seq(-4, 4, length=1000)
  pdf_normal1 <- dnorm(x_normal, mean=normal_mean[1], sd=normal_sd[1])
  cdf_normal1 <- pnorm(x_normal, mean=normal_mean[1], sd=normal_sd[1])
  
  pdf_normal2 <- dnorm(x_normal, mean=normal_mean[2], sd=normal_sd[2])
  cdf_normal2 <- pnorm(x_normal, mean=normal_mean[2], sd=normal_sd[2])
  
  normal_df1 <- data.frame(x_normal, pdf_normal1, cdf_normal1)
  
  normal_df2 <- data.frame(x_normal, pdf_normal2, cdf_normal2)
  
  plot_normal_pdf1 <- ggplot(normal_df1, aes(x=x_normal)) +
    geom_line(aes(y=pdf_normal1), color="blue") +
    labs(title="Normal Distribution - PDF", y="Density", x="x")
  
  plot_normal_cdf1 <- ggplot(normal_df1, aes(x=x_normal)) +
    geom_line(aes(y=cdf_normal1), color="red") +
    labs(title="Normal Distribution - CDF", y="Cumulative Probability", x="x")
  
  plot_normal_pdf2 <- ggplot(normal_df2, aes(x=x_normal)) +
    geom_line(aes(y=pdf_normal2), color="blue") +
    labs(title="Normal Distribution - PDF", y="Density", x="x")
  
  plot_normal_cdf2 <- ggplot(normal_df2, aes(x=x_normal)) +
    geom_line(aes(y=cdf_normal2), color="red") +
    labs(title="Normal Distribution - CDF", y="Cumulative Probability", x="x")
  
    grid.arrange(plot_normal_pdf1, plot_normal_cdf1, plot_normal_pdf2, plot_normal_cdf2, ncol=2)

Záver:
— Binomicke rodelenie: Parameter binom_p je zodpovedný za najvyššiu pravdepodobnosť výskytu udalosti a zodpovedá najvyššiemu stĺpcu. Parameter binom_n je zodpovedný za počet možných výsledkov udalosti, čím väčší je parameter, tým širší je graf
— Normalne rozdelenie: Parameter normal_mean je zodpovedný za najvyššiu pravdepodobnosť výskytu udalosti a zodpovedá najvyššiemu bodu paraboly. Parameter normal_sd je zodpovedný za rýchlosť, ktorou parabola klesá (za odchýlku od najpravdepodobnejšieho výsledku), čím menší je parameter, tým menšia je odchýlka a tým rýchlejšie parabola klesá

Cvičenie 2.2

Zadanie: Vykreslite v mriežke hustotu a distribučnú funkciu vami zvoleného spojitého a diskrétneho rozdelenia.

Pre spojité rozdelenie volíme rovnomerné rozdelenie, pre diskretné — poissonove rozdelenie.

Rovnomerné rozdelenie:
(Nakreslime pravdepodobnosť získania čísel od 0 do 30 pri hádzaní 20-stennou kockou)

  # hustota
  cisla <- 0:30
  pravd <- c(rep(0,31))
  for (i in cisla) {
    if (i>=1 && i<= 20) {
      pravd[i+1] <- 1/(20-0)
    }
    else {
      pravd[i+1] <- 0
    }
  }
  pravd1 <- append(pravd,0,after=1)
  pravd1 <- append(pravd1,0,after=22)
  cisla1 <- append(cisla,1,after=1)
  cisla1 <- append(cisla1,20,after=22)

  rovn_pdf <- data.frame(cisla1, pravd1) 
  
  plot_rovn_pdf <- ggplot(data = rovn_pdf, aes(x = cisla1, y = pravd1)) + 
                    geom_line(color="blue") +
                    labs(title="Rovnomerné rozdelenie - PDF", y="Pravdepodobnost", x="Cislo na kocke")
  
  # distribucna funkcia
  sum <- 0
  cumul_pravd <- c(rep(0,30))
  for (i in cisla){
    sum <- sum + pravd[i+1]
    cumul_pravd[i+1] <- sum
  }
  
  rovn_cdf <- data.frame(cisla, cumul_pravd) 
  
  plot_rovn_cdf <- ggplot(data = rovn_cdf, aes(x = cisla, y = cumul_pravd)) + 
                    geom_line(color="red") +
                    labs(title="Rovnomerné rozdelenie - CDF", y="Cumulativna pravdepodobnost", x="Cislo na kocke")
  
  
  grid.arrange(plot_rovn_pdf, plot_rovn_cdf, ncol=2)

Poissonove rozdelenie:
(Nastavme parameter \(\lambda\) rovný 4)

  # hustota
  lam <- 4
  k <- 0:20
  pravd <- c(rep(0,length(k)))
  for (i in k) {
    pravd[i+1] <- ((lam)^(i+1)*exp(-lam))/factorial(i+1) 
  }
  
  poiss_pdf <- data.frame(k, pravd) 
  
  plot_poiss_pdf <- ggplot(data = poiss_pdf, aes(x = k, y = pravd)) + 
                    geom_line(color="blue") +
                    labs(title="Poissonove rozdelenie - PDF λ=4", y="Pravdepodobnost", x="x = k")

  # distribucna funkcia
  sum <- 0
  cumul_pravd <- c(rep(0,length(k)))
  for (i in k){
    sum <- sum + pravd[i+1]
    cumul_pravd[i+1] <- sum
  }
  
  poiss_cdf <- data.frame(k, cumul_pravd) 
  
  plot_poiss_cdf <- ggplot(data = poiss_cdf, aes(x = k, y = cumul_pravd)) + 
                     geom_line(color="red") +
                     labs(title="Poissonove rozdelenie - CDF λ=4", y="Cumulativna pravdepodobnost", x="x = k")
  
    
 
  
  
  grid.arrange(plot_poiss_pdf, plot_poiss_cdf, ncol=2)