我正在使用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
我做错了什么?什么是正确的方法?
答案 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年)但我没有实施。