R Sapply 函数似乎产生与 for 循环方法略有不同的值

问题描述 投票:0回答:1

我已经编写了两块 R 代码。我相信它们都应该做完全相同的事情 - 除了一个使用 for 循环方法而一个使用 sapply 函数。然而,它们产生的结果略有不同。有谁知道是什么导致了这里的细微差别?有趣的是,这两种方法为输出向量的第一个元素生成相同的值。

方法一:

set.seed(967)
n=replicate(1000,200)
ACF2MA=sapply(n, function(n1) {acf(arima.sim(n1, model = list(ma =     c(0.4))),plot=FALSE)$acf[3]})
ACF2AR=sapply(n, function(n1) {acf(arima.sim(n1, model = list(ar =        c(0.45))),plot=FALSE)$acf[3]})`

方法2:

set.seed(967) 
ACF2MA1=1:1000 
ACF2AR1=1:1000 
for (i in 1:1000){ 
  YMA= arima.sim(n=200, model=list(ma=c(0.4))) 
  YAR= arima.sim(n=200, model=list(ar=c(0.45))) 
  ACF2MA1[i]=acf(YMA,plot = FALSE)$acf[3] 
  ACF2AR1[i]=acf(YAR,plot = FALSE)$acf[3] 
}

提前非常感谢!

我期待完全相同的结果。

r arima sapply
1个回答
0
投票

区别在于您以不同的顺序运行模拟。在随机(伪随机)模拟中,这一点很重要。在

sapply
情况下,您运行 1000 个 MA 模拟,然后运行 1000 个 AR 模拟;在循环中,您交替使用 MA 和 AR 模拟。

© www.soinside.com 2019 - 2024. All rights reserved.