R有一群內建的機率分布
dbeta()
dbinom()
dcauchy()
dchisq()
dexp()
df()
dgamma()
dhyper()
dlnorm()
dmultinom()
dnbinom()
dnorm()
dpois()
dt()
dunif()
dweibull()
每一種機率分布都有四個功能函數:
d<name>()
: density or probability functionp<name>()
: cumulative density functionq<name>()
: quantile functionr<name>()
: random samplingd<name>
】Density Function 機率密度函數 (PDF)d<name>
用來求取對應到某一數值的機率密度, 給定機率分佈的種類和它所需要的「參數」,我們就能確定「值域」之中每一點的機率密度; d<name>
通常用來畫機率密度函數
par(mfrow=c(2,3), mar=c(2,4,3,2), cex=0.6)
for(n in c(10, 20)) for(p in c(0.2, 0.5, 0.8))
dbinom(0:n, n, p) %>%
barplot(names=0:n, main=sprintf("Binom[n=%d, p=%.1f]", n, p), las=2)
par(mfrow=c(2,2), mar=c(2,4,3,2), cex=0.7)
curve(dnorm(x,mean=50,sd=15),0,100,main="Normal")
curve(dunif(x,min=0,max=100),0,100,main="Uniform")
curve(dlnorm(x,meanlog=log(50),sdlog=1.5),0,100,main="Log-Normal")
curve(dexp(x,rate=0.05),0,100,main="Exponential")
Normal[mean=40,sd=15]
這個機率密度函數在x = c(0,20,40,60,80,100)
這些點的值[1] 0.00010282 0.00359940 0.02129653 0.02129653 0.00359940 0.00010282
r<name>
】Random Sampling 隨機抽樣r<name>
常用來從給定參數的機率分佈之中隨機抽出樣本
par(mfrow=c(3,2), mar=c(3,2,2,2),cex=0.6)
for(n in c(20, 200, 2000)) {
hist(rnorm(n, mean=50, sd=10),breaks=10,main=paste("Normal",n))
hist(runif(n, min=0, max=100),breaks=10,main=paste("Uniform",n))
}
p<name>
】Cumulative PDF (CDF) 累積機率函數p<name>
求取變數落在某數值區間的機率,給定機率分佈,我們常會想要知道目標變數會落在某一個數值空間的機率,如果隨機變數X ~ Normal[mu=50, sd=10]
,pnorm(x=55, 50, 10)
會傳回X < 55
的機率;
[1] 0.69146
🧙 問題討論:
A. 如果隨機變數X ~ Normal[mu=100, sd=20]
,請求出以下機率:
■ P[X < 110]
■ P[130 > X > 110]
■ P[X > 130]
B. 請畫出圖形來解釋你的運算
[1] 0.308538 0.624655 0.066807
par(mfrow=c(1,2), mar=c(2,2,2,2),cex=0.7)
curve(dnorm(x,100,20),40,160,main="PDF")
abline(v=c(x1,x2),col='gray',lty=3)
x = seq(x1,x2,length=100)
polygon(c(x, x2, x1), c(dnorm(x,100,20), 0, 0), col="#00E9001F", border=NA)
#
curve(pnorm(x,100,20),40,160,main="CDF")
abline(v=c(x1,x2),col='gray',lty=3)
abline(h=c(p1,p2),col='pink')
q<name>
】Quantile 百分位函數q<name>
通常用來求取對應到某一機率的臨界值,如果隨機變數X ~ Normal[mu, sd]
,qnorm(p=0.8, mu, sd)
會傳回Pr[X < x1] = 0.8
的臨界值x1
;
[1] 116.83
🧙 問題討論:
A. 如果隨機變數X ~ Normal[mu=100, sd=20]
,請求X
的90%信賴區間
B. 請畫出圖形來解釋你的運算