欢迎来到天天文库
浏览记录
ID:59506437
大小:672.50 KB
页数:20页
时间:2020-09-09
《统计建模与R软件第十讲-(2017).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十讲计算机模拟模拟的概念模拟就是利用物理的、数学的模型来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法。模拟的基本思想是建立一个试验模型,这个模型包含所研究系统的主要特点.通过对这个实验模型的运行,获得所要研究系统的必要信息。用R作随机模拟计算作为统计工作者,我们除了可以用R迅速实现新的统计方法,还可以用R进行随机模拟。验证我们的算法比较不同算法的优缺点发现改进统计方法的方向,是进行统计研究的最有力的计算工具之一。模拟的方法1、物理模拟:对实际系统及其过程用功能相似的实物系统去模仿。例如
2、,军事演习、船艇实验、沙盘作业等。物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难。而且,许多系统无法进行物理模拟,如社会经济系统、生态系统等。在实际问题中,面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用。这时,计算机模拟几乎成为唯一的选择。在一定的假设条件下,运用数学运算模拟系统的运行,称为数学模拟。现代的数学模拟都是在计算机上进行的,称为计算机模拟。2、数学模拟计算机模拟可以反复进行,改变系统的结构和
3、系数都比较容易。随机模拟方法是一种应用随机数来进行计算机模拟的方法.此方法对研究的系统进行随机抽样观察,通过对样本值的观察统计,求得所研究系统的某些参数.随机模拟方法也称为蒙特卡洛方法(MonteCarlo),蒙特卡洛是摩纳哥的一个著名赌城,二战期间,冯诺依曼和乌拉姆从事与研制原子弹有关的秘密工作,以赌城MonteCarlo最为秘密代号称呼,他们的具体工作时对裂变物质的中子随机扩散进行模拟。Buffon投针实验(估计π值)模型:假设平面上有无数条距离为L的等距平行线,现向该平面随机地投掷长度a<=L
4、的细针,则可以计算针与任一平行线相交的概率。此处随机投针可以这样理解:针的中心与最近的平行线间的距离x均匀地分布在区间[0,L/2]上,针与平行线的夹角α均匀地分布在区间[0,π]上。于是针与线相交的充要条件是x<=a/2*sinα,从而针线相交的概率为p=2a/πL,π=2a/pL(1)产生随机数。产生n个相互独立的随机变量抽样序列(2)模拟实验,检验不等式x<=a/2*sinα设上面的实验有k次成功的,则>buffon<-function(n,L=1,a=0.8){alpha=runif(n,0
5、,pi);x=runif(n,0,L/2);k<-0;for(iin1:n){if(x[i]<=a/2*sin(alpha[i]));k=k+1;}2*a*n/(k*L);}随机模拟计算的思路:[1]针对实际问题建立一个简单且便于实现的概率统计模型,使所求的解恰好是所建模型的概率分布或某个数字特征,比如,是某个事件的概率或该模型的期望值;[2]对模型中的随机变量建立抽样方法,在计算机上进行模拟试验,抽取足够的随机数,并对有关的事件进行统计;[3]对模拟试验结果加以分析,给出所求解的估计及其精度(方差
6、)的估计;[4]必要时,还应改进模型以降低估计方差和减少试验费用,提高模拟计算的效率。用蒙特卡洛方法进行计算机模拟的步骤:[1]设计一个逻辑框图,即模拟模型.这个框图要正确反映系统各部分运行时的逻辑关系。[2]模拟随机现象.可通过具有各种概率分布的模拟随机数来模拟随机现象.随机模拟最基本的需要是产生伪随机数,R中已提供了大多数常用分布的伪随机数函数,可以返回一个伪随机数序列向量。这些伪随机数函数以字母r开头,比如rnorm()是正态伪随机数函数,runif()是均匀分布伪随机数函数,其第一个自变量是
7、伪随机数序列长度n。关于这些函数可以参见系统帮助文件。下例产生1000个标准正态伪随机数:>y<-rnorm(1000)这些伪随机数函数也可以指定与分布有关的参数,比如下例产生1000个均值为150、标准差为100的正态伪随机数:>y<-rnorm(1000,mean=150,sd=100)产生伪随机数序列是不重复的,实际上,R在产生伪随机数时从一个种子出发,不断迭代更新种子,所以产生若干随机数后内部的随机数种子就已经改变了。有时我们需要模拟结果是可重复的,这只要我们保存当前的随机数种子,然后在每次
8、产生伪随机数序列之前把随机数种子置为保存值即可:>the.seed<-.Random.seed>x1<-rnorm(1000);x2<-rnorm(1000);#x1和x2不同>.Random.seed<-the.seed;>y<-rnorm(1000);#y和x1是相同的下例产生服从一个简单的线性回归的数据。#简单线性回归的模拟>lm.simu<-function(n){#先生成自变量。假设自变量x的取值范围在150到180之间,大致服从正态分布。x<-rnorm(
此文档下载收益归作者所有