pacman::p_load(dplyr)

【1】\(n\)很大時,二項分佈(Binominal Dist.)會趨近於常態(Normal)分佈

par(mfrow=c(1,1), mar=c(3,4,3,1), cex=0.7)
n = 1000; p = 0.2
rbinom(500000, n, p) %>% hist(breaks=80, freq=F, main="")
curve(dnorm(x, mean=n*p, sd=sqrt(n*p*(1-p))), col='red', lwd=2, add=T)

# 在histogram上加常態分佈的紅線
#二項分布當n很小的時候,就不會接近常態分佈
par(mfrow=c(1,2), cex=0.7)
n = 10; p = 0.2
rbinom(100000, n, p) %>% table %>% barplot()
rnorm(100000, n*p, sqrt(n*p*(1-p))) %>% hist(freq=F)

💡 : 當期望值夠大的時候, 二項分佈會以期望值為中心向兩邊對稱的伸展,但是如果期望值不夠大的話,這個分佈的左尾就會受到擠壓,變成一個不對稱的分佈。

【2】\(n \times p\)不大時,二項分佈(Binominal Dist.)會趨近於Poisson分佈

par(mfrow=c(1,2), cex=0.7)
rbinom(100000, 1000, 0.002) %>% table %>% barplot(main="Boinomial")
rpois(100000, 2)  %>% table %>% barplot(main="Poisson")


🗿 : 如果Poisson分佈很接近二項分佈,我們為甚麼還需要Poisson分佈呢?

因為Poisson可以幫助我們在n和p未知,而只知道lambda的情況下,做出大概的機率分佈,二項分布具有複雜和較準確的特性,但需要知道確切的事件發生機率以及次數。

💡 : 簡單、一般性 vs 複雜、準確性

【3】Poisson分佈的特性:(1)期望值等於標準差 & (2)期望值對加法有封閉性

sapply(1:10, function(lambda) {
  x = rpois(1000000, lambda)
  c(mean(x), var(x))
  })
       [,1]   [,2]   [,3]   [,4]   [,5]   [,6]   [,7]   [,8]   [,9]   [,10]
[1,] 1.0013 2.0005 3.0031 3.9997 5.0033 5.9976 6.9998 8.0017 9.0032 10.0003
[2,] 1.0018 1.9971 2.9993 4.0068 5.0018 6.0044 6.9937 7.9988 8.9899  9.9892
par(mfrow=c(1,2), cex=0.7)
(rpois(100000, 1) + rpois(100000, 2)) %>% table %>% barplot(main="Pois[1] + Pois[2]")
rpois(100000, 3)  %>% table %>% barplot(main="Pois[3]")

💡 : 透過模擬:(1)建立變數向量(隨機變數);(2)驗證理論;(3)做預測與估計

K = 100000
par(mfrow=c(1,1), cex=0.7)
d1 = sample(faithful$eruptions, K, T); #d1 %>% hist
d2 = rpois(K, 6); #d2 %>% table %>% barplot
d3 = rnorm(K, 0, 1); #d3 %>% hist
(d1*d2+4*d3) %>% hist

【4】Geometric Dist.基本上是等待時間的分佈

我們可以用二項分佈來模擬Geometric Dist.

par(mfrow=c(1,2), mar=c(3,3,3,1), cex=0.7)
replicate(100000, which(rbinom(100, 1, .3) == 1)[1] - 1) %>% 
  table %>% barplot(main="Binomial Simulation")
rgeom(100000, 0.3) %>% table %>% barplot(main="Geometric")

🗿 : 如果有一台機器每一天壞掉的機率是0.05,那麼在20天之內,它還能正常工作的機率分別是多少呢?

0.34056

1- dgeom(0:20, 0.05) %>% cumsum # cumsum->累加
 [1] 0.95000 0.90250 0.85737 0.81451 0.77378 0.73509 0.69834 0.66342 0.63025
[10] 0.59874 0.56880 0.54036 0.51334 0.48767 0.46329 0.44013 0.41812 0.39721
[19] 0.37735 0.35849 0.34056
# 若單純跑dgeom(0:20, 0.05)出來的機率指的是第21天壞掉的機率?感覺就是指20天內機器能正常工作的機率。
# 為什麼要跑累加出來的機率(0.6544)?
# 答案好像是要1- dgeom(0:20, 0.05) %>% cumsum


【5】Geometric Dist.的期望值

🗿 : 如果平均而言每一個捐贈者有我需要的器官的機率是5%,那麼平均我要等多少個捐贈者才能等到我想要用的器官呢?
19個

(1/0.05)-1
[1] 19

🗿 : 不用Geometric的期望值公式,妳可以使用dgeom()算出同樣的答案嗎?

sum(0:1000 * dgeom(0:1000, 0.05)) # 利用dgeom算出Geometric Dist的期望值
[1] 19



💡 隨機變數的平均值與標準差公式
  ■ \(E(c) = c ; V(c) = 0\)
  ■ \(E(a+b X) = b(X) ; V(a+b X) = b^2 V(X)\)
  ■ \(E(a X + b Y) = aE(X) +bE(Y)\)
  ■ \(V(a X + b Y) = a^2V(X) +b^2V(Y) + 2abV(X)V(Y)\)

💡 數理推論為基礎的機率統計之所以難學,主要是因為:
  ■ 隨機變數的觀念很抽象;
  ■ 光使用數學公式很難理解『分佈』的概念;
  ■ 有很多不同種類的分佈,公式計不完;
  ■ 隨機變數之間要做四則運算常常非常困難;

🗿 : 在R的環境之下,我們如何克服上述的各項困難呢?


1. 在R的環境中,隨機變數以向量來表示,讓我們可以有個具體的概念。 R提供了許多function 2. R提供了像是histogram/barplot的功能,藉由這些功能我們可以畫出機率分佈圖, 對於各項分佈有基本的概念。 3. R提供了各種分佈的function,像是:dbinom/pbinom/qbinom/rbinom,我們只需要將必要的參數代入至這些功能裡,就能輕鬆得到各分佈的結果。 4. 在R的環境下各種類分佈是可以直接做四則運算的,只需要在各類分佈的function間加上加減乘除的符號,就可以直接計算出結果。