R 概率函数

2017-07-15 ai language

均匀分布

也就是 Random Uniform ,对应了 runif() 函数。

runif(n, min=0, max=1)
   n 生成随机数的数量;
   min 均匀分布的下限,默认是 0;
   max 均匀分布的上限,默认是 1。

可以不指定 minmax 值,此时会直接使用默认的值。

如下生成 100 个均匀分布的随机数,并绘制概率直方图,以及均匀分布的密度函数线。

> x=runif(100)
> hist(x, prob=T, col=gray(.9), main="uniform on [0,1]")
> curve(dunif(x,0,1), add=T)

正态分布随机数

在R语言中,生成正态分布随机数的函数是:rnorm()

rnorm(n, mean=0, sd=1)
   n 随机数的数量;
   mean 正太分布的均值,默认为 0;
   sd 正太分布的标准差,默认为 1。

同样可以忽略 meansd 的值。

随机产生 100 个标准正态分布随机数,并作其概率直方图,再添加正态分布的密度函数线。

> x=rnorm(1000)
> hist(x, breaks=100, prob=T, main="normal mu=0 sigma=1")
> curve(dnorm(x), add=T)

二项分布随机数

二项分布 Binomial 是指 n 次独立重复伯努利试验成功的次数的分布,每次伯努利试验的结果只有两个,成功和失败,记成功的概率为 p 。

rbinom(n, size, prob)
  n 生成的随机数数量;
  size 进行伯努利试验的次数;
  prob 一次贝努力试验成功的概率。
> par(mfrow=c(1, 3))
> p=0.25
> for(n in c(10, 20, 50))
{
	x=rbinom(100, n, p)
	hist(x, prob=T, main=paste("n =", n))
	xvals=0:n
	points(xvals, dbinom(xvals,n,p), lwd=3)
}
> par(mfrow=c(1, 1))

除了上述获取随机数的 rbinom() 函数之外,与二项分布相关的还有:

pbinom(q, size, prob) 计算累积概率
dbinom(x, size, prob) 计算取某个值的特定概率
qbinom(p, size, prob) quantile function 分位数函数。

例如,在一次实验中,事件 A 发生的概率为 0.1,那么进行 11 次这样的实验,观察到 4 次的概率是多少?

> dbinom(4, 11, 0.1)
[1] 0.0157838

观察到小于等于 4 次的概率是多少?

> pbinom(4, 11, 0.1)
[1] 0.997249

指数分布随机数

R生成指数分布随机数的函数是:rexp()  

其句法是:rexp(n,lamda=1) n表示生成的随机数个数,lamda=1/mean

> x=rexp(100,1/10)           # 生成100个均值为10的指数分布随机数
> hist(x,prob=T,col=gray(0.9),main=“均值为10的指数分布随机数”) 
> curve(dexp(x,1/10),add=T) #添加指数分布密度线