glmer中多项式混合效应模型的估计

时间:2020-01-01 22:59:07

标签: r mixed-models multinomial

我已经对患者的疾病筛查模式进行了分类(每年,每两年一次或其他),现在我想根据这种模式对患者的人口统计数据进行回归,同时调整初级保健提供者(PCP)的特征。我很确定这需要多项混合效果模型。

我的响应变量“模式”是一个具有3个无序因素的字符变量,而我的分组变量是“ PCP”(PCP的ID)。这是一个简化的可复制示例:

df<-data.frame("ID"=seq(1:20),
               "PCP"=rep((seq(1:10)*100),2),
               "Pattern"=rep(c("Annual","Biennial","Biennial","Annual","Else"),4),
               "Age"=runif(20,50,70))

df$PCP<-as.factor(as.character(df$PCP))

当我运行我认为回归应该是的东西时,我得到以下信息:

mod1<-glmer(Pattern~Age + (1|PCP), data=df)

Error in mkRespMod(fr, REML = REMLpass) : response must be numeric
In addition: Warning message:
In glmer(Pattern ~ Age + (1 | PCP), data = df) :
  calling glmer() with family=gaussian (identity link) as a shortcut to lmer() is deprecated; please call lmer() directly

在故障排除方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

从错误消息中,我可以看到您的代码正在尝试使用family = gaussian来拟合线性混合效应模型。在这种情况下,因变量需要为numeric,但您的Pattern变量为factor。要适合二进制(不是多项式)混合效果模型,您可能需要定义family

library(lme4)                               
mod1<-glmer(Pattern~Age + (1|PCP), data=df, family = binomial)
summary(mod1)

@ user20650指出,glmerfamily = binomial会将结果变量转换为二进制。我无法使用glmer制定解决方案,但是其他几个软件包也可能会有所帮助,例如nnet::multinom()mlogit::mlogit()

mod1 <-nnet::multinom(Pattern ~ Age, data=df)
broom::tidy(mod1)
> broom::tidy(mod1)
# A tibble: 4 x 6
  y.level  term         estimate std.error statistic p.value
  <chr>    <chr>           <dbl>     <dbl>     <dbl>   <dbl>
1 Biennial (Intercept) 0.0000124     6.70     -1.69   0.0916
2 Biennial Age         1.21          0.113     1.69   0.0901
3 Else     (Intercept) 0.000800      7.36     -0.968  0.333 
4 Else     Age         1.12          0.125     0.884  0.377