使用for循环模拟带线性趋势的AR(1)过程时遇x为NULL问题求助
修复AR(1)过程模拟代码的问题
你的代码出现x变为NULL的问题,核心有两个错误:
- 循环从
i=1开始时,x[i-1]等价于x[0],R中不存在索引为0的元素,会返回NA直接破坏赋值逻辑 - 随机误差项直接使用向量
b而非对应位置的b[i],右侧是长度1000的向量,无法赋值给单个元素x[i],最终导致x被错误覆盖为NULL
修复后的代码
t <- 1:1000 x <- rep(0, 1000) b <- rnorm(1000) # 单独初始化第一个观测值(无滞后项) x[1] <- 3 + 0.01 * t[1] + b[1] # 从第2个观测值开始执行AR(1)递推 for (i in 2:length(t)) { x[i] <- 3 + 0.01 * t[i] + 0.4 * x[i-1] + b[i] }
关键修复点
- 处理初始值:AR(1)的第一个观测值没有滞后项,单独赋值时去掉
0.4 * x[i-1]部分 - 调整循环起始点:从
i=2开始循环,此时x[i-1]是已赋值的x[1],避免索引越界 - 匹配误差项维度:使用
b[i]代替b,确保每次只添加对应时间点的单个随机误差,保证左右两侧维度一致
内容的提问来源于stack exchange,提问作者Joe94
相关产品推荐
相关产品推荐

