簡體   English   中英

時間序列的滯后回歸

[英]Lagged Regression of a time series

我有一個時間序列,我嘗試使用滯后回歸量回歸因變量。 我知道我可以使用以下公式進行一次觀察的滯后:

library(dyn)

set.seed(123)
y <- numeric(100)
y[1] <- 2
for (i in 2:100) {
  u <- rnorm(1, mean = 0, sd = 1)
  y[i] <- 1 + 0.5 * y[i-1] + u
}

z <- zoo(y)
model <- dyn$lm(z ~ lag(z, -1))

aa 函數是否有可能使用 1 到 12 個觀測值的滯后回歸器創建 12 個回歸模型,或者我是否需要進行 12 個單獨的回歸以獲得 OLS 回歸的解?

下面我展示了一個 for 循環和purrr::map迭代。

# OP's code
library(dyn)
#> Loading required package: zoo
#> 
#> Attaching package: 'zoo'
#> The following objects are masked from 'package:base':
#> 
#>     as.Date, as.Date.numeric
set.seed(123)
y <- numeric(100)
y[1] <- 2
for (i in 2:100) {
  u <- rnorm(1, mean = 0, sd = 1)
  y[i] <- 1 + 0.5 * y[i-1] + u
}
z <- zoo(y)

# for-loop version 
x <- list()
for(i in 1:12){
  x[[i]] <- dyn$lm(z ~ lag(z, -i))
}
x[[9]]
#> 
#> Call:
#> lm(formula = dyn(z ~ lag(z, -i)))
#> 
#> Coefficients:
#> (Intercept)   lag(z, -i)  
#>      2.3920      -0.1101

# purrr-based version
library(purrr)
x <- map(1:12, ~ dyn$lm(z ~ lag(z, -.x)))
x[[9]]
#> 
#> Call:
#> lm(formula = dyn(z ~ lag(z, -.x)))
#> 
#> Coefficients:
#> (Intercept)  lag(z, -.x)  
#>      2.3920      -0.1101

reprex 包( v2.0.0 ) 於 2021 年 7 月 28 日創建

沒有purrr的替代方案:

x <- lapply(1:12, function(x) dyn$lm(z ~ lag(z, - x)))
x_2[[9]]
#> 
#> Call:
#> lm(formula = dyn(z ~ lag(z, -x)))
#> 
#> Coefficients:
#> (Intercept)   lag(z, -x)  
#>      2.3920      -0.1101 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM