~ Probability Distributions ~

Tugas Komputasi Statistika


Kontak : \(\downarrow\)
Email
Instagram yyosia
RPubs https://rpubs.com/yosia/

Distribusi Probabilitas

Misalkan sebuah eksperimen mempunyai ruang sampel S. Variabel random adalah fungsi berharga real yang didefinisikan pada ruang sampel S. Variabel random mempunyai akibat merubah kejadian dalam ruang sampel ke dalam kejadian numerik sehingga variabel random dapat dipandang sebagai \[f: \text {Ruang Sampel S → Real R}.\] Jika variabel random X hanya dapat berharga sebanyak terbilang bilangan real maka X disebut variabel random diskrit .

Distribusi Binomial

Eksperimen Binomial adalah eksperimen yang mempunyai sifat-sifat sebagai berikut : 1. Eksperimen mengandung n trial yang identik. 2. Setiap trial menghasilkan 2 hasil yang mungkin yang dinamakan sukses ( S ) dan tidak sukses ( F ). 3. Untuk tiap trial, probabilitas sukses adalah \(p = P(S)\) dan probabilitas sukses adalah \(P(F) = 1- p = q\). 4. Trial-trial itu independen. 5. Variabel random X adalah banyak sukses yang ditemukan dalam n trial.

Formula Distribusi Binomial: \[B(x; n, P) = \binom n x \times P^x \times (1 – P)^{n–x}\] untuk x = 0,1,2,…n, dimana

\(\binom n x = {n! \over x!(n–x)!}\)

Kasus 1

Berapa peluang munculnya 2 Kepala dalam 10 pelemparan koin dimana peluang munculnya Kepala adalah 0,3?

dbinom(x = 2, size = 10, prob = 0.3)          # exact nilai probibilitas/peluang
## [1] 0.2334744
mean(rbinom(n=10000,size=10,prob=0.3)==2)     # simulated
## [1] 0.2342

Visualisasi dari kasus 1 ;

