资源描述:
《R语言实验报告6》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、实验目的1.用R生成服从某些具体已知分布的随机变量二、实验内容在R中各种概率函数都有统一的形式,即一套统一的前缀+分布函名:d表示密度函数(density);p表示分布函数(生成相应分布的累积概率密度函数);q表示分位数函数,能够返回特定分布的分位(quantile);r表示随机函数,生成特定分布的随机数(random)。1、通过均匀分布随机数生成概率分布随机数的方法称为逆变换法。对于任意随机变量X,其分布函数为F,定义其广义逆为:F-(u)=inf{x;F(x)≥u}若u~u(0,1),则F-(
2、u)和X的分布一样Example1如果X~Exp(1)(服从参数为1的指数分布),F(x)=1-e-x。若u=1-e-x并且u~u(0,1),则X=-logU~Exp(1)则可以解出x=-log(1-u)通过随机数生成产生的分布与本身的指数分布结果相一致R代码如下:nsim=10^4U=runif(nsim)X=-log(U)Y=rexp(nsim)X11(h=3.5)Xpar(mfrow=c(1,2),mar=c(2,2,2,2))hist(X,freq=F,main="ExpfromUniform
3、",ylab="",xlab="",ncl=150,col="grey",xlim=c(0,8))curve(dexp(x),add=T,col="sienna",lwd=2)hist(Y,freq=F,main="ExpfromR",ylab="",xlab="",ncl=150,col="grey",xlim=c(0,8))curve(dexp(x),add=T,col="sienna",lwd=2)2、某些随机变量可由指数分布生成。若Xi~Exp(1)独立同分布的随机变量,那么从Xi出发可以得到
4、以下三个标准分布Example2生成自由度为6的χ2分布。R代码如下:nsim=10^4U=matrix(data=U,nrow=3)X=-log(U)X=2*apply(X,2,sum)Y=rchisq(nsim,df=6)par(mfrow=c(1,2),mar=c(2,2,2,2))hist(X,freq=F,main="chisqfromExp",ylab="",xlab="",ncl=150,col="grey",xlim=c(0,8))d=density(Y)plot(d)3、一种正态分布
5、随机变量模拟使用Box-Muller算法得到N(0,1)随机变量。这种方法与基于中心极限定理的近似算法相比较,Box-Muller算法是精确的,它由两个均匀分布产生两个独立的正态分布,其仅有的缺点是必须计算log,cos,sin。具体解释如下:如果两个随机变量U1,U2独立同分布于u(0,1),那么由此可以产生两个独立的正态分布X1,X2。Example3两次产生相同的10000个服从正态分布的随机数,作其中一个的概率直方图,并添加正态分布的密度函数线。nsim=10^4set.seed(22)x1<
6、-rnorm(nsim,mean=0,sd=1)set.seed(22)x2<-rnorm(nsim,mean=0,sd=1)这里的x1,x2数值完全相同。4、设随机变量X的分布列P{X=xi}=pi,记p(0)=P{X≤0}=0,…,p(i)=P{X≤xi}=。设r是[0,1]区间上的均匀分布的随机数。当且仅当p(i-1)size=1;p=0.5>rbinom
7、(10,size,p)[1]1000011010接下来生成服从B(10,0.5)的二项分布>size=10;>p=0.5>rbinom(5,size,p)[1]66585由此可见,随着实验次数n的增大,二项分布越来越接近正态分布。R代码如下size=1;p=0.5rbinom(10,size,p)#生成5个服从B(10,0.5)的二项分布随机数size=10;p=0.5rbinom(5,size,p)par(mfrow=c(1,3))p=0.25for(ninc(10,20,50)){x<-rbino
8、m(100,n,p)hist(x,prob=T,main=paste("n=",n))xvals=0:npoints(xvals,dbinom(xvals,n,p),type="h",lwd=3)}par(mfrow=c(1,1))5.服从beta分布的随机变量的一般算法可以基于Accept-Rejectmethod来生成,用的工具分布为均匀分布U[0,1],假设两个参数都大于1(通用的rbeta函数无此约束)。上界M为beta分布密度的最大值,Exam