1、基于R软件的统计模拟,奚 潭(南京财经大学统计系2006级),主要内容,1.统计模拟的基本概念,2.赶火车问题,3.R软件的统计模拟功能,4.应用R软件模拟验证大数定律,5.应用R软件模拟验证中心极限定理,一、统计模拟的基本概念,(一)统计模拟的定义,统计模拟即是计算机统计模拟,它实质上是计算机建模,而这里的计算机模型就是计算机方法、统计模型(如程序、流程图、算法等),它是架于计算机理论和实际问题之间的桥梁。它与统计建模的关系如下图。,实际问题,统计、逻辑 模型,计算机模拟(程序、算法),统计、计算机解,实际解,一、统计模拟的基本概念,(二)统计模拟方法,一般地,统计模拟分类如下: 若按状态变
2、量的变化性质分为连续随机模拟和离散随机模拟。 而按变量是否随时间变化又可分为动态随机模拟和静态随机模拟。 常用的统计模拟方法主要有以下几种: 1.蒙特卡罗法 2.系统模拟方法 3.其它方法:包括Bootstrap(自助法)、MCMC(马氏链蒙特卡罗法)等。,一、统计模拟的基本概念,(三)统计模拟的一般步骤,二、赶火车问题,一列列车从A站开往B站,某人每天赶往B站上车。他已经了解到火车从A站到B站的运行时间是服从均值为30min,标准差为2min的正态随机变量。火车大约下午13:00离开A站,此人大约13:30到达B站。火车离开A站的时刻及概率如表1所示,此人到达B站的时刻及概率如表2所示。问此
3、人能赶上火车的概率有多大?,表1:火车离开A站的时刻及概率,表2:某人到达B站的时刻及概率,二、赶火车问题,问题的分析 这个问题用概率论的方法求解十分困难,它涉及此人到达时刻、火车离开站的时刻、火车运行时间几个随机变量,而且火车运行时间是服从正态分布的随机变量,没有有效的解析方法来进行概率计算。在这种情况下可以用计算机模拟的方法来解决。,:火车从A站出发的时刻;:火车从A站到B站的运行时间;:某人到达B站的时刻;:随机变量 服从正态分布的均值;:随机变量 服从正态分布的标准差;,二、赶火车问题,进行计算机统计模拟的基础是抽象现实系统的数学模型,为了便于建模,对模型中使用的变量作出如下假定:,此
4、人能及时赶上火车的充分必要条件为: ,所以此人能赶上火车的概率模型为: 。,二、赶火车问题,为了分析简化,假定13时为时刻t=0,则变量 、 的分布律为:,二、赶火车问题,R软件求解的总算法:,产生随机数,验证模型,成立次数k=k+1,否,是,计算估计结果k/n,成立次数不变,是,否,编写R程序,借助区间(0,1)分布产生的随机数,对变量 、 概率分布进行统计模拟;,根据变量 、 、 概率分布及模拟程序、命令产生n 个随机分布数;,使用随机产生的n 组随机数验证模型中的关系表达式是否成立;,计算n 次模拟实验中,使得关系表达式成立的次数k ;,当 时,以 作为此人能赶上火车的概率p 的近似估计
5、;,进入演示,windows(7, 3)prb = replicate(100, #括号内程序重复100次 x = sample(c(0, 5, 10), 1, prob = c(0.7, 0.2, 0.1) y = sample(c(28, 30, 32, 34), 1, prob = c(0.3, 0.4, 0.2, 0.1) plot(0:40, rep(1, 41), type = n, xlab = time, ylab = , axes = FALSE) axis(1, 0:40) r = rnorm(1, 30, 2) points(x, 1, pch = 15) i = 0 w
6、hile (i = y) points(y, 1, pch = 19) Sys.sleep(0.1) points(y, 1, pch = 19) title(ifelse(x + r y)mean(prb),进入模拟,三、R软件的统计模拟功能,1、R软件优秀的随机数模拟功能,生产某概率分布的随机数是实现统计模拟的前提条件,而使用R命令可以生成以下常用分布的随机数:,三、R软件的统计模拟功能,2、优良的编程环境和编程语言,R所拥有的好的兼容性、拓展性和强大的内置函数有利于统计模拟的实现。,3、高效率的向量运算功能,使用R拥有的向量运算功能可以大大减少程序运行的时间,提高程序运行的效率。, 下面
7、以求解Pi的程序为例加以说明,未采用R向量运算功能的程序为:,mc1-function(n) set.seed(1234579) k-0; x-runif(n); y-runif(n); for(i in 1:n) if(xi2+yi21) k-k+1; data.frame(Pi=4*k/n),引入向量运算功能改进后的程序为:,mc1-function(n) set.seed(1234579) k-0; x-runif(n); y-runif(n); k - length(xx2+y2 下面用R软件分别执行两个程序,看看有什么差异 程序1 . 程序2,三、R软件的统计模拟功能,四、应用R软件
8、模拟验证大数定律,1、验证的大数定律有:,(1)伯努利大数定理 设 是 次独立重复试验中事件 发生的次数。 是事件 在每次试验中发生的概率,则对于任意正数 0,有,(2)辛钦定理: 设随机变量 相互独立,服从同一分布,且具有数学期望 , ,则对于任意正数 ,有,四、应用R软件模拟验证大数定律,2、在R软件实现的算法思想:,由大数定律可知,当 ,样本的均值趋向与理论分布的期望,因此利用样本容量 逐渐增大这一趋势来模拟 这一趋势,在这种趋势下,样本的均值与理论分布期望的误差 应该呈现出越来越小的趋势,同时,根据上述思想,分别对五种常用分布下的大数定律进行验证。,四、应用R软件模拟验证大数定律,大数
9、定律模拟算法,设置参数值,产生m维序列,绘图,是,否,编写R程序,选择分布类型,产生随机数,计算样本均值y,设置循环的跳跃步长 、 的第一次抽样的样本容量初始值 和上限值 ;,利用函数 产生由各模拟样本空间大小组成的m 维序列;,选择随机数 的分布类型,本文中的相关程序仅选择了常用的随机分布:正态分布、指数分布、均匀分布、泊松分布、二项分布、两点分布;,利用R软件产生n个服从同一分布的随机数 ;,计算 (或 )的值;,若循环次数 im ,则回转,否则转;,以x轴代表样本容量n ,y 轴代表每次抽样所得的样本均值,描绘出整个试验的过程。, 进入演示,五、应用R软件模拟验证中心极限定理,1、验证的
10、中心极限定理有,(1)独立同分布的中心极限定理: 设随机变量 相互独立,服从同一分布,且具有数学期望和方差: ,则随机变量之和 的标准化变量:,的分布函数对于任意满足:,(2)De Moivre-Laplace(棣莫弗-拉普拉斯)中心极限定理,设相互独立的随机变量 服从参数为 p 的两点分布,则对于任意实数 x ,有,五、应用R软件模拟验证中心极限定理,选择分布类型,确定参数m和n,统计检验和描述性分析,是,否,编写R程序,产生随机数,计算标准化随机变量,设置参数j和step,中心极限定理模拟算法,选择随机变量 的分布类型,主要分布类型有正态分布、指数分布、均匀分布、泊松分布、二项分布和两点分布;,设置模拟试验总次数m 及每次模拟试验中随机变量的个数n 的值;,利用R软件模拟产生n个服从同一分布的随机数 ;,使用产生的n 个随机数计算标准化随机变量值,设置循环变量j 和循环的跳跃步长 ,当 时,重复步骤、,直至 ;,对m 个 值进行正态性检验和描述性统计分析,包括直观的QQ图检验、正态性W 检验以及偏度系数、峰度系数、均值和方差。, 进入演示,五、应用R软件模拟验证中心极限定理,非常感谢!,