library(ggplot2)
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.5.3
data<-datasets::mtcars
data_mtcars<-data[,c("mpg","disp","hp","wt","qsec")]

#matriks korelasi
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
#heatmap
data_cor<-melt(cor_mtcars)
ggplot(data_cor,aes(Var1,Var2,fill=value))+
  geom_tile(color="black")+
  geom_text(aes(label=round(value,3)),color="black")+
  scale_fill_gradient2(low="red",
high="green",mid="yellow",
midpoint=0,limit=c(-1,1), name="korelasi")+
  theme_minimal()+labs(title = "heatmap data set mtcars", x="variabel 1", y= "variabel 2")+theme(plot.title=element_text(hjust = 0.5),axis.text.x= element_text(hjust=0.5))

bern<-function(x,p){p^x*(1-p)^(1-x)} #x berapa kali, p peluang
bern(1,3/6)
## [1] 0.5
cmfbinom <- function(k, n, p) {
  # Validasi input
  if (k < 0 || n < 0 || p < 0 || p > 1 || k > n) {
    stop("input tidak valid")
  }
  
  cmf <- 0
  for (x in 0:k) {
    # Rumus fungsi massa peluang (PMF) Binomial: P(X = x)
    prob <- choose(n, x) * (p^x) * ((1 - p)^(n - x))
    cmf <- cmf + prob
  }
  
  return(cmf)
}

# Pemanggilan fungsi (di luar definisi fungsi)
# Peluang paling sedikit 2 orang sembuh: P(X >= 2) = 1 - P(X <= 1)
peluang <- 1 - cmfbinom(1, 12, 0.2)
peluang
## [1] 0.7251221
cmfpois <- function(x, lambda) {
  # Validasi input
  if (lambda <= 0) {
    stop("lambda harus bernilai > 0")
  }
  if (x < 0) {
    return(0) # Peluang kumulatif untuk x < 0 adalah 0
  }
  
  # Mengambil nilai bulat dari x jika x desimal
  x <- floor(x)
  
  cmf <- 0
  for (k in 0:x) {
    # Rumus PMF Poisson: P(X = k) = (exp(-lambda) * lambda^k) / factorial(k)
    prob <- (exp(-lambda) * (lambda^k)) / factorial(k)
    cmf <- cmf + prob
  }
  
  return(cmf)
}

# Pemanggilan fungsi (misal: P(1 <= X <= 10) = P(X <= 10) - P(X <= 0))
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