r - 时间序列数据的for循环
问题描述
假设我有以下简单的公式
y[t] = alpha * y[t-1] + beta * y[t-2]
其中 y[t-1] 和 y[t-2] 是已知的观测值。现在在时间 t+1 的下一个观察可以写成
y[t+1] = alpha * y[t] + beta * y[t-1]
使用 y[t] 的先前信息产生
y[t+1] = alpha * (alpha * y[t-1] + beta * y[t-2]) + beta * y[t-1]
简化
y[t+1] = alpha^2 * y[t-1] + alpha * beta * y[t-2] + beta * y[t-1]
下一个观察
y[t+2] = alpha^2 * y[t] + alpha * beta * y[t-1] + beta * y[t]
又可以在哪里插入 y[t]。
现在我的问题是如何编写一个 for 循环,以便我可以在时间 t+h 构造 y,其中 h 是一个整数值。
解决方案
像这样的东西?
y = c(1, 2, rep(0, 49))
alpha <- .4
beta <- .9
for (t in 3:length(y)) {
y[t] <- alpha * y[t-1] + beta * y[t-2]
}
nms <- paste0('y[', as.character(seq(-2, 48, 1)), ']')
`names<-`(y, nms)
#> y[-2] y[-1] y[0] y[1] y[2] y[3]
#> 1.000000 2.000000 1.700000 2.480000 2.522000 3.240800
#> y[4] y[5] y[6] y[7] y[8] y[9]
#> 3.566120 4.343168 4.946775 5.887561 6.807122 8.021654
#> y[10] y[11] y[12] y[13] y[14] y[15]
#> 9.335072 10.953517 12.782971 14.971354 17.493216 20.471505
#> y[16] y[17] y[18] y[19] y[20] y[21]
#> 23.932496 27.997353 32.738188 38.292893 44.781526 52.376214
#> y[22] y[23] y[24] y[25] y[26] y[27]
#> 61.253859 71.640136 83.784528 97.989934 114.602048 134.031760
#> y[28] y[29] y[30] y[31] y[32] y[33]
#> 156.754547 183.330403 214.411254 250.761864 293.274874 342.995627
#> y[34] y[35] y[36] y[37] y[38] y[39]
#> 401.145637 469.154319 548.692801 641.716008 750.509925 877.748377
#> y[40] y[41] y[42] y[43] y[44] y[45]
#> 1026.558283 1200.596853 1404.141196 1642.193646 1920.604534 2246.216095
#> y[46] y[47] y[48]
#> 2627.030519 3072.406693 3593.290144
由reprex 包于 2021-06-12 创建 (v2.0.0 )
推荐阅读
- r - 用另一列选择的值替换 NA
- python - 使用石墨烯graphql时是否可以在内部进行url重定向?
- angular - 在天蓝色中,使用服务我可以获得图像,但只能在预览中看到直接图像
- continuous-integration - 如何从 PowerShell 设置 Azure 管道变量
- javascript - 如何将 MongoDB 集群正确连接到我的应用程序?
- python-3.x - 如何将字节类型的图像转换为numpy.ndarray?
- google-workspace - Google Tasks 中未更新截止日期 - Gmail UI
- bash - 从给定文件夹开始打印文件名及其出现次数的脚本
- java - 使用 appium 从任何 android 设备的通知栏中清除所有通知
- android - 如何共享带有标题的 pdf [不应显示 UNTITLED]