【问题标题】:center day variable at final observation in R (for linear mixed model)R中最终观察的中心日变量(对于线性混合模型)
【发布时间】:2014-03-14 19:53:00
【问题描述】:

我正在尝试通过对不同治疗组的受试者进行重复测量来分析一些数据。这是我的数据的一个子集,其中包含在第 1、3 和 21 天进行的观察(完整的数据集在第 3 和 21 天之间有额外的观察)。

mydata <- data.frame(
  Subject  = c(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 
           34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 
           19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
           40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
           29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65), 
  Day       = as.numeric(c(rep(c("1", "3", "21"), each=28))), 
  Treatment = c(rep(c("B", "A", "C", "B", "C", "A", "A", "B", "A", "C", "B", "C", 
                  "A", "A", "B", "A", "C", "B", "C", "A", "A"), each = 4)), 
  Obs       = c(6.472687, 7.017110, 6.200715, 6.613928, 6.829968, 7.387583, 7.367293, 
            8.018853, 7.527408, 6.746739, 7.296910, 6.983360, 6.816621, 6.571689, 
            5.911261, 6.954988, 7.624122, 7.669865, 7.676225, 7.263593, 7.704737, 
            7.328716, 7.295610, 5.964180, 6.880814, 6.926342, 6.926342, 7.562293, 
            6.677607, 7.023526, 6.441864, 7.020875, 7.478931, 7.495336, 7.427709, 
            7.633020, 7.382091, 7.359731, 7.285889, 7.496863, 6.632403, 6.171196, 
            6.306012, 7.253833, 7.594852, 6.915225, 7.220147, 7.298227, 7.573612, 
            7.366550, 7.560513, 7.289078, 7.287802, 7.155336, 7.394452, 7.465383, 
            6.976048, 7.222966, 6.584153, 7.013223, 7.569905, 7.459185, 7.504068, 
            7.801867, 7.598728, 7.475841, 7.511873, 7.518384, 6.618589, 5.854754, 
            6.125749, 6.962720, 7.540600, 7.379861, 7.344189, 7.362815, 7.805802, 
            7.764172, 7.789844, 7.616437, NA, NA, NA, NA))

我想使用线性混合模型(使用 nlme)分析我的数据:

mymodel <- lme(Obs ~ Treatment * Day, random = ~1 | Subject, correlation = corAR1(form = ~1 | Subject), data=mydata, na.action=na.omit)

由于我对实验最后一天的差异最感兴趣,我真的很喜欢第 21 天的中心,但 R 似乎使用最低值作为数值变量的参考水平。我可以将第 21 天设置为 0,但这会打乱时间序列,这对于自相关结构很重要,并且将 Day 更改为因子只会给我一条错误消息:

MEEM(object, conLin, control$niterEM) 中的错误: 在第 0 级,第 1 块的反向求解中的奇点

那么,如何以第 21 天作为 Day 的参考水平来测试 Treatment 的效果呢?

【问题讨论】:

    标签: r mixed-models


    【解决方案1】:

    试试

    mydata$Day = relevel(mydata$Day, ref="Day21")
    

    在运行模型之前。 (我认为在你的模型中应该写Subject 而不是Sample),至少对于你的例子来说,因为mydata 中没有Sample

    编辑

    原始示例已被编辑,但同样的方法应该仍然有效:

    mydata$Day = factor(mydata$Day, levels=c(21, 3, 1))
    
    
    mymodel <- lme(Obs ~ Treatment * Day, random = ~1 | Subject, correlation = 
                    corAR1(form = ~1 | Subject), data=mydata, na.action=na.omit)
    summary(mymodel)
    

    给出:

    Fixed effects: Obs ~ Treatment * Day 
    Value Std.Error DF  t-value p-value
    (Intercept)      7.635586 0.1159703 46 65.84086  0.0000
    TreatmentB      -0.965811 0.1682325 25 -5.74093  0.0000
    TreatmentC      -0.169050 0.1682325 25 -1.00486  0.3246
    Day3            -0.208276 0.1133072 46 -1.83815  0.0725
    Day1            -0.452858 0.1306224 46 -3.46693  0.0012
    TreatmentB:Day3  0.229415 0.1636327 46  1.40201  0.1676
    TreatmentC:Day3  0.060868 0.1636327 46  0.37198  0.7116
    TreatmentB:Day1  0.352958 0.1932224 46  1.82669  0.0742
    TreatmentC:Day1  0.334850 0.1932224 46  1.73298  0.0898
    

    【讨论】:

    • 对不起,我错误地使用了旧版本的数据框; Day 应该是数字,它应该是 Subject,而不是 Sample。编辑以纠正该问题。
    • 问题在于,由于Day 是数字,relevel() 不起作用。
    • 但如果是数字,你想如何指定一个“参考水平”?为什么不简单地将其转换为一个因子并将 21 定义为参考水平?
    • 也许我的术语有误?我的意思是,当您说summary(mymodel) 时,您会得到固定效果的输出:(Intercept)TreatmentBTreatmentC 等。我的理解是TreatmentB 的值是@ 之间的差异987654338@ 和 TreatmentA 在当天的第一个“级别”(在我的情况下,第 1 天)。如果我想在第 21 天看到它,我不知道该怎么做;如果我先 mydata$Day &lt;- as.factor(mydata$Day) 然后 lme(Obs ~ Treatment*Day, ... 我得到的只是我在原始帖子中提到的错误消息。
    • 什么样的错误信息?我用您提供的数据编辑了答案,效果很好
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多