概率分布与R语言

时间:2024-03-16 15:54:49

1、预备知识

概率:某事件发生的可能性的大小

随机变量:指变量的值无法预先确定仅以一定的可能性(概率)取值的量。它是由于随机而获得的非确定值,分为离散型随机变量(随机变量只能取有限个值)和连续型随机变量(随机变量可以取一个或多个区间中的任何值)。

离散型随机变量和连续型随机变量之间最根本的区别在于二者在概率计算上是不同的,对一个离散型随机变量,概率函数f(x)给出了随机变量x取某个特定值的概率,而对连续型随机变量,与概率函数相对应的是概率密度函数,也记做f(x)。不同的是,概率密度函数并没有直接给出概率,但是,通过给定区间上曲线f(x)下的面积给出连续型随机变量在该区间取值的概率,因此,当计算连续型随机变量的概率时,我们计算的是随机变量在某个区间内取值的概率。

随机变量的概率分布:描述随机变量取哪些值?取这些值的概率有多大?

分布律:也就是一个二维的表格,分别是随机变量和这个随机变量所对应的事件的概率,比如随机变量取值有0,1,2,每个随机变量对应的事件(可能一个随机变量对应多个事件)的概率分别0.1,0.5,0.4。则分布律的样子如下表:

      X
       0        1        2
      P       0.1       0.5       0.4

由图可以知道,只有离散型的随机变量才会有分布律,连续型的随机变量取值太多了,根本没办法画出来。

分布函数:用于描述随机变量落在任一区间上的概率。如果将x看成数轴上的随机点的坐标,那么分布函数F(x)在x处的函数值就表示x落在区间(-∞,x)上的概率,分布函数也称为概率累计函数。

概率密度函数:指一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。

关于分布函数和概率密度函数:

(1)概率密度函数只是针对连续性变量而言,而分布函数是对所有随机变量取值的概率的讨论,包括连续性和离散型;

(2)已知连续型随机变量的密度函数,可以通过讨论及定积分的计算求出其分布函数;当已知连续型随机变量的分布函数时,对其求导就可得到密度函数.
(3)对离散型随机变量而言,如果知道其概率分布(分布列),也可求出其分布函数;当然知道其分布函数时也可求出概率分布。下图中,曲线是概率密度函数,阴影部分是分布函数。

概率分布与R语言


二、离散型随机变量常见的概率分布

离散型随机变量X只能取有限个可能的值x1,x2…,而且是以确定的概率取这些值的,即P(X=xi)=Pi(I=1,2…),因此可以列出X的所有可能取值x1,x2^及每个值的概率p1,p2…,这就是离散型随机变量的概率分布,其基本性质是:

概率分布与R语言

常见的分布有两点分布/(0-1)分布、等可能分布、二项分布、泊松分布、超几何分布等。

1、二项分布

二项分布是建立在伯努利试验的基础上,满足以下条件:

i.一次试验只有两个可能的结果,即成功和失败。

ii.一次试验成功的概率为p,失败的概率为1-p。

iii.试验是相互独立的,且可以重复进行n次。

在n次试验中,成功的次数对应一个离散型随机变量X,这样,在n次试验中,出现成功的次数的概率分布就是二项分布。

R中二项分布的概率函数为binom:

【产生随机样本】
rbinom(n, size, prob) 
产生n个b(size,prob)的二项分布随机数,其中n为随机数的个数,size为二项分布中试验的次数,prob为单点分布的成功的概率。简单理解就是如果在这n个随机数中进行size次试验,则成功的次数符合二项分布。

概率分布与R语言

【密度函数】

dbinom(x, size, prob):x发生的概率 

概率分布与R语言

若A发生的概率为0.3,则dbinom(20,100,0.3)表示进行100次试验A出现20次的概率;sum(dbinom(20:60,100,0.3))表示出现20—60次的概率。

pbinom(q, size, prob):<=q的事件累积概率

1-pbinom(q, size, prob):>=q的事件累积概率
qbinom(p, size, prob):累积概率p对应的q 

其中,x,q指实验结果(出现成功的次数),size指试验的次数,prob指成功的概率,p为累计概率。




2、多项分布

把二项分布推广至多个(大于2)互斥事件的发生次数,就得到了多项分布,即伯努利抛硬币试验中,硬币比较厚,有可能立起来,即可能是正面,反面,立起来,其概率分别是p1,p2,p3,那么进行n次试验以后,正面出现x1次,反面x2次,立起来x3次的(保证x1+x2+x3=n)概率是多少?

在R中,多项分布的概率函数为multinom:

