我正在使用R的lme4
。假設我有一個混合效應邏輯迴歸模型,我需要每個觀測值都有一些隨機斜率。它們應該是隨機的,因爲這些隨機斜率都應該來自單一的正態分佈。這與嶺迴歸本質上是相同的,但沒有選擇交叉驗證的懲罰規模。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
我做了什麼錯?什麼是正確的方法來做到這一點?
我不明白你的意思是什麼*「我希望每個觀察都有一些隨機斜率,它們應該是隨機的,因爲這些隨機斜率都應該來自單一的正態分佈。」 *特別是因爲它涉及您的示例代碼。你的代碼不包含隨機斜率...我不認爲你的代碼是正確的語法,這是導致錯誤;但由於您的初始評論不清楚,我不確定您嘗試使用哪種語法。 –
@AlexW我試圖包括五個隨機斜坡,每個從'x1'到'x5',每一個都應該適用於所有的觀察。這就像普通的最小二乘法,除了所有的係數(除了截距)都是隨機效應而不是固定效應。這是否澄清我的意思?顯然我的代碼是錯誤的,但我不知道如何糾正它,因此我的問題。 – Kodiologist