【发布时间】:2019-08-28 10:18:28
【问题描述】:
我想知道如何正确地对单变量线性混合效应模型的输出进行反变换以对其进行解释。我没有发布数据来配合我的问题,因为我的问题应该可以在没有数据的情况下回答。
我的模型(为本问题的目的进行了简化):
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
BirthDate 以均值为中心并标准化为一个标准差后:
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 的平均值是多少。根据阅读The R Book by Crawley,我可以使用以下代码从我的模型m1 中得到平均值:
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 天,活动得分就会增加 [来自模型的数字]。
【问题讨论】:
-
输入
ml会得到什么? -
BirthDate 不是真正的日期,而是某个时代的天数?
-
@R5W 如果我输入
ml,什么都不会发生。 @R.S.我将澄清BirthDate的问题。 -
我认为@G5W 的意思是输入模型名称
m1,用“1”而不是“l”。 -
@R5W 我也添加了该输出。
标签: r lme4 tapply random-effects