【产生随机样本】
rmultinom(n, size, prob) 
#抛10次骰子为一次实验,做1000次实验。则n=1000,size=10。 
#prob为每个独立结果出现的概率,其总和为1。 
#结果为k×n的矩阵,k即length(prob) 
【密度函数】 
dmultinom(x, size, prob) 

#x和prob是两个长度相等的向量。


3.泊松分布 Poisson distribution

如果稀有事件A在每个单元(设想为n次试验)内平均出现λ次,那么在一个单元(n次)的试验中,稀有事件A出现次数X=k的概率分布服从Poisson分布。

概率分布与R语言

(其中,参数λ是单位时间(或单位面积)内随机事件的平均发生率)。

如果我们只关心概率为p的事件A发生与否,这样的随机试验称为贝努里试验;重复、独立地做n次贝努里试验,则概率为p的事件A发生的次数X服从二项分布,当n很大时,用这个公式计算概率是相当困难的,即使用计算器甚至用计算机,这时可以利用【泊松分布】。

泊松分布是从二项分布而来的,在二项分布的贝努力试验中,如果试验次数n很大,二项分布的概率p很小,且乘积λ=np比较适中,则事件出现的次数的概率可以用泊松分布来逼近。

(1)泊松分布是离散型概率分布,表示(固定尺度的)连续区间(如时间,距离)上给定的事件发生次数的概率,所以可以看做泊松分布中n是无穷大的。二项分布是固定实验次数下,事件发生次数的概率,n是有界的。

(2)泊松分布中发生次数的期望是固定的λ,事件发生的概率p不定,p=λ/n;二项分布中事件发生的概率p是固定的,发生次数的期望不定,λ=n*p。

3.1 r代码演示

(1)产生随机样本:rpois(n, λ) 

(2)密度函数:
dpois(x, λ):出现次数为x的概率
ppois(q, λ):<=q的事件累积概率

qpois(p, λ):累积概率p对应的q 


概率分布与R语言

概率分布与R语言

概率分布与R语言


4.超几何分布

二项分布属于有放回抽样,而超几何分布属于无放回抽样。假定在N件产品中有D件不合格品,即不合格率为P=D/N,在产品中随机抽n件做检查,发现k件不合格品的概率为:

概率分布与R语言

4.1 R代码演示

从装有n个白球和m个黑球的罐子里,取k个球(无放回),其中白球的个数符合超几何分布。 

(1)产生随机样本:rhyper(nn, m, n, k)

(2)密度函数


dhyper(x, m, n, k, log = FALSE):取出x个白球的概率

phyper(q, m, n, k, lower.tail = TRUE, log.p = FALSE):

取出<=q个白球的累计概率

qhyper(p, m, n, k, lower.tail = TRUE, log.p = FALSE):

累计概率p对应的q

参数解释:

m为罐子中白球的数量

n为罐子中黑球的数量

k为每次试验中要取出的小球的个数

x为无放回取出的k个球中白球的个数

nn为试验的次数


概率分布与R语言


概率分布与R语言

概率分布与R语言

三、连续型变量常见的概率分布

1.正态分布

对于连续型随机变量,一般是给出它的概率密度函数,若随机变量x的概率密度函数满足:

概率分布与R语言

其中,μ和σ均为常数(μ任意、σ>0),则称X服从参数为μ和σ的正态分布,记作

概率分布与R语言
f(x)确定的曲线称为正态曲线,x轴为随机变量x的取值,y轴为x对应的概率密度函数,特别地,当μ=0,σ=1时称为标准正态分布。

(1)μ是遵从正态分布的随机变量的均值,σ2是此随机变量的方差,μ邻近的值的概率大,而取离μ越远的值的概率越小;σ越小,分布越集中在μ附近,σ越大,分布越分散;

(2)正态曲线的图形是关于x=μ对称的钟形曲线,峰值在x=μ处;

(3)正态分布的两个参数μ和σ一旦确定,正态分布的具体形式也就唯一确定,μ决定曲线的具体位置,σ决定曲线的陡峭程度,σ越大,曲线越扁平,σ越小,曲线越陡峭;

(4)对正态分布的积分为1,即正态曲线下的总面积为1.


1.1 正态分布与R

(1)dnorm概率密度函数:dnorm(x,mean,sd),表示满足均值为mean,方差为sd正态分布的密度函数在x处的概率,若不指定mean和sd,则默认为标准正态分布;

(2)rnorm是生成正态分布的随机数:rnorm(n,mean,sd)表示生成n个均值为mean,方差为sd的正态分布的随机数;

(3)pnorm是分布函数:pnorm(q,mean,sd)表示均值为mean方差为sd的正态分布的累计密度函数在q处的值(累计概率);

