2016-10-19 22 views
0

我正在使用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 

我做了什麼錯?什麼是正確的方法來做到這一點?

+0

我不明白你的意思是什麼*「我希望每個觀察都有一些隨機斜率,它們應該是隨機的,因爲這些隨機斜率都應該來自單一的正態分佈。」 *特別是因爲它涉及您的示例代碼。你的代碼不包含隨機斜率...我不認爲你的代碼是正確的語法,這是導致錯誤;但由於您的初始評論不清楚,我不確定您嘗試使用哪種語法。 –

+0

@AlexW我試圖包括五個隨機斜坡,每個從'x1'到'x5',每一個都應該適用於所有的觀察。這就像普通的最小二乘法,除了所有的係數(除了截距)都是隨機效應而不是固定效應。這是否澄清我的意思?顯然我的代碼是錯誤的,但我不知道如何糾正它,因此我的問題。 – Kodiologist

+0

*我試圖包含五個隨機斜率,每個x1到x5都應該包含一個斜率,所有這些都應該適用於所有的觀測。*這不是一個隨機斜率。這是一個固定的效果 –

回答

0

看起來像lme4不能這樣做。這裏的what @amoeba said in stats.SE chat

科迪希望做的絕對是一個混合模型,在Bates等人的意義上。見例如eq(2)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「我們打算讓11聚物以能夠使用更靈活的模型矩陣爲隨機效應雖然,目前,這需要一定的調整對用戶的部分」

而且https://stat.ethz.ch/pipermail/r-sig-mixed-models/2009q2/002351.html 「我認爲lme4包中可用的方差 - 協方差結構與模型矩陣中的隨機效應項相關,隨機效應項的形式爲(LMexpr | GrpFac),垂直條右邊的表達式被評估爲一個因素,我將其稱爲分組因子。左邊的表達式被評估爲線性模型表達式。「

這就是來自貝茨的所有引用。他確實說過:「在未來版本的lme4中,我打算允許擴展無條件方差 - 協方差結構。」 (在2009年),但我沒有這個實施。