0

我想知道如何正确地对单变量线性混合效应模型的输出进行反变换以对其进行解释。我没有发布数据来配合我的问题,因为我的问题应该可以在没有数据的情况下回答。

我的模型(为本问题的目的而简化):

library(lme4)
m1<-lmer(activity ~ sex + BirthDate+ (1|id), data=merge.data)

> m1
Linear mixed model fit by REML ['lmerMod']
Formula: activity ~ sex + BirthDate + (1 | id)
   Data: merge.data
REML criterion at convergence: 572.0483
Random effects:
 Groups   Name        Std.Dev.
 id    (Intercept) 0.7194  
 Residual             1.4651  
    Number of obs: 150, groups:  id, 89
    Fixed Effects:
   (Intercept)            sexM       BirthDate  
      -0.08661         0.20718         0.43022  

在哪里:

  • activity是一个连续响应变量
  • sex是具有 2 个级别(女性和男性)的分类变量
  • BirthDate是一个连续变量;BirthDate是自 1 月 1 日以来的天数,然后以平均值为中心并标准化为一个标准差
  • id是个人身份的随机效应
  • merge.data是我的数据集的名称

之前BirthDate以平均值为中心并标准化为一个标准差:

> summary(merge.data$BirthDate)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  94.96  115.96  121.96  122.67  127.96  138.96 

AfterBirthDate以平均值为中心并标准化为一个标准差:

merge.data<-merge.data %>%
    mutate(BirthDate = ((BirthDate-mean(BirthDate))/(1*(sd(BirthDate)))))

> summary(merge.data$BirthDate)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-3.09082 -0.74816 -0.07883  0.00000  0.59050  1.81761 

我想知道 和 的平均值是sex多少BirthDate。基于阅读Crawley 的 The R Bookm1 ,我可以使用以下代码从我的模型中获取平均值:

tapply(predict(m1,type="response"), merge.data$sex,mean) #gives you the back-transformed mean for sex from the model "m1"

 F           M 
-0.08334649  0.11199685

这表示女性的平均活动得分为 -0.083,男性为 0.11。

当我尝试这个时BirthDate,像这样:

 tapply(predict(m1,type="response"), merge.data$BirthDate,mean)

  -3.09082367412411    -1.6406056364576   -1.52905040279094 #mean centered birth date
        -0.79030344         -0.87012920         -0.44792213 #activity score

and so on...

我最终得到的是每个出生日期的 1 个平均值(BirthDate以平均值为中心并标准化为一个标准差)。与 不同sex,我无法对这些信息做任何事情......我试图展示增加出生日期对活动的影响(影响大小)。

我最终想做的是说,出生日期每增加 1 天,活动得分就会增加 [来自模型的数字]。

4

1 回答 1

0

当您通过键入打印出模型时m1,这部分:

    Fixed Effects:
   (Intercept)            sexM       BirthDate  
      -0.08661         0.20718         0.43022  

告诉您斜率,即结果将根据输入的变化而变化。特别是,如果您将 Bi​​rthDate 增加 1(并保持其他所有内容相同),预测的活动分数将增加 0.43022。

您不提供任何数据,因此我无法直接使用您的数据和模型。相反,我将用 R 中内置的一些数据来说明,虹膜数据。

## Build a linear model
Mod1 = lm(Petal.Length ~ ., data=iris[,1:4])

现在我们可以只输入Mod1,但这比我想看到的要多。我们可以将注意力限制在有趣的部分上

Mod1$coefficients
 (Intercept) Sepal.Length  Sepal.Width  Petal.Width 
  -0.2627112    0.7291384   -0.6460124    1.4467934

这给出了每个预测变量(和截距)的斜率。我想说明响应如何Petal.Length随输入而变化。我将采取一些观点并更改一个预测器并查看结果。

NewPoint = iris[30,1:4]
NewPoint[,1] = NewPoint[,1]+1
iris[30, 1:4]
   Sepal.Length Sepal.Width Petal.Length Petal.Width
30          4.7         3.2          1.6         0.2
NewPoint
   Sepal.Length Sepal.Width Petal.Length Petal.Width
30          5.7         3.2          1.6         0.2

您可以看到它NewPoint与原始点iris[30,1:4] 相同,只是 Sepal.Length 增加了 1。这对预测有何影响?

predict(Mod1, newdata=iris[30,1:4])
      30 
1.386358 
predict(Mod1, newdata=NewPoint)
      30 
2.115497 
predict(Mod1, newdata=NewPoint) - predict(Mod1, newdata=iris[30,1:4])
       30 
0.7291384

预测值的差异为 0.7291384,即上面显示的 Sepal.Length 的系数。

于 2019-04-07T11:33:17.370 回答