纵向数据:时间序列,重复测量或其他?


10

用简单的英语来说: 我有一个多元回归或ANOVA模型,但是每个人的响应变量都是时间的曲线函数。

  • 如何确定哪个右侧变量导致曲线的形状或垂直偏移的显着差异?
  • 这是时间序列问题,重复测量问题还是其他所有问题?
  • 分析此类数据的最佳实践是什么(最好在中R,但我愿意使用其他软件)?

确切地说: 假设我有一个模型但实际上是从收集的一系列数据点在许多时间点,相同的个体被记录为数值变量。绘制数据表明,对于每个个体是时间的二次函数或周期性函数,其垂直偏移,形状或频率(在周期性情况下)可能极大地取决于协变量。协变量不会随时间变化-即,在数据收集期间,个体具有恒定的体重或治疗组。ÿ一世Ĵķ=β0+β1个X一世+β2XĴ+β3X一世XĴ+ϵķÿ一世ĴķķŤÿ一世ĴķŤ

到目前为止,我已经尝试了以下R方法:

  1. 马诺娃

    Anova(lm(YT~A*B,mydata),idata=data.frame(TIME=factor(c(1:10))),idesign=~TIME); 
    

    ...这里YT是一个矩阵,其列为时间点,在此示例中为10个,但在实际数据中则更多。

    问题:这将时间视为一个因素,但是每个人的时间点并不完全匹配。此外,其中有许多是与样本大小相关的,因此模型变得饱和。似乎随时间变化的响应变量的形状被忽略了。

  2. 混合模型(如Pinheiro和Bates,S和S-Plus中的混合效应模型

    lme(fixed=Y~ A*B*TIME + sin(2*pi*TIME) + cos(2*pi*TIME), data=mydata, 
        random=~(TIME + sin(2*pi*TIME) + cos(2*pi*TIME))|ID), method='ML')
    

    ...其中ID一个因素是按个人分组数据。在此示例中,响应随时间变化是周期性的,但是可以替代地存在二次项或其他时间函数。

    问题:我不确定每个时间项是否都是必要的(尤其对于二次项而言),以及哪些受哪个协变量影响。

    • stepAIC()选择它们的好方法吗?
    • 如果确实删除了一个与时间有关的术语,是否还会将其从random参数中删除?
    • 如果我还使用自相关函数(例如corEXP())在correlation参数中使用公式,corEXP()该怎么办?我应该将该公式设为与in random或just 中的公式相同~1|ID吗?
    • nlme在Pinheiro和Bates以外的时间序列中很少提及该软件包...难道它不适合解决此问题?
  3. 将平方或三角模型拟合到每个个体,然后将每个系数用作多元回归或ANOVA的响应变量。

    问题:必须进行多次比较校正。无法想到任何其他让我怀疑自己正在忽略的东西的问题。

  4. 如该站点上先前所建议的(具有多个预测变量的时间序列回归的术语是什么?),存在ARIMAX和传递函数/动态回归模型

    问题:基于ARMA的模型假设离散时间,不是吗?关于动态回归,我今天是第一次听说它,但是在我深入研究另一种可能永远无法奏效的新方法之前,我认为最好向以前做过此事的人寻求建议。


5
@ f1r3br4and如果您添加一些有关确切数据的详细信息,可能会有所帮助。即,在几个时间点测量了多少个案例?情况是否不同?还是不同的?
Jeromy Anglim 2011年

您丢失了帐户吗?如果是这样,请注册一个新的(可能是您的Gmail地址),以便我轻松找到要合并的内容。

1
@ f-tussel和@ jeromy-anglim:数据是从实验动物的自然寿命过程中收集的各种非侵入性测量数据,通常还带有诸如基因型,性别或所喂养食物的类型之类的静态信息。“很多”是指20到几百。这不仅仅是我要分析的一组数据,而是要学习如何分析在我的团队中变得非常普遍的一种数据类型。是否仅针对较小的样本量才建议使用具有组内因子的混合模型?
f1r3br4nd 2011年

Answers:


5

正如Jeromy Anglim所说,这将有助于您了解每个人的时间点;正如您所说的“很多”,我敢说功能分析可能是可行的选择。您可能需要检查R软件包fda 并查看Ramsay和Silverman


从长远来看,功能分析听起来很有希望,但是在我确信自己不会得到毫无意义或有偏见的结果之前,似乎会有一段学习曲线。因此,在我加快这一步的同时,目前更熟悉的nlme基于方法(OP中的项目2和3)是否至少至少对数据有效?
2011年

2

自从最初提出这个问题以来,我得出的结论是,以受试者为随机阻碍因素的混合效应模型是该问题的实际解决方案,即我原始帖子中的选项#2。如果将的random参数lme设置为~1|ID(其中ID标识来自同一测试对象的观察结果),则将拟合随机拦截模型。如果将其设置为,~TIME|ID则将拟合随机斜率和截距模型。任何包含在同一个人内变化的变量的右侧公式都可以放置在~和之间|ID,但是过于复杂的公式将导致模型饱和和/或各种数值误差。因此,可以使用似然比检验(anova(myModel, update(myModel,random=~TIME|ID))),将随机拦截模型与随机斜率和拦截模型或其他候选随机效应模型进行比较。如果拟合差异不明显,则坚持使用较简单的模型。对我而言,在原始帖子中使用随机触发功能实在是太过分了。

我提出的另一个问题是模型选择之一。似乎人们不喜欢任何一种模型选择,但没有人有任何实际的选择。如果您盲目地相信收集了关于哪些解释性变量是不相关的数据的研究人员,您通常会盲目地接受他们未经检验的假设。如果考虑到所有可能的信息,您通常会得到饱和模型。如果您因为容易而任意选择特定的模型和变量,那么您将再次接受未经检验的假设,这一次是您自己的。

因此,总而言之,对于重复测量,它是lme模型,然后通过MASS:::stepAICMuMIn:::dredge和/或nlme:::anova.lme直到(除非有人有更好的主意)进行修整。

在接受此自我解答之前,我将先将其保留一段时间,以查看是否有人提出任何反驳。感谢您的时间,如果您因为有相同的问题而正在阅读本文,那么祝您好运,并欢迎来到半未知领域。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.