R:dynlm-如何确定滞后变量最显著的时滞
我也在运行R中的dynlm回归 我有一个关于确定最佳时滞的循环的问题 我想知道,在其他条件相同的情况下,对于某个变量,哪个时滞是最优的 有没有办法画出来,或者我该怎么画 dynlm(y~a+b+c+L(d,y))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 <
我想知道哪个时间滞后最重要?就我个人而言,我可能会手动设置一个带有滞后变量的
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)