时间序列与R中的GAM相结合

时间:2018-04-16 09:07:10

标签: r prediction gam

我试图填写等式,如下图R所示。

enter image description here

这是使用GAM结合时间序列的等式。我知道如何写下GAM部分,但我不知道如何使用y_ {t-1}部分等。似乎解决方案应该很容易,但我无法弄明白。你们其中一个可以帮助我吗?

方程式来自本文: Chen,Bei,et al。 “城市交通的不确定性:预测共用自行车和停车场的等待时间。”智能交通系统 - (ITSC),2013年第16届国际IEEE大会。 IEEE,2013。

1 个答案:

答案 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()自动删除lag2NA的前两行数据。