【问题标题】:Repeated measures, mixed model ANCOVA in R重复测量,R 中的混合模型 ANCOVA
【发布时间】:2018-11-29 19:54:39
【问题描述】:

我有一个数据集,其中包含 44 个受试者,每个受试者有 2、3 或 4 个测量值(即并非每个受试者都有相同数量的测量值)。我有两个分类变量,它们在学科之间差异很大,但有时在学科内部。受试者年龄也作为测量的协变量包含在数据集中,因为它在单个受试者的测量之间变化。

感兴趣的问题:自变量如何影响我们的因变量?年龄也会影响我们的因变量吗?这在某种程度上是双重的,因为年龄在主题内有所不同,但在主题之间也是如此。

对此类数据进行编码/建模的最佳方式是什么?我尝试了以下方法,但这似乎没有返回适当的结果。

aov(DV ~ Age + IV1 + IV2 + Error(1/SubjectID), data = df) 

这是一些示例数据。

df <-data.frame(Subject = c(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20), IV1 = c(1,3,2,2,1,3,2,3,1,4,1,3,1,3,2,2,1,2,1,3,2,4,4,2,2,3,4,1,2,4,4,1,3,3,5,1,3,3,4,1,3,3,5,1,3,3,4,2,2,4,4,1,2,4,4,2,3,4), IV2 = c(2,2,3,3,2,2,3,3,2,2,1,1,3,3,1,1,1,1,2,2,1,1,1,2,2,2,2,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,1,1),Age = c(10,12,11,12,9,10,10,12,10,13,9,10,9,10,10,11,10,11,9,10,11,13,14,10,11,12,13,10,11,12,13,9,10,11,12,9,10,11,12,9,10,11,12,9,10,11,12,10,11,12,13,10,11,12,13,12,13,14),DV = c(209,173,181,113,178,166,368,68,133,24,232,182,77,59,263,235,68,44,254,263,270,203,75,99,200,118,142,174,528,340,325,145,97,57,134,97,203,141,72,294,217,159,115,131,82,206,65,637,471,139,195,114,273,392,271,239,141,228))

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    我可能错了,但我认为这更像是一个交叉验证的问题,而不是主要处理编码的 stackoverflow。

    关于这个问题 - 如果您上传一些示例数据,这将非常有帮助,这样人们就可以尝试看看它的样子。猜测一下,如果没有看到样本数据,您可能不需要 ANCOVA。 ANCOVA/ANOVA 对不平衡设计(即不等抽样设计)非常敏感。当你说每个人都有多个测量值重复 2、3 或 4 次时,你的意思是某些受试者的测量值比其他人多吗?不同年龄代表重复测量吗?

    如果是这样,你可以试试这个:

    library(lme4)
    dv.lmer <- lmer(DV ~ IV1 + IV2 + (1|SubjectID/Age), data = df) 
    summary(dv.lmer)
    

    什么是 DV 响应变量?

    此外,您是否排除了任何类型的交互影响(即它们是否超出了您的项目范围)?

    编辑:

    考虑到样本数量的差异以及我担心重新测量之间的不相等差距,ANCOVA 肯定不适合这些数据。事实上,这使得用任何标准方法建模都变得相当困难,至少在这种格式下是这样。

    您可以创建一个新的年龄变量,将年龄简化为它的测量值(即第一、第二或第三)。从那里您可以尝试混合效果模型之类的东西。问题是您正在丢失重新测量信息之间的任何年龄或时间。

    另一种选择是采用时间点之间的差异,即对于主题 13,取所有变量的差值。但是,这会将您的数据减少到前两个时间点,否则您将回到重复测量领域....

    这取决于您感兴趣的问题。

    如果您将数据转换成我可以轻松导入 R 的格式(例如 df https://www.r-bloggers.com/three-tips-for-posting-good-questions-to-r-help-and-stack-overflow/) 是一个很好的起点!

    编辑 2: 这是解决问题的一种方法,尽管由于研究的观察性质和这些数据中隐含的混杂因素,人们可以做出的推论是有限的。这是人类研究(以及我经常处理的生态数据)的一个非常普遍的问题。这并不是说您不能绘制相关性和模式,而是您应该小心如何呈现这些结果。以下是一种可能性,但它确实回到了您想询问数据关于模型是否正确的问题......

    如果有什么不清楚的地方欢迎追问!

     #Corrections
     df$Subject <- as.character(df$Subject)
    
     #Creating new sample time points
     df$SampleTime <- 0 
    
     uniSubject <- unique(df$Subject)
    
     #filling vector
     for(i in 1:length(uniSubject)){
    
       df[df$Subject == uniSubject[i],]$SampleTime <- 1:nrow(df[df$Subject == 
     uniSubject[i],])
    
     }
    
    
     #Modelling
     library(lme4)
    
    
     #Interaction model
     DVint.lmer <- lmer(DV ~ IV1 * IV2 + (1 + SampleTime|Subject), data = df)
     summary(DVint.lmer)
    
     #Additive model
     DVadd.lmer <- lmer(DV ~ IV1 + IV2 + (1 + SampleTime|Subject), data = df)
     summary(DVadd.lmer)
    
     #Comparing models to see if interaction is importnat
     anova(DVint.lmer, DVadd.lmer) #Interaction does not explain any 
     significant variation at the 0.05 level in these data. Parsimony 
     suggests using DVadd.lmer model
    

    编辑:

    鉴于关于年龄作为固定效应的重要性的最后评论,我认为这将最接近标记:

     DVint.lmer <- lmer(DV ~ IV1 * IV2 * Age + (1 + Age|Subject), data = df)
    

    解释时要小心,因为这些数据非常混乱。

    【讨论】:

    • 感谢您的反馈。我现在已经包含了一些示例数据。我们没有排除交互效应,但我想确保我首先掌握了如何对年龄术语进行建模/编码。
    • 我已经添加了要在 R 中执行的示例数据的代码。感谢帮助
    • 见上面的编辑 - 如果它回答了原始问题,请打勾。否则让我知道缺少什么。
    • 年龄是分析的一个关键因素,所以不幸的是,简化它并不是一个真正的选择。这些数据的观测性质确实使生成合适的模型变得特别困难。
    • 在这种情况下,您可以尝试DVint.lmer &lt;- lmer(DV ~ IV1 * IV2 * Age + (1 + Age|Subject), data = df) 之类的方法 - 这可能是最好的选择,因为它结合了随着时间的推移而发生的特定主题变化,并将年龄作为固定效果。不管你如何建模,我认为你不能从中做出任何真正的推论,但希望你能得到一个有点意义的模式。请注意您的解释。编辑:也许通过向后消除来一一消除无关紧要的交互。
    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2020-12-01
    • 2017-02-01
    • 2016-09-07
    相关资源
    最近更新 更多