统计模拟说明


10

我不是统计学家。所以,请忍受我的错误。

您能以简单的方式说明仿真是如何完成的吗?我知道它会从正态分布中抽取一些随机样本并用于模拟。但是,不清楚。


11
模拟什么?:-)
chl 2012年

确实挑剔,但有时问题对提问者不利,这就是这种情况之一。
amit 2012年

1
@phaedrus这是对我的意图的评论吗?如果是这样,您能解释一下您对以上问题的理解吗?
chl 2012年

Answers:


27

在统计中,模拟通常用于评估方法的性能,通常是在缺乏理论背景的情况下。通过模拟,统计学家知道并控制了事实

在许多情况下都可以有利地使用模拟。这包括提供对抽样分布的经验估计,研究统计程序中假设的错误指定,确定假设检验的功效等。

模拟研究应严格设计。伯顿等。(2006年)在他们的论文《医学统计学中模拟研究的设计》中给出了非常好的概述。在参考文献中可以找到在各种情况下进行的仿真研究。

简单的说明性示例 考虑线性模型

y=μ+βx+ϵ

其中是二进制协变量(或),。使用R中的模拟,让我们检查一下X = 0 X = 1 ε Ñ0 σ 2xx=0x=1ϵN(0,σ2)

E(β^)=β.
> #------settings------
> n <- 100            #sample size                          
> mu <- 5             #this is unknown in practice                         
> beta <- 2.7         #this is unknown in practice
> sigma <- 0.15       #this is unknown in practice
> #--------------------
> 
> #------set the seed so that this example can be replicated------
> set.seed(937)
> #---------------------------------------------------------------
>
> #------generate 1000 data sets and store betaHat------
> betaHat <- numeric(1000)
> for(i in 1:1000)
+ {
+     #generate the binary covariate --> n Bernoulli trials
+   x <- sample(x=c(0, 1), size=n, replace=TRUE, prob=c(0.5, 0.5))
+     #generate the errors
+   epsilon <- rnorm(n=n, mean=0, sd=sigma)
+     #form the response variable      
+   y <- mu + beta * x + epsilon 
+     #the ith generated data set
+   data_i <- data.frame(y=y, x=x)
+     #fit the model
+   mod <- lm(y~x, data=data_i)
+     #store the estimate of beta
+   betaHat[i] <- as.numeric(coef(mod)[2])     
+ }    
> #-----------------------------------------------------
> 
> #------E(betaHat) = beta?------
> mean(betaHat)
[1] 2.698609
> #------------------------------

注意:上面提到的论文有一封给编辑


9

首先,统计中有许多许多不同类型的模拟,甚至在周围领域中也是如此。仅仅说“模拟”与说“模型”一样有用-也就是说,根本不多。

根据您其余的问题,我猜您是指蒙特卡洛模拟,但这还是有点模糊。基本上,会发生什么是你重复地从画样一个分布(它不必是正常的),以便做一些统计分析,对已知的人工种群,但随机性能。

这样做的目的通常分为两类:

我的方法可以处理X吗?:从本质上讲,您正在模拟一系列具有已知“正确”答案的随机总体,以查看您的新技术是否为您提供了正确答案。举一个基本的例子,假设您已经开发出一种测量两个变量X和Y之间的相关性的新方法。您将模拟两个变量,其中Y的值取决于X的值,以及一些随机的噪音。例如,Y = 0.25x +噪声。然后,您将创建一个具有一些X随机值,一些Y值是0.25x +一个随机数(可能是数千次)的总体,然后证明,平均而言,您的新技术吐出了一个正确地表明Y = 0.25x。

如果会发生什么?可以将模拟作为现有研究的敏感性分析。举例来说,我进行了一项队列研究,但是我知道我的接触度测量不是很好。它将不应有的我科目中的30%错误地分类为暴露,而不应将错误的我科目中的10%分类为未暴露。问题是,我没有更好的测试,所以我不知道哪个是哪个。

我以自己的人口为准,给每位暴露的对象有30%的机会转换为未暴露的机会,每位未暴露的对象有10%的机会转换为暴露的机会。然后,我将创建成千上万的新人群,随机确定切换哪个主题,然后重新运行我的分析。这些结果的范围将使我很好地估计,如果我能正确分类每个人,我的研究结果可能会改变多少。

当然,与往常一样,取决于要挖掘的数量,模拟的复杂性,细微差别和实用性也会更大。


1.那么您在答案中解释的是蒙特卡罗模拟?2.统计中是否使用其他类型的模拟(蒙特卡洛除外)?
vasili111

5

仿真还可以用于查看理论条件下的实际过程,其中这些过程具有非线性输入。例如,一家制造公司可能会对增加一条额外的生产线是否具有成本效益感兴趣,呼叫中心可能会对如何在运营商周围路由呼叫以减少呼叫者的排队时间和拒绝率感兴趣,急诊部门可能会对这感兴趣。对如何最好地安排工作人员和转移病人感兴趣,或者对运输港口可能对以最有效的方式布置其集装箱操作感兴趣。离散事件模拟可用于对这些过程进行建模,并且可以调整参数以回答“假设条件”类型的问题。

模拟中另一个有趣的领域是复杂的系统。特别是在社会科学中,基于主体的模拟是一种有趣的模拟类型,它开始收集更多的支持者。在基于代理的模拟中,为代理(例如单个人)赋予诸如个性之类的属性,并且彼此交互,因此它为混沌系统建模。基于智能体的模拟着眼于周围智能体之间的相互影响,并且可以包括远距离影响。虽然我自己还没有做过任何基于代理的模拟,但我看到它曾用于对系统进行建模,例如史前社区人口规模随时间的地理分布。


你能提供一些例子吗?
vasili111

我不确定您通过某些示例的意思。我在第一段中举了一些例子。
米歇尔

2

模拟通过使用伪随机生成器(例如像rnorm这样的普通生成器)来复制统计样本固有的随机性并使用伪随机生成的可重复性来推断统计过程的分布应用于原始样本。x1,,xn

基于仿真的统计技术的一个特别重要的例子是与Efron(1979)引入的bootstrap相关联。给定样本,经验cdf 是真cdf的收敛(近似)。因此,取决于任何量,例如期望或统计量,都可以通过下式中的相应量来近似x1,,xn

F^n(x)=1ni=1nIxix
nFFEF[h(X)]ψ(X1,,Xn)F^n。除特殊情况外,只能通过仿真来评估。例如,确定 作为的估计量,可以通过引导程序完成:从复制大小为样本并计算差值 这将生成对偏差的模拟自举评估。
σ^n2(x1,,xn)=1n+1i=1n(xix¯)2
σ2=varF(X)n x1,,xnF^n
β=σ^n2(x1,,xn)σ^n2(x1,,xn)

3
我认为将引导方法背后的两个基本概念分开是很有用的。引导程序本身应该被认为是一种修改估算器以产生另一个(希望更好)估算器的方式。它可以在理论上,准确地(有时)以封闭形式进行计算。模拟不是引导程序的固有部分!但是,在许多情况下,仿真是一种自然且简便的方法来近似自举估计器。请参见Hall 和Bootstrap和Edgeworth扩展中
ub

1
关于编辑:这实际上是一个很好的例子,其中引导偏差估计可以完全以封闭形式计算:E[β | sample]=[2/(n+1)]σ^n2(x1,,xn).
ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.