r - 带协变量的时间序列分析

标签 r time-series

我有一个数据集,其中包含来自数千个人的数据,其中测量了过去 9 年每年测量的参数 X。

基本上它们在数据帧 df 中

id,year,x,feature
A,2016,376,female
A,2015,391,female
A,2014,376,female
A,2013,373,female
A,2012,347,female
A,2011,330,female
B,2016,398,male
B,2015,391,male
B,2014,410,male
B,2013,393,male
B,2012,408,male
B,2011,288,male
C,2016,2464,male
C,2015,2465,male
C,2014,2500,male
C,2013,2215,male
C,2012,2228,male
C,2011,1839,male

等等。

我想在这些时间序列上估计不同的模型

像 predict(x(t)) = f(x(t-1),x(t-2),...,x(t-n),feature, id(作为随机因子))

我可以看到如何使用 ts 进行自回归建模,但它会计算大量的单个模型,我想要基于时间历史和特征的全局预测(及其固有问题)。

lm 不是一个好主意,因为数据是高度自相关的。有什么好主意吗?

最佳答案

有许多可能的模型,但这里有一个具有 AR1 结构的混合效应模型,您可以尝试一下。

library(nlme)

fm <- lme(x ~ year + feature, random = ~ year | id, DF,
    correlation = corAR1(form = ~ year | id))
summary(fm)

这是数据图:
library(ggplot2)

ggplot(DF, aes(year, x, group = id, col = feature)) + geom_line() + geom_point()

screenshot

注:我们假设了这个输入数据:
Lines <- "
id,year,x,feature
A,2016,376,female
A,2015,391,female
A,2014,376,female
A,2013,373,female
A,2012,347,female
A,2011,330,female
B,2016,398,male
B,2015,391,male
B,2014,410,male
B,2013,393,male
B,2012,408,male
B,2011,288,male
C,2016,2464,male
C,2015,2465,male
C,2014,2500,male
C,2013,2215,male
C,2012,2228,male
C,2011,1839,male"
library(zoo)
DF <- read.csv(text = Lines, strip.white = TRUE)

关于r - 带协变量的时间序列分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389836/

相关文章:

pandas - 如何删除行以使列中的值与序列匹配

html - 如何创建一个当我水平滚动容器时将固定的 div,而不会垂直溢出容器?

r - 错误: could not find function “rxGetOption” in Revolution R Open

r - 根据 "closest value"测试选择性地包含列

r - 具有相关值热图的 ggpairs 绘图

language-agnostic - 从时间序列数据事件中重建状态

python - 如何在 Python 中对我的 Dataframe 的每一列进行 ADF 测试?

r - 在使用公式用插入符号的 train() 训练的 randomForest 对象上使用 predict() 时出错

time-series - 普罗米修斯时间序列在没有和更新的情况下持续多长时间

python - 根据月份和日期范围选择多年的 Pandas DataFrame 记录