我试图模拟一个时间序列的25年的自相关计数数据在R的基础上的一些观察计数的属性。通过模型拟合,我已经建立了观察到的数据是AR(1)自相关的,滞后1相关系数为-0.5,并且是过度分散的,最好由负二项分布表示,平均值= 10000,尺寸参数为5.217。
我使用arima.sim
来尝试模拟这个系列,代码如下:
sim = arima.sim(list(order=c(1,0,0), ar=-0.5), n=25, rand.gen = rnbinom, mu = 10000, size = 5.217)
sim
然而,我不明白为什么函数返回十进制值,而不是整数计数,并且经常返回负值,这对于rnbinom来说是不可能的。此外,mean(sim)
始终显著低于函数中指定的10000的平均值。我不太明白arima.sim
在做什么。我希望有人能给我一些启发,并提出更好的方法来实现我正在努力实现的目标?
谢谢你的帮助,山姆
1条答案
按热度按时间31moq8wy1#
感谢@jblood94提供了他对上一个问题的答案的链接,这个问题使用这里提供的
acf.reorder
函数提供了一个非常好的解决方案。我已经调整并简化了下面的函数,以生成从给定的负二项分布(由
mu
和size
指定)绘制的N
自相关计数的时间序列。如原始帖子中所述,该方法的工作原理是重复从负二项分布中抽取样本,并对它们进行重新排序,以近似于
alpha
给出的所需自相关函数。在修改后的函数中,我已经将随机计数生成移动到while循环中,这似乎允许它更有效地为短时间序列找到一个很好的近似。可以通过增加迭代次数(max.iter
)或减小容差(tol
)来获得更好的近似值,容差是期望值alpha
和观测值alpha
之间的平方误差之和,在此值下可以接受解。测试表明,它非常接近我上面的示例所需的时间序列
再次感谢@jblood94的解决方案,并为每个原始帖子+1!