library(ggplot2)
library(reshape2)

data <- datasets::mtcars
data_mtcars <- data[, c("mpg", "disp", "hp", "wt", "qsec")]

cor_mtcars <- cor(data_mtcars)
cor_mtcars
##             mpg       disp         hp         wt       qsec
## mpg   1.0000000 -0.8475514 -0.7761684 -0.8676594  0.4186840
## disp -0.8475514  1.0000000  0.7909486  0.8879799 -0.4336979
## hp   -0.7761684  0.7909486  1.0000000  0.6587479 -0.7082234
## wt   -0.8676594  0.8879799  0.6587479  1.0000000 -0.1747159
## qsec  0.4186840 -0.4336979 -0.7082234 -0.1747159  1.0000000
data_cor <- melt(cor_mtcars)

ggplot(data_cor, aes(Var1, Var2, fill = value)) +
  geom_tile(color = "black") +
  geom_text(aes(label = round(value, 2)), color = "black") +
  scale_fill_gradient2(
    low = "red",
    mid = "yellow",
    high = "green",
    midpoint = 0,
    limits = c(-1, 1),
    name = "Korelasi"
  ) +
  theme_minimal() +
  labs(
    title = "Heatmap Dataset mtcars",
    x = "Variabel 1",
    y = "Variabel 2"
  ) +
  theme(
    plot.title = element_text(hjust = 0.5),
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

bern<-function(x,p){p^x*(1-p)^(1-x)}
bern(1,3/6)
## [1] 0.5
cmfbinom<-function(k,n,p){
  #validasi input
  if (k<0 || n<0 || p<0 || p>1){
    stop("input tidak valid")
  }
  #inisialisasi CMF
  cmf<-0
  #menghitung CMF
  for (x in 0:k) {
    prob <- choose(n, x)*(p^x)*((1-p)^(n-x))
    cmf <- cmf + prob
  }
  return (cmf)
}
#peluang paling seddikit 2 orang sembuh = 1-p(X<=1)
Peluang = 1 - cmfbinom(1,12,0.2)
Peluang
## [1] 0.7251221
cmfpois<-function(x, lambda){
  if (lambda <= 0){
    stop("lambda harus bernilai >0")
  }
  if (x<0){
    return(0)
  }
 cmf <- 0
  for (k in 0:x){
    cmf <- cmf + (exp(-lambda)*(lambda^k)/factorial(k))
  }
  return (cmf)
}
Peluang2 <- cmfpois(10,2) - cmfpois(0, 2)
Peluang2
## [1] 0.8646564
geo <- function (x,p){p*(1-p)^(x-1)}
geo(5,0.3)
## [1] 0.07203
hyper <- function(x, N, n, k) {
  ((factorial(k) / (factorial(k - x) * factorial(x))) *
   (factorial(N - k) / (factorial((N - k) - (n - x)) * factorial(n - x)))) /
  (factorial(N) / (factorial(N - n) * factorial(n)))
}

hyper(2, 100, 10, 5)
## [1] 0.07021881