我想知道如何正确地对单变量线性混合效应模型的输出进行反变换以对其进行解释。我没有发布数据来配合我的问题,因为我的问题应该可以在没有数据的情况下回答。
我的模型(为本问题的目的而简化):
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 天,活动得分就会增加 [来自模型的数字]。