在全国身高抽样调查中,身高可以有1.85米,1.851米,或者1.8501米。这类变量,取值能精确到无限小数位的,称之为连续随机变量(continuous random variable).
中学抽样调查中,班级人数的结果可以有23, 34, 但绝不可能出现23.5,这类随机变量称为离散随机变量(discrete random variable).
概率分布( probability distribution) 直白点,就是把所有可能的结果列出,并标出对应概率。
掷骰子的概率分布如下
零、伯努利随机变量(Bernoulli random variable)
国足之光小明,一次射门,70%几率能破门得分,30%几率丢球。我们把得分的结果记为1,没进球的结果标记为0. 设小明射门结果为随机变量X,X的概率分布如下:
X这类变量,只有2种可能结果,称为伯努利随机变量(Bernoulli random variable)。
壹、二项分布(Binomial distribution)
用于描述发生次数和概率
在和南葛足球队的比赛中,小明作为替补在下半场登场。根据预言,小明有5次射门机会,可惜,预言关于进球数的部分已损毁。假设进球数为X,X的期望为
方差为
根据公式
概率分布用柱状图展示如下:
上面的例子,由若干个概率相同且互相独立的伯努利试验组成,其结果的概率分布,就是二项分布。
(1) 二项分布的条件
- 实验次数固定
- 每一次事件为伯努利试验
- 每次事件独立
- 每次事件的发生概率p相同
(2) R模拟
知道变量符合二项分布后,我们能用计算机做模拟实验。下面以R为例。
- 小明一个赛季射门的次数符合均值123、方差20的正太分布,请问赛季进球数小等于70的概率是多少?
[1]
#模拟一次
set.seed(5)
num.shoot<-floor(rnorm(1,123,20))
rbinom(1,num.shoot,0.7)
[1] 63
小明共进了63球。然而一次模拟的结果有很强的随机性。根据大数定理,模拟的次数越多,就越接近真实概率,下面我们就模拟1000,000次, 并用直方图展示。
hist(replicate(1000000,rbinom(1,floor(rnorm(1,123,20)),0.7)))
从直方图看来, 进球数小于等于70的次数不小。我们统计结果中小于等于70的数量,并计算占比
[2]
mean(replicate(1000000,rbinom(1,floor(rnorm(1,123,20)),0.7))<=70)
[2] 0.152833
(3)和二项分布相关R公式
5次伯努利试验,每次成功概率为0.7,进球数为n
[3]#求n=2的概率
dbinom(2,5,0.7)
[4]#求n<=2的概率
pbinom(2,5,0.7)
[5]模拟二项分布7次,列出每次n
rbinom(7,5,0.7)
[3]0.1323
[4]0.1631
[5] 5 2 4 4 4 5 5
贰、几何分布(Geometric distribution)
描述目标第一发生所需要的次数和概率
一场足球赛,小明需要几次射门,才能进球?
我们用R模拟小明10次射门的情况,1代表进球,0代表不进。
#模拟一场比赛,10次射门的进球情况
set.seed(5)
rbinom(10,1,0.7)
[1] 1 1 0 1 1 0 1 0 0 1
#找到第一次进球的射门次数
which(rbinom(10,1,0.7)==1)[1]
[2] 1
基于大数定理, 我们把模拟次数提高到500000场,结果如下:
set.seed(5)
a<-table(replicate(500000,which(rbinom(10,1,0.7)==1)[1]))
data.frame(a) %>%
rename(num=Var1) %>%
mutate(prob=Freq/500000) %>%
ggplot(aes(x=factor(num),y=prob))+
geom_bar(stat="identity")+
labs(x="num")+
geom_text(aes(label=round(prob,4)),vjust=-0.3,size=3)
小明进球所需要的射门次数,可以用下面公式,直接精确计算
下面是前10次的概率分布(保留4位小数)
可以看到,50万次模拟得到的结果已经非常接近真实概率,这样的概率分布就是几何分布。
次数的期望、方差、标准差由计算公式可得1.4286, 0.6122, 0.7825.
即便不知道计算公式,我们也能通过模拟数据得到相似结果。
set.seed(5)
a<-replicate(500000,which(rbinom(10,1,0.7)==1)[1])
mean(a,na.rm=T)
var(a,na.rm = T)
sd(a,na.rm=T)
[1] 1.429405
[2] 0.6135877
[3] 0.7833184
(1) 在R中的精确计算和模拟
用dgeom()计算小明射门1次就进球的概率
dgeom(0,0.7)
[1]0.7
第2次射门才进球的概率
dgeom(1,0.7)
[1]0.21
前2次射门就进球的概率
pgeom(1,0.7)
[1]0.91
模拟小明20场比赛,第一次进球的射门次数
set.seed(5)
rgeom(10,0.7)+1
[1] 2 1 1 1 1 1 2 1 1 1 3 1 3 1 1 1 1 1 1 1
叁、泊松分布(Poisson distribution)
已知平均发生次数,描述发生次数及其概率
常见于小概率事件
举个例子,根据历史数据统计,小明每周平均发1次神经,问小明下周的发病情况?(小明随时可能发病)
我们先以天为单位,假设小明的发病情况由7个伯努利试验组成,计算结果如下
set.seed(5)
data.frame(num=0:8,freq=dbinom(0:8,7,1/7)) %>%
ggplot(aes(x=num,y=freq))+
geom_bar(stat="identity")+
geom_text(aes(label=round(freq,4)),vjust=-0.3,size=3)
为了更接近随时发病的情况,把时间细分到小时,发病情况由168个伯努利试验组成,每个试验发病概率为
进一步细分到分钟,结果较前次变化不大,似乎趋向某个结果。
最后细分到秒,结果几乎没变化。
如果将时间细分至无穷小,就能描述随时发病的情况,这时结果的概率分布符合泊松分布,可以用下面公式计算:
ℷ: 一段时间内, 发生的平均次数.
概率分布的柱状图如下:
data.frame(num=0:8,freq=dpois(0:8,1)) %>%
ggplot(aes(x=num,y=freq))+
geom_bar(stat="identity")+
geom_text(aes(label=round(freq,4)),vjust=-0.3,size=3)
与时间细分到秒的二项分布(保留4位小数)十分接近。
因此,泊松分布可以看作二项分布的一个特例:
概率p趋向0 (小概率),n趋向(每个时刻都发生目标事件) , 目标发生的平均次数为, 且为常数。
泊松分布条件:
- 目标事件在a时段平均发生
次, 概率为,那么在时段, 目标发生的概率为
- 每个极小的区间是一个伯努利试验
- 每次事件独立发生, 概率相同;比如五十年一遇的天才今天出生了,明天这样的天才诞生的概率还是五十年一遇, 而不是0.
这是第4篇《Statistics with R》学习记录, 结合了过去的库存笔记. 题图来自unsplash.