我试图填写等式,如下图R所示。
这是使用GAM结合时间序列的等式。我知道如何写下GAM部分,但我不知道如何使用y_ {t-1}部分等。似乎解决方案应该很容易,但我无法弄明白。你们其中一个可以帮助我吗?
方程式来自本文: Chen,Bei,et al。 “城市交通的不确定性:预测共用自行车和停车场的等待时间。”智能交通系统 - (ITSC),2013年第16届国际IEEE大会。 IEEE,2013。
答案 0 :(得分:0)
如果我理解正确,您需要响应的lag-1和lag-2值。
您可以将其作为
(假设mydata
是您的数据框,y
是响应变量
mydata <- data.frame(y = 1:10)
)
mydata <- transform(mydata,
lag1 = c(NA, head(y, -1)),
lag2 = c(NA, NA, head(y, -2)))
产生:
> head(mydata)
y lag1 lag2
1 1 NA NA
2 2 1 NA
3 3 2 1
4 4 3 2
5 5 4 3
6 6 5 4
如果您没有使用lag()
类,则基本R "ts"
函数的工作方式不正确,因此请在上面手动完成。
如果你使用 tidyverse ,那么 dplyr 的lag()
函数(掩盖了同名的基本函数!)更有用:< / p>
mydata2 <- transform(mydata,
lag1 = dplyr::lag(y, 1),
lag2 = dplyr::lag(y, 2))
制造
> head(mydata2)
y lag1 lag2
1 1 NA NA
2 2 1 NA
3 3 2 1
4 4 3 2
5 5 4 3
6 6 5 4
虽然在这种情况下,使用mutate()
代替transform()
是最自然的。
您gam()
将是
gam(y ~ .... + s(lag1) + s(lag2), data = mydata, ....)
gam()
自动删除lag2
为NA
的前两行数据。