【发布时间】:2021-10-14 06:33:27
【问题描述】:
我是 R 新手,我正在使用它来分析时间序列数据(我也是新手)。
我有 15 年的季度数据,我有兴趣探索年轻人饮酒和吸烟率之间的相互作用 - 将吸烟作为结果变量。有人建议我使用 nlme 包中的 gls 命令,因为这将允许我包含 AR 和 MA 术语。我知道我可以使用更复杂的方法,例如 ARIMAX,但作为第一步,我想使用更简单的模型。
加载数据后,指定时间序列
data.ts = ts(data=data$smoke, frequency=4, start=c(data[1, "Year"], data[1, "Quarter"]))
data.ts.dec = decompose(data.ts)
在分解数据和一些测试(KPSS和ADF测试)之后,很明显数据不是平稳的,所以我对数据进行了差分:
diff_dv<-diff(data$smoke, difference=1)
plot.ts(diff_dv, main="differenced")
data.diff.ts = ts(diff_dv, frequency=4, start=c(hse[1, "Year"], hse[1, "Quarter"]))
ACF 和 PACF 图表明还应包括 AR(2),因此我将模型设置为:
mod.gls = gls(diff_dv ~ drink+time , data = data,
correlation=corARMA(p=2), method="ML")
但是,当我运行此命令时,我得到以下信息:
"Error in model.frame.default: variable lengths differ".
我从以前的帖子中了解到,这是由于差异以及 diff_dv 现在更短的事实。我试图通过修改代码来解决这个问题,但两种方法都不起作用:
mod.gls = gls(diff_dv ~ drink+time , data = data[1:(length(data)-1), ],
correlation=corARMA(p=2), method="ML")
mod.gls = gls(I(c(diff(smoke), NA)) ~ drink+time+as.factor(quarterly) , data = data,
correlation=corARMA(p=2), method="ML")
有人可以帮忙吗?是否有允许我运行 -gls- 命令的解决方法,或者是否有与 -gls- 命令等效的替代方法?
作为一个附带问题,是否可以像我一样包含时间 - 一个值为 1 到 60 的变量?一个类似的问题是针对我作为虚拟对象包含的季度以调整可能的季节性 - 可以吗?
非常感谢您的帮助!
【问题讨论】:
标签: r time-series nlme