lme4:所有观测共享的随机斜率

时间:2016-10-19 18:16:25

标签: r lme4

我正在使用R lme4。假设我有一个混合效应逻辑回归模型,我想要每个观察共享一些随机斜率。在这些随机斜率应该来自单个正态分布的意义上,它们应该是随机的。这与岭回归基本相同,但没有选择带有交叉验证的惩罚大小。

我尝试了以下代码:

library(lme4)

ilogit = function(v)
    1 / (1 + exp(-v))

set.seed(20)

n = 100

x1 = rnorm(n)
x2 = rnorm(n)
x3 = rnorm(n)
x4 = rnorm(n)
x5 = rnorm(n)

y.p = ilogit(.5 + x1 - x2)
y = rbinom(n = n, size = 1, prob = y.p)

m1 = glm(
    y ~ x1 + x2 + x3 + x4 + x5,
    family = binomial)
print(round(d = 2, unname(coef(m1))))

m2 = glmer(
    y ~ ((x1 + x2 + x3 + x4 + x5)|1),
    family = binomial)
print(round(d = 2, unname(coef(m2))))

这会产生:

Loading required package: Matrix
[1]  0.66  1.14 -0.78 -0.01 -0.16  0.25
Error: (p <- ncol(X)) == ncol(Y) is not TRUE
Execution halted

我做错了什么?什么是正确的方法?

1 个答案:

答案 0 :(得分:0)

看起来lme4不能按原样执行此操作。这是what @amoeba said in stats.SE chat

  

在Bates等人的意义上,Kodi想要做的绝对是一个混合模型。见例如eq(2)here https://cran.r-project.org/web/packages/lme4/vignettes/lmer.pdf据我所知,在这种情况下,X和Z设计矩阵是相等的。但是,没有办法可以使用lme4来适应这一点(不破解代码):它只允许从类型(公式|因子)的模型公式中产生特定的Z矩阵。

     

请参阅https://stat.ethz.ch/pipermail/r-sig-mixed-models/2011q1/015581.html&#34;我们打算允许lmer能够为随机效果使用更灵活的模型矩阵,但目前,这需要对用户进行一定程度的调整&# 34;

     

https://stat.ethz.ch/pipermail/r-sig-mixed-models/2009q2/002351.html&#34;我将lme4包中可用的方差 - 协方差结构视为与模型矩阵中的随机效应项相关。随机效应项的形式是(LMexpr | GrpFac)。垂直条右侧的表达式被评估为一个因子,我将其称为分组因子。左边的表达式被评估为线性模型表达式。&#34;

     

贝茨的所有引用。他确实说过&#34;在lme4的未来版本中,我计划允许扩展无条件方差 - 协方差结构。&#34; (2009年)但我没有实施。