library(dplyr)
library(ggplot2)
library(scales)
data.frame(heads = 0:10, prob = dbinom(x = 0:10, size = 10, prob = 0.3)) %>%
  mutate(Heads = ifelse(heads == 2, "2", "other")) %>%
  ggplot(aes(x = factor(heads), y = prob, fill = Heads)) +
  theme_minimal()+
  geom_col() +
  geom_text(
    aes(label = round(prob,2), y = prob + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0) +
  labs(title = "Probability of X = 2 successes",
       subtitle = "b(10, .3)",
       x = "Successes (x)",
       y = "probability") 

Kasus 2

Berapa probabilitas <=5 Kepala dalam 10 pelemparan koin di mana probabilitas Kepala adalah 0,3?

Untuk menemukan probabilitas <=5 Kepala dengan upaya acak dalam 10 lemparan koin di mana probabilitas Kepala adalah 0,3, kami menerapkan fungsi dbinom dengan \(x=0,...,5.\)

dbinom(0, size=10, prob=0.3) + 
  dbinom(1, size=10, prob=0.3) + 
  dbinom(2, size=10, prob=0.3) + 
  dbinom(3, size=10, prob=0.3) + 
  dbinom(4, size=10, prob=0.3) +
  dbinom(5, size=10, prob=0.3)                # manual calculation for binomial distribution
## [1] 0.952651
pbinom(5, size=10, prob=0.3)                  # alternative way for binomial distribution
## [1] 0.952651
pbinom(q=5,size=10,p=0.3,lower.tail=TRUE)     # alternative way for binomial distribution
## [1] 0.952651
mean(rbinom(n=10000,size=10,prob=0.3)<= 5)    # simulated
## [1] 0.9571

Visualisasi dari kasus 2 ;

library(dplyr)
library(ggplot2)
data.frame(heads = 0:10, 
           pmf = dbinom(x = 0:10, size = 10, prob = 0.3),
           cdf = pbinom(q = 0:10, size = 10, prob = 0.3, 
                        lower.tail = TRUE)) %>%
  mutate(Heads = ifelse(heads <= 5, "<=5", "other")) %>%
  ggplot(aes(x = factor(heads), y = cdf, fill = Heads)) +
  geom_col() +
  theme_minimal()+
  geom_text(
    aes(label = round(cdf,2), y = cdf + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0) +
  labs(title = "Probability of X <= 5 successes",
       subtitle = "b(10, .3)",
       x = "Successes (x)",
       y = "probability") 

### Kasus 3

Berapa probabilitas >=5 Kepala dalam 10 pelemparan koin di mana probabilitas Kepala adalah 0,3?

library(dplyr)
library(ggplot2)
data.frame(heads = 0:10, 
           pmf = dbinom(x = 0:10, size = 10, prob = 0.3),
           cdf = pbinom(q = -1:9, size = 10, prob = 0.3, 
                        lower.tail = FALSE)) %>%
  mutate(Heads = ifelse(heads >= 5, ">=5", "other")) %>%
  ggplot(aes(x = factor(heads), y = cdf, fill = Heads)) +
  geom_col() +
  theme_minimal()+
  geom_text(
    aes(label = round(cdf,2), y = cdf + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0) +
  labs(title = "Probability of X >= 5 successes",
       subtitle = "b(10, .3)",
       x = "Successes (x)",
       y = "probability") 

Kasus 4

Berapa jumlah kepala yang diharapkan dalam 25 pelemparan koin di mana peluang munculnya kepala adalah 0,3?

25 * 0.3                                      # exact expected number of heads in 25 coin flips
## [1] 7.5
mean(rbinom(n = 10000, size = 25, prob = .3)) # exact expected number of heads in 25 coin flips
## [1] 7.4685
25 * 0.3 * (1 - 0.3)                          # variance
## [1] 5.25
var(rbinom(n = 10000, size = 25, prob = .3))  # variance
## [1] 5.206181
library(dplyr)
library(ggplot2)
data.frame(heads = 0:25, 
           pmf = dbinom(x = 0:25, size = 25, prob = 0.3)) %>%
  mutate(Heads = ifelse(heads == 7, "7", "other"))%>%
  ggplot(aes(x = factor(heads), y = pmf, fill = Heads)) +
  geom_col() +
  theme_minimal()+
  geom_text(
    aes(label = round(pmf,2), y = pmf + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0) +
  labs(title = "Probability of X = x successes.",
       subtitle = "b(25, .3)",
       x = "Successes (x)",
       y = "probability") 

Latihan 1

Misalkan ada dua puluh pertanyaan pilihan ganda dalam kuis kelas Statistik. Setiap pertanyaan memiliki lima kemungkinan jawaban, dan hanya satu yang benar. Temukan probabilitas memiliki empat atau kurang jawaban yang benar jika seorang siswa mencoba menjawab setiap pertanyaan secara acak.

probability = ${1 } = 0.2 $ setiap 5 pertanyaan hanya 1 yang benar

pbinom(4, size=20, prob=0.2) 
## [1] 0.6296483

Distribusi Poisson

Dalam praktek sehari-hari distribusi Poisson digunakan dalam penghitungan X dari ”peristiwa-peristiwa yang jarang terjadi”, yaitu banyak kejadian suatu peristiwa dengan probabilitas p yang kecil dalam n trial independen (n besar) sehingga hanya diketahui harga X rata-rata, yaitu \(μ = np\). Distribusi Poisson merupakan model yang baik untuk menentukan distribusi probabilitas dari banyak kecelakaan mobil, kecelakaan dalam industri, banyak partikel radio aktif yang meluruh dalam periode tertentu, dan banyak salah cetak/ketik yang dibuat dalam suatu lembar halaman.

Distribusi probabilitas Poisson dapat dinyatakan sebagai berikut ;

\(P(x)={\lambda^x e^{-\lambda} \over x!}, \text {where x}=1,2,3..\)

Kasus 5

Berapa peluang menghasilkan 2 sampai 4 penjualan dalam seminggu jika tingkat penjualan rata-rata adalah 3 per minggu?

library(ggplot2)
library(dplyr)
# Using cumulative probability
ppois(q = 4, lambda = 3, lower.tail = TRUE) - 
  ppois(q = 1, lambda = 3, lower.tail = TRUE)
## [1] 0.616115
# Using exact probability
dpois(x = 2, lambda = 3) +
  dpois(x = 3, lambda = 3) +
  dpois(x = 4, lambda = 4)
## [1] 0.6434504
# variance = lambda = 3
options(scipen = 999, digits = 2) # sig digits
events <- 0:10
density <- dpois(x = events, lambda = 3)
prob <- ppois(q = events, lambda = 3, lower.tail = TRUE)
df <- data.frame(events, density, prob)
ggplot(df, aes(x = factor(events), y = density)) +
  theme_minimal()+
  geom_col() +
  geom_text(
    aes(label = round(density,2), y = density + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0) +
  labs(title = "PMF and CDF of Poisson Distribution",
       subtitle = "P(3).",
       x = "Events (x)",
       y = "Density") +
  geom_line(data = df, aes(x = events, y = prob))

Kasus 6

Misalkan seorang pemain baseball \(p=.300\) rata-rata pukulan. berapakah peluang dari \(X\le\) hits in \(n=500\) at bats? \(X=150?\) \(X>150?\)

library(ggplot2)
library(dplyr)
ppois(q=150,lambda=.300*500,lower.tail=TRUE)  # probability of x <= 150
## [1] 0.52
dpois(x=150,lambda=.300*500)                  # probability of x = 150
## [1] 0.033
ppois(q=150,lambda=.300*500,lower.tail=FALSE) # probability of x > 150
## [1] 0.48
options(scipen = 999, digits = 2)             # sig digits
hits <- 0:100 * 3
density <- dpois(x = hits, lambda = .300 * 500)
prob <- ppois(q = hits, lambda = .300 * 500, lower.tail = TRUE)
df <- data.frame(hits, density, prob)
ggplot(df, aes(x = hits, y = density)) +
  geom_col() +
  theme_minimal()+
  labs(title = "Poisson(150)",
       subtitle = "PMF and CDF of Poisson(3) distribution.",
       x = "Hits (x)",
       y = "Density") +
  geom_line(data = df, aes(x = hits, y = prob))

Kasus 7

Berapa distribusi keberhasilan dari sampel \(n=50\) jika peluang berhasilnya adalah \(p=.03\)

library(ggplot2)
library(dplyr)
library(tidyr)
options(scipen = 999, digits = 2) # sig digits
n = 0:10
df <- data.frame(events = 0:10, 
                 Poisson = dpois(x = n, lambda = .03 * 50),
                 Binomial = dbinom(x = n, size = 50, p = .03))
df_tidy <- gather(df, key = "Distribution", value = "density", -c(events))
ggplot(df_tidy, aes(x = factor(events), y = density, fill = Distribution)) +
  geom_col(position = "dodge") +
  theme_minimal()+
  labs(title = "Poisson(15) and Binomial(50, .03)",
       subtitle = "Poisson approximates binomial when n >= 20 and p <= .05.",
       x = "Events (x)",
       y = "Density")

Latihan 2

Jika rata-rata dua puluh mobil melintasi jembatan per menit, visualisasikan dan temukan peluang ada tiga belas atau lebih mobil yang melintasi jembatan dalam satu menit tertentu.

ppois(q=13,lambda=20,lower.tail=FALSE) # upper tail
## [1] 0.93

Jadi 96% peluang 13 atau lebih mobil melintas dalam satu menit

Latihan 3

Misalkan probabilitas suatu obat menghasilkan efek samping tertentu adalah p = = 0,1% dan n = 1.000 pasien dalam uji klinis menerima obat tersebut. Berapa probabilitas 0 orang mengalami efek samping dengan menggunakan teknik visualisasi?

dpois(x = 0, lambda = 1000 * .001 ) # nilai ekspetasi adalah 1
## [1] 0.37
library(ggplot2)
library(dplyr)
options(scipen = 999, digits = 2) # sig digits

x <- 0:10
density <- dpois(x = x, lambda = 1000 * .001)
prob <- ppois(q = x, lambda = 1000 * .001, lower.tail = TRUE)
df <- data.frame(x, density, prob)
ggplot(df, aes(x = x, y = density)) +
  geom_col() +
  geom_text(
    aes(label = round(density,2), y = density + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0
  ) +
  labs(title = "Poisson(1)",
       subtitle = "PMF and CDF of Poisson(1) distribution.",
       x = "Events (x)",
       y = "Density") +
  geom_line(data = df, aes(x = x, y = prob))

Distribusi Seragam Kontinu

Distribusi seragam bahwa probabilitas untuk semua hasil adalah sama. Pada setiap variabel memiliki probabilitas yang sama terhadap hasil. Selain itu, distribusi probabilitas pemilihan nomor acak dari interval kontinu antara a dan b. Fungsi densitasnya didefinisikan sebagai berikut

\[U(x) = \begin{cases} {1 \over b-a} & \text{when $a \leq x \leq b$,} \\ 0 & \text{when $x<a$ or $x>b$} \end{cases}\]

Kasus 8

Pilih seratus angka acak antara minus satu dan lima. Kami menerapkan fungsi runif generasi dari distribusi seragam untuk menghasilkan sepuluh angka acak antara minus satu dan lima.

rand.unif <- runif(100, min=-3, max=5)        # ten random numbers between minus one and five
hist(rand.unif, col = "cornflowerblue",               # plot the results as a histogram
     freq = FALSE, 
     xlab = 'x', 
     density = 20)

Selanjutnya, kami memplot keduanya, histogram densitas dari atas serta distribusi probabilitas seragam untuk interval [-3,5], dengan menerapkan fungsi dunif().

a <- -3
b <- 5
hist(rand.unif, 
     freq = FALSE,
     col = "azure4",
     xlab = 'x',  
     ylim = c(0, 0.2),
     xlim = c(-4,6),
     density = 20,
     main = "Uniform distribution for the interval [-3,5]")
curve(dunif(x, min = a, max = b), 
      from = -4, to = 6, 
      n = 100000, 
      col = "darkblue", 
      lwd = 2, 
      add = TRUE)

Berapa nilai x yang sesuai dengan nilai yang membagi distribusi seragam yang diberikan menjadi dua bagian yang sama, atau ditulis lebih formal

qunif(0.5, min=a, max=b)                      # yield value uniform dist into two equal parts
## [1] 1
punif(1, min= a, max = b, lower.tail = FALSE) # measurements yield values `>=1`
## [1] 0.5

Distribusi Eksponensial

Distribusi eksponensial menggambarkan waktu kedatangan dari urutan peristiwa independen yang berulang secara acak. Jika \(μ\) adalah waktu tunggu rata-rata untuk pengulangan peristiwa berikutnya, fungsi kepadatan probabilitasnya adalah:

\[E(x) = \begin{cases} {1 \over \mu}e^{-x/\mu} & \text{when $x > 0$,} \\ 0 & \text{when $x<0$} \end{cases}\]

Mari kita lihat bagaimana distribusi eksponensial terlihat. Sampel acak diambil dari distribusi eksponensial yang dihasilkan menggunakan rexp(n) dengan ukuran sampel (n).

set.seed(1)                                   # to generate the same random number results
rexp(10)                                      # random number with 10 sample size
##  [1] 0.76 1.18 0.15 0.14 0.44 2.89 1.23 0.54 0.96 0.15
par(mfrow=c(2,2))                             # partition the graph by 2x2 rows and column 
hist(rexp(10),col = "azure1")                 # histogram plot with 10 sample size 
hist(rexp(100),col = "azure2")                # histogram plot with 100 sample size
hist(rexp(1000),col = "azure3")               # histogram plot with 1000 sample size
hist(rexp(10000),col = "azure4")              # histogram plot with 10000 sample size

Kasus 9

Kita mau menghasilkan distribusi rata-rata dari 40 eksponensial acak dengan 10,000 simulasi dengan lamba (rate parameter) = 0.2

library(ggplot2)
set.seed(1)                                   # to generate the same random number results
mns=NULL
for (i in 1 : 10000) mns = c(mns, mean(rexp(40,0.2)))
Exp <- data.frame(mns,size=40)
ggplot(Exp,aes(x=mns,fill=size))+
  geom_histogram(aes(y=..density..),binwidth=.25,col="black") + 
  ylim(c(0,0.6))+
  stat_function(fun=dnorm,arg=list(mean=5,sd=sd(mns)))+
  theme_minimal()+
  geom_vline(aes(xintercept=mean(mns),colour="red"))+
  geom_text(aes(x=mean(mns),
                label="\n sample mean",
                y=0.2),colour="black",
            angle=90, text = element_text(size=11))+
  xlab("Averages of the distribution") + ylab("Frequency")+
  ggtitle("Distribution of the averages of \n 40 random exponentials (10000 simulations)")

Latihan 4

Misalkan waktu checkout rata-rata kasir supermarket adalah tiga menit. Temukan probabilitas checkout pelanggan diselesaikan oleh kasir dalam waktu kurang dari dua menit.

pexp(2, rate=1/3)
## [1] 0.49

Distribusi Normal

Distribusi ini banyak ditemui dalam pengukuran-pengukuran yang diperoleh dalam percobaan di laboratorium sains maupun pengukuran di bidang ilmu sosial. Pengukuran-pengukuran tersebut seringkali mempunyai distribusi yang berbentuk lonceng (bell-shaped distribution) sehingga dikatakan distribusi yang normal ditemui dan dikenal dengan nama distribusi normal. Nama lain dari distribusi normal adalah distribusi Gauss. Variabel random kontinu X dinyatakan berdistribusi normal dengan mean \(μ\) dan variasi \(σ^2\) jika X mempunyai fungsi kepadatan probabilitas berbentuk

\[N(x)={1 \over \sigma \sqrt{2\pi}e}e^{-(x-\mu)^2/2\sigma^2}\]

Jika variabel X diikuti normal distribusi, lalu kita tulis;

\[X\sim N(\mu,\sigma^2)\]

Mari kita ambil sample dari distribusi normal ${Y} =100 $ and \(\sigma = 5\)

mydata <- rnorm(n=10000, mean=100, sd=5)
mean(mydata)
## [1] 100
sd(mydata)
## [1] 5
# Make a histogram of your sample
hist(mydata, main ="", 
     col = "blue", 
     xlim = c(80, 120), 
     freq = FALSE,
     xlab = "")
# ...and add a density curve
curve(dnorm(x, 
            mean=mean(mydata), 
            sd=sd(mydata)), add=TRUE, 
            col="black", lwd=3)

Khususnya, distribusi normal dengan \(μ=0\) dan \(σ=1\) disebut distribusi normal standar, dan dilambangkan sebagai \(N(0,1)\). Dapat digambarkan sebagai berikut. Distribusi normal penting karena Teorema Limit Pusat, yang menyatakan bahwa populasi dari semua sampel yang mungkin berukuran n dari suatu populasi dengan mean \(μ\) dan varians \(σ^2\) mendekati distribusi normal dengan mean \(μ\) dan \(σ^2 \over n\) ketika n mendekati tak terhingga.

library(visualize)                                     # distribution visualization
par(mfrow=c(2,2))                                      # partition graph by 2x2 rows and column
visualize.norm(stat=1,mu=4,sd=5,section="lower")       # evaluates lower tail
visualize.norm(stat=c(3,6),mu=5,sd=3,section="bounded")# evaluates bounded region
visualize.norm(stat=1,mu=3,sd=2,section="upper")       # evaluates upper tail

Kasus 10

Asumsikan bahwa nilai ujian dari ujian masuk perguruan tinggi sesuai dengan distribusi normal. Selanjutnya, nilai rata-rata tes adalah 75, dan standar deviasi adalah 14,2. Berapa persentase siswa yang mendapat nilai 86 atau lebih dalam ujian?

Kami menerapkan fungsi pnorm dari distribusi normal dengan mean 75 dan standar deviasi 14.2. Karena kami mencari persentase siswa yang mendapat nilai lebih tinggi dari 86, kami tertarik pada bagian atas dari distribusi normal.

pnorm(86, mean=75, sd=14.2, lower.tail=FALSE)  
## [1] 0.22

Persentase siswa yang mendapat nilai 84 atau lebih dalam ujian masuk perguruan tinggi adalah 21,9%

Distribusi Chi-squared

Jika \(X_1,X_2,...,X_m\) adalah \(m\) variabel acak bebas yang berdistribusi normal standar, maka besaran berikut mengikuti distribusi Chi-Squared dengan \(m\) derajat kebebasan. Maksudnya adalah \(m\), dan variannya adalah \(2m\).

\[V=X_1^2+X_2^2+\cdots+X_m^2 \sim \chi_{m}^2\]

Visualisasi distribusi Chi-squared

library(visualize)                                     # distribution visualization
par(mfrow=c(2,2))                                      # partition graph by 2x2 rows and column
visualize.chisq(stat=1,df=3,section="lower")           # evaluates lower tail
visualize.chisq(stat=c(1,3),df=6,section="bounded")    # evaluates bounded region
visualize.chisq(stat=1,df=3,section="upper")           # evaluates upper tail

Kasus 11

Temukan persentil ke-95 dari distribusi Chi-Squared dengan 6 derajat kebebasan. Kita menerapkan fungsi kuantil qchisq dari distribusi Chi-Squared terhadap nilai desimal 0,95.

qchisq(.95, df=6)                                      # 6 degrees of freedom 
## [1] 13

Persentil ke-95 dari distribusi Chi-Squared dengan 6 derajat kebebasan adalah 12.59159.

Distribusi Student t

Asumsikan bahwa variabel acak Z memiliki distribusi normal standar, dan variabel acak lainnya V memiliki distribusi Chi-Squared dengan m derajat kebebasan. Asumsikan lebih lanjut bahwa Z dan V bebas, maka besaran berikut mengikuti Student t distribusi dengan m derajat kebebasan.

\[ t={Z\over \sqrt{V/m}} \sim t_{(m)} \]

Visualisasi distribusi student t

library(visualize)                                     # distribution visualization
par(mfrow=c(2,2))                                      # partition graph by 2x2 rows and column
visualize.t(stat=1,df=4,section="lower")               # evaluates lower tail
visualize.t(stat=c(3,5),df=6,section="bounded")        # evaluates bounded region
visualize.t(stat=1,df=4,section="upper")               # evaluates upper tail

Kasus 12

Tentukan persentil ke-2,5 dan ke-97,5 dari distribusi Student t dengan 5 derajat kebebasan. Kita menerapkan fungsi kuantil qt dari distribusi Student t terhadap nilai desimal 0,025 dan 0,975.

qt(c(.025, .975), df=5)                                # 5 degrees of freedom 
## [1] -2.6  2.6

Persentil ke-2,5 dan 97,5 dari distribusi Student t dengan 5 derajat kebebasan berturut-turut adalah -2,5706 dan 2,5706.

Distribusi F

Statistik F didefinisikan sebagai perbandingan 2 variabel random chi-kuadrat yang independen dan masing-masing dibagi dengan derajat bebasnya. Berarti;

F={V_1/m_1 V_2/m_2} F_{(m_1,m_2)}

Visualisasi Distribusi F

library(visualize)                                     # distribution visualization
par(mfrow=c(2,2))                                      # partition graph by 2x2 rows and column
visualize.f(stat=1,df1=5,df2=4,section="lower")        # evaluates lower tail
## Warning: df2 < 4, variance is not able to be generated.
visualize.f(stat=c(3,5),df1=6,df2=3,section="bounded") # evaluates bounded region
## Warning: df2 < 4, variance is not able to be generated.
visualize.f(stat=1,df1=5,df2=4,section="upper")        # evaluates upper tail
## Warning: df2 < 4, variance is not able to be generated.

Kasus 13

Temukan persentil ke-95 dari distribusi F dengan (5, 2) derajat kebebasan. Dengan menerapkan fungsi kuantil qf dari F distribusi terhadap nilai desimal 0,95.

qf(.95, df1=5, df2=2) 
## [1] 19

Persentil ke-95 dari F distribusi dengan (5, 2) derajat kebebasan adalah 19,296.