1、 we want to simulate fromFF, a (cumulative) distribution function. Ingredients :目标:我们想要从FF中模拟一个(累积)分布函数。 成分:1.累积分布函数FF的倒数F-1F-1,又名分位数函数。2.从统一(0,1)分布产生随机数,这是(0,1)(0,1)上的随机数。 想法:如果我们在(0,1)(0,1)上生成数字uiui,那么变换的数字F-1(ui)F-1(ui)根据FF分配。这是一个被称为“概率积分变换”的理论结果,抽样方法被称为“逆变换抽样”。下面的R代码包含一个关于使用这种方法从N(0,1)中产生10,000万
2、个数字的R。#示例1:逆CDF方法#3rm(list=ls()# clear memory# Generate 10,000 uniform numbersu=runif(10000)# Apply the quantile normal functionz=qnorm(u)# histogramhist(z,breaks=100,probability=T)curve(dnorm,-5,5,add=T,col=blue,lwd=2)box()# Summary statisticsmedian(z)# median# 1 -0.02004848quantile(z,c(0.025,0.975
3、)# 95% probability interval# 2.5% 97.5% # -1.933969 1.936913mean(z)# mean# 1 -0.01259031sd(z)# standard deviation# 1 0.9970053# Generate one uniform and map it to a normal random number set.seed(123)u0=round(runif(1),digits=2)# Generate a single uniform on (0,1)print(u0)# 1 0.29z0=round(qnorm(u0),di
4、gits=2)# Transform it using the normal quantile functionprint(z0)# 1 -0.55curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=,lwd=2,cex.lab=1.5)# plotaxis(side=2, at=c(u0,0,1),cex.axis=1.5)axis(side=1, at=c(z0,-5,5),cex.axis=1.5)abline(v=z0,lty=2,col=); abline(h=u0,lty=2,col=)points(z0,u0,col=red,pch=20
5、,cex=2)# Generate one uniform and map it to a normal random number (again with a different seed)set.seed(12345)u0=round(runif(1),digits=2)# Generate a single uniform on (0,1)print(u0)# 1 0.72z0=round(qnorm(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 0.58axis(side=2, at=c(u0,0,1),cex.axis=1.5)axis(side=1, at=c(z0,-5,5),cex.axis=1.5)abline(v=z0,lty=2,col=MCMC简介# Generate one uniform and map it to a normal rand
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1