我有这样的X和Y:
x1 = rnorm(100) * sin(seq(0.1,10,0.1))
x2 = rnorm(100) * cos(seq(0.1,10,0.1))
x3 = rnorm(100) * tan(seq(0.1,10,0.1))
y = rgamma(100,1) * sin(seq(0.1,10,0.1))
x = as.matrix(cbind(x1,x2,x3))
现在我将它们假定为时间序列,并希望“累计”最近X的值以估算Y
vecCoef = c(5,5,10)
vecNum = c(5,5,10)
x0 = x
for (i in 1:3) {
for (j in 1:vecNum[i]-1) {
x0[,i] <- x0[,i] +
lag(rep(x[,i],2), i)[-1:-dim(x)[1]] * exp(-j * vecCoef[i])
}
}
model = lm(y ~ x0)
AIC(model)
此代码通过将Xs的先前值相加来生成矢量,如以下等式所示:
然后,我想优化vecCoef
和vecNum
的参数,这些参数分别定义基于AIC的模型考虑来自先前值的影响的强度以及模型包含多少滞后。模型。
假设所有参数的最小值/最大值为1/20,那么选择贪婪的参数似乎不是一个好主意。然后,caret
软件包是否能够处理此问题?如果没有,还有更好的选择吗?