(4)qnorm是分位数函数:计算给定累计概率p、均值为mean、标准差为sd时的分位数。


1.2 R代码演示

(1)均值不同、方差相同的正态曲线

概率分布与R语言
其中,curve()接受的第一个参数可以是一个关于x(一维变量)的函数,可以直接写成f(x)(f(x)是定义好的函数),from…to指定了第一个参数(函数)的取值范围。

概率分布与R语言

(2)均值相同、方差不同的正态曲线


概率分布与R语言
概率分布与R语言

2卡方分布

【简单理解】

概率分布与R语言



【正式定义】

概率分布与R语言

【R代码演示】

(1)不同*度的卡方分布

> curve(dchisq(x,3),from=0,to=20,xlim=c(0,20),ylab="f(x)",lty=1,

+ cex.lab=0.7,cex.axis=0.7)

> curve(dchisq(x,5),from=0,to=20,add=TRUE,lty=2,cex.lab=0.7,cex.axis=0.7)

> curve(dchisq(x,10),from=0,to=20,add=TRUE,lty=3,cex.lab=0.7,cex.axis=0.7)

> legend(x="topright",legend=c("n=3","n=5","n=10"),lty=1:3)

概率分布与R语言 

(2)计算


dchisq(x, df, ncp = 0, log = FALSE) 

pchisq(q, df, ncp = 0, lower.tail = TRUE, log.p = FALSE) 

qchisq(p, df, ncp = 0, lower.tail = TRUE, log.p = FALSE) 

rchisq(n, df, ncp = 0)

结合前几期的分布,可以发现以r-开头的都是生成随机数,以d-开头的都是概率密度函数,可以求出某分布在x出的概率,以p-开头的都是分布函数,可以求得<=x处的累计概率,以q-开头的都是分位数函数,可以求出累计概率为p时的分位数。卡方分布函数也不例外。

> pchisq(10,df=15)

[1] 0.1802601

> 1-pchisq(10,df=15)

[1] 0.8197399

> qchisq(0.1802601,df=15)

[1] 10

3、F分布

设X1服从以*度为m的卡方分布,X2服从以*度为n的卡方分布,X1与X2独立,则F=(X1/m)/(X2/n)的分布就是*度为m与n的F分布,F分布的图形与卡方分布类似,其形状取决于两个*度。


(1)不同*度的F分布

> curve(df(x,10,20),from=0,to=5,xlim=c(0,5),ylab="f(x)",lty=1,

+ cex.lab=0.7,cex.axis=0.7)

> curve(df(x,5,10),from=0,to=5,add=TRUE,lty=2,cex.lab=0.7,cex.axis=0.7)

> curve(df(x,3,5),from=0,to=5,add=TRUE,lty=3,cex.lab=0.7,cex.axis=0.7)

> legend(x="topright",legend=c("F(10,20)","F(5,10)","F(3,5)"),lty=1:3)

概率分布与R语言   

(2)计算

df(x, df1, df2, ncp, log = FALSE)
pf(q, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)
qf(p, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)
rf(n, df1, df2, ncp)

函数的相关解释与其他分布类似

> pf(3,df1=10,df2=8)

[1] 0.9335491

> 1-pf(3,df1=10,df2=8)

[1] 0.06645086

> qf(0.95,df=10,df2=8)

[1] 3.347163

4、T分布

X1服从标准正态分布N(0,1),X2服从*度为n的卡方分布,且X1X2相互独立,则称变量t=X1/(X2/n)1/2所服从的分布为*度为nt分布。

(1)不同*度的t分布和正态分布比较

> curve(dnorm(x,0,1),from=-3,to=3,xlim=c(-4,4),ylab="f(x)",lty=1,

+ cex.lab=0.7,cex.axis=0.7)

> abline(v=0)

> curve(dt(x,5),from=-4,to=4,add=TRUE,lty=2,cex.lab=0.7,cex.axis=0.7)

> curve(dt(x,2),from=-4,to=4,add=TRUE,lty=3,cex.lab=0.7,cex.axis=0.7)

> legend(x="topright",legend=c("n(0,1)","t(5)","t(2)"),lty=1:3,bty="n")

概率分布与R语言 

(2)计算

dt(x, df, ncp, log = FALSE)
pt(q, df, ncp, lower.tail = TRUE, log.p = FALSE)
qt(p, df, ncp, lower.tail = TRUE, log.p = FALSE)

rt(n, df, ncp)

相关参数的解释如上文。

> pt(-2,df=10)

[1] 0.03669402

> 1-pt(-2,df=10)

[1] 0.963306

> qt(0.025,df=10)

[1] -2.228139