r语言 - 为什么我们丢弃前10000个模拟数据?



下面的代码来自《金融工程统计与数据分析》这本书,这本书描述了如何生成ARCH(1)模型的模拟数据。

library(TSA)
library(tseries)
n = 10200
set.seed("7484")
e = rnorm(n)
a = e
y = e
sig2 = e^2
omega = 1
alpha = 0.55
phi = 0.8
mu = 0.1
omega/(1-alpha) ; sqrt(omega/(1-alpha))
for (t in 2:n){
a[t] = sqrt(sig2[t])*e[t]
y[t] = mu + phi*(y[t-1]-mu) + a[t]
sig2[t+1] = omega + alpha * a[t]^2
}
plot(e[10001:n],type="l",xlab="t",ylab=expression(epsilon),main="(a) white noise")

我的问题是,为什么我们需要放弃第一个10000模拟?

========================================================

Bottom Line Up Front

当仿真输出为时间序列时,需要截断以处理仿真模型初始化时引入的采样偏差。

详细信息不是所有的模拟都需要截断初始数据。如果模拟产生独立的观察结果,则不需要截断。当模拟输出是一个时间序列时,问题就出现了。时间序列不同于独立数据,因为它们的观测结果是序列相关的(也称为自相关)。对于正相关,结果类似于具有惯性-近邻的观测结果往往彼此相似。这一特性与计算机模拟是程序的现实相互作用,所有状态变量都需要初始化。初始化通常是一个方便的状态,比如"空"one_answers"空闲"。对于排队服务模型,其中没有人排队,服务器可以立即帮助第一个客户。因此,第一个客户的等待时间为零,概率为1,这当然与某些客户的等待时间k的情况不同,其中k>1. 这就是序列相关性让我们措手不及的地方。如果第一个客户的等待时间总是为零,那么这将影响后续客户体验的未知数量。平均而言,他们倾向于低于长期平均等待时间,但随着k(客户数量)的增加,他们更倾向于长期平均等待时间。这个"初始化偏差"有多长?持续时间取决于初始化相对于长期行为的非典型程度,以及时间序列序列相关结构的大小和持续时间。

一组值的平均值只有在它们属于同一总体时才产生总体均值的无偏估计,即,如果E[Xi] = μ,一个常数,对于所有i。在前一段中,我们认为对于从方便但非典型状态开始生成的具有序列相关性的时间序列,不是的情况。解决方案是从数据的开始处删除一些(未知)观测值,以便剩余的数据都具有相同的期望值。这个问题最早是由理查德·康威在1961年兰德公司的一份备忘录中发现的,并于1963年发表在期刊上康威,《数字仿真中的若干战术问题》,《管理》。Sci, 10(1963) 47 - 61]。如何确定最优截断量一直是仿真领域的一个活跃研究领域。我个人更喜欢一种叫做MSER的技术,它是由普雷斯·怀特教授(弗吉尼亚大学)开发的。就无偏性而言,它将数据集的末端视为最可靠的,并使用相当简单的测量方法来检测何时添加更靠近前端的观察结果会产生显著偏差。如果你感兴趣,你可以在2011年冬季模拟会议的论文中找到更多的细节。请注意,您使用的10,000可能是过度的,也可能是不够的,这取决于您的特定模型的序列相关效应的大小和持续时间。

结果表明,除了初始化偏差问题外,序列相关还会导致其他问题。正如WSC2011论文489页底部所指出的那样,它也对估计的标准误差有显著影响,因此计算i.i.d估计器s2/n的人可以在模拟输出的估计置信区间宽度上进行数量级的关闭。

相关内容

最新更新