1、最新R语言马尔科夫链蒙特卡洛MCMC分析报告 附代码数据R语言马尔科夫链蒙特卡洛MCMC简介MCMC采样器方法1:逆累积分布函数 Aim: 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分配。这是
2、一个被称为“概率积分变换”的理论结果,抽样方法被称为“逆变换抽样”。下面的R代码包含一个关于使用这种方法从N(0,1)中产生10,000万个数字的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()# Summa
3、ry statisticsmedian(z)# median# 1 -0.02004848quantile(z,c(0.025,0.975)# 95% probability interval# 2.5% 97.5% # -1.933969 1.936913mean(z)# mean# 1 -0.01259031sd(z)# standard deviation# 1 0.9970053rm(list=ls()# clear memory# Generate one uniform and map it to a normal random number set.seed(123)u0=rou
4、nd(runif(1),digits=2)# Generate a single uniform on (0,1)print(u0)# 1 0.29z0=round(qnorm(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 -0.55curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,lwd=2,cex.lab=1.5)# plotaxis(side=2, at=c(u0,0,1),cex.axis=1.5)axis(side=1, at=c(z
5、0,-5,5),cex.axis=1.5)abline(v=z0,lty=2,col=blue); abline(h=u0,lty=2,col=blue)points(z0,u0,col=red,pch=20,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=ro
6、und(qnorm(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 0.58curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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=blue); abline(h=u0,lty=2,col=blue)poi
7、nts(z0,u0,col=red,pch=20,cex=2)MCMC简介MCMC采样器方法1:逆累积分布函数 Aim: 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分配。这是一个被称为“概率积
8、分变换”的理论结果,抽样方法被称为“逆变换抽样”。下面的R代码包含一个关于使用这种方法从N(0,1)中产生10,000万个数字的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 statis
9、ticsmedian(z)# median# 1 -0.02004848quantile(z,c(0.025,0.975)# 95% probability interval# 2.5% 97.5% # -1.933969 1.936913mean(z)# mean# 1 -0.01259031sd(z)# standard deviation# 1 0.9970053rm(list=ls()# clear memory# Generate one uniform and map it to a normal random number set.seed(123)u0=round(runif(
10、1),digits=2)# Generate a single uniform on (0,1)print(u0)# 1 0.29z0=round(qnorm(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 -0.55curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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),c
11、ex.axis=1.5)abline(v=z0,lty=2,col=blue); abline(h=u0,lty=2,col=blue)points(z0,u0,col=red,pch=20,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
12、(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 0.58curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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=blue); abline(h=u0,lty=2,col=blue)points(z0,u0
13、,col=red,pch=20,cex=2)MCMC简介MCMC采样器方法1:逆累积分布函数 Aim: 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分配。这是一个被称为“概率积分变换”的理论结果
14、,抽样方法被称为“逆变换抽样”。下面的R代码包含一个关于使用这种方法从N(0,1)中产生10,000万个数字的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 statisticsmedia
15、n(z)# median# 1 -0.02004848quantile(z,c(0.025,0.975)# 95% probability interval# 2.5% 97.5% # -1.933969 1.936913mean(z)# mean# 1 -0.01259031sd(z)# standard deviation# 1 0.9970053rm(list=ls()# clear memory# Generate one uniform and map it to a normal random number set.seed(123)u0=round(runif(1),digits
16、=2)# Generate a single uniform on (0,1)print(u0)# 1 0.29z0=round(qnorm(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 -0.55curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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
17、.5)abline(v=z0,lty=2,col=blue); abline(h=u0,lty=2,col=blue)points(z0,u0,col=red,pch=20,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),digi
18、ts=2)# Transform it using the normal quantile functionprint(z0)# 1 0.58curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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=blue); abline(h=u0,lty=2,col=blue)points(z0,u0,col=red,
19、pch=20,cex=2)MCMC简介MCMC采样器方法1:逆累积分布函数 Aim: 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分配。这是一个被称为“概率积分变换”的理论结果,抽样方法被称为“
20、逆变换抽样”。下面的R代码包含一个关于使用这种方法从N(0,1)中产生10,000万个数字的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)# med
21、ian# 1 -0.02004848quantile(z,c(0.025,0.975)# 95% probability interval# 2.5% 97.5% # -1.933969 1.936913mean(z)# mean# 1 -0.01259031sd(z)# standard deviation# 1 0.9970053rm(list=ls()# clear memory# Generate one uniform and map it to a normal random number set.seed(123)u0=round(runif(1),digits=2)# Gene
22、rate a single uniform on (0,1)print(u0)# 1 0.29z0=round(qnorm(u0),digits=2)# Transform it using the normal quantile functionprint(z0)# 1 -0.55curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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
23、(v=z0,lty=2,col=blue); abline(h=u0,lty=2,col=blue)points(z0,u0,col=red,pch=20,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)# Tr
24、ansform it using the normal quantile functionprint(z0)# 1 0.58curve(pnorm,-5,5,ylab=CDF,xlab=z, xaxt=n, yaxt=n,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=blue); abline(h=u0,lty=2,col=blue)points(z0,u0,col=red,pch=20,ce
25、x=2)MCMC简介MCMC采样器方法1:逆累积分布函数 Aim: 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分配。这是一个被称为“概率积分变换”的理论结果,抽样方法被称为“逆变换抽样”。下面
26、的R代码包含一个关于使用这种方法从N(0,1)中产生10,000万个数字的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)# 95% probability interval# 2.5% 97.5% # -1.933969 1.936913mean(z)# mean# 1 -0.01259031sd(z)# standard deviation# 1 0.9970053rm(list=ls()# clear memory# Generate one uniform and map it to a normal rand
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1