R:dynlm-如何确定滞后变量最显著的时滞

R:dynlm-如何确定滞后变量最显著的时滞,r,time-series,lag,R,Time Series,Lag,我也在运行R中的dynlm回归 我有一个关于确定最佳时滞的循环的问题 我想知道,在其他条件相同的情况下,对于某个变量,哪个时滞是最优的 有没有办法画出来,或者我该怎么画 dynlm(y~a+b+c+L(d,y)) 我想知道哪个时间滞后最重要?就我个人而言,我可能会手动设置一个带有滞后变量的data.frame,然后使用您觉得合适的变量选择方法,例如,通过step()逐步选择,所有子集回归,例如通过leaps,或lasso等人通过glmnet等 作为一个基于Nile时间序列的简单示例: d <

我也在运行R中的dynlm回归

我有一个关于确定最佳时滞的循环的问题

我想知道,在其他条件相同的情况下,对于某个变量,哪个时滞是最优的

有没有办法画出来,或者我该怎么画

dynlm(y~a+b+c+L(d,y))


我想知道哪个时间滞后最重要?

就我个人而言,我可能会手动设置一个带有滞后变量的
data.frame
,然后使用您觉得合适的变量选择方法,例如,通过
step()
逐步选择,所有子集回归,例如通过
leaps
,或lasso等人通过
glmnet

作为一个基于
Nile
时间序列的简单示例:

d <- as.data.frame(ts.intersect(
  y = Nile,
  y1 = lag(Nile, -1),
  y2 = lag(Nile, -2),
  y3 = lag(Nile, -3),
  y4 = lag(Nile, -4),
  y5 = lag(Nile, -5)
))
m <- lm(y ~ y1 + y2 + y3 + y4 + y4 + y5, data = d)
m2 <- step(m)
coef(m2)
## (Intercept)          y1          y2 
## 381.8464340   0.3923535   0.1835561 
前一种方法的优点是,它也可以用于非动态线性回归。后者也适用于
步骤()
,但可能不适用于其他步骤。(请注意,我并不特别支持基于AIC的逐步选择…

我将使用forecast软件包中的auto.arima(),它比dynlm更适合于此目的。auto.arima()根据各种标准(AICC、AIC或BIC)选择最佳模型。它可以逐步使用,也可以全面使用。如果数据不是季节性的,只需使用选项seasonal=F。在您的情况下,要运行所有滞后10的情况,您可以使用:

        require(forecast)
        # maximum lag allowed
        maxlag <- 10
        #Converts formula to matrix
        mm <- model.matrix(~a+b+c-1, data=mydata)
        y <- as.ts(mydata$y)
        fit <- auto.arima(y, xreg=mm, d=0,max.p=maxlag, max.order=maxlag,max.q=0,
                seasonal=FALSE,trace=TRUE, stepwise =FALSE)
        print(fit)
require(预测)
#允许的最大滞后时间
maxlag
        require(forecast)
        # maximum lag allowed
        maxlag <- 10
        #Converts formula to matrix
        mm <- model.matrix(~a+b+c-1, data=mydata)
        y <- as.ts(mydata$y)
        fit <- auto.arima(y, xreg=mm, d=0,max.p=maxlag, max.order=maxlag,max.q=0,
                seasonal=FALSE,trace=TRUE, stepwise =FALSE)
        print(fit)