【问题标题】:Mixed effect conditional logistic regression error混合效应条件逻辑回归误差
【发布时间】:2020-12-08 19:54:36
【问题描述】:

我正在尝试运行对匹配数据产生随机影响的条件逻辑回归。以下是我的数据的结构:

outcome<-c(1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0)
strata_id<-c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6)
tmax<-c(30.7,31.3,34.7,32.9,28.2,26.0,26.7,26.5,33.5,33.9,35.3,35.5,28.1,29.2,29.4,28.9,31.5,33.8,35.1,34.2,28.3,29.4,30.1,33.7)
cntry_code<-c("A","A","A","A","A","A","A","A","B","B","B","B","B","B","B","B","C","C","C","C","C","C","C","C")
data<-as.data.frame(cbind(outcome,strata_id,tmax,cntry_code))
data

  outcome strata_id tmax cntry_code
1        1         1 30.7          A
2        0         1 31.3          A
3        0         1 34.7          A
4        0         1 32.9          A
5        1         2 28.2          A
6        0         2   26          A
7        0         2 26.7          A
8        0         2 26.5          A
9        1         3 33.5          B
10       0         3 33.9          B
11       0         3 35.3          B
12       0         3 35.5          B
13       1         4 28.1          B
14       0         4 29.2          B
15       0         4 29.4          B
16       0         4 28.9          B
17       1         5 31.5          C
18       0         5 33.8          C
19       0         5 35.1          C
20       0         5 34.2          C
21       1         6 28.3          C
22       0         6 29.4          C
23       0         6 30.1          C
24       0         6 33.7          C

我想匹配strata_id(固定效应)并包含每个人居住的国家的随机效应。我在R中使用mclogit包,这是我指定的模型:

model1<-mclogit(cbind(outcome, strata_id)~ns(tmax, df=3), random = ~1|cntry_code, data=data)

但我得到了错误:

Error in mclogit(cbind(outcome, strata_id) ~ ns(tmax, df = 3), random = ~1 |  : 
 No predictor variable remains in random part of the model.
 Please reconsider your model specification.

我不确定如何解决此错误。我应该使用其他方法,例如 glmer 还是 lme4 包?

【问题讨论】:

  • 这不是因为每个strata 只存在于一个国家/地区吗?如果每个阶层只有一个国家,如何将国家从阶层中分离出来作为随机效应?

标签: r conditional-statements logistic-regression mixed-models


【解决方案1】:

模型丢弃随机项并因此给出错误的原因是因为随机项(例如 cntry_code)在层内没有变化。换句话说,对于每个分层值,cntry_code 是恒定的。

来自 R 中 mclogit 包的创建者(Martin Elff 博士): “这是条件 logit 的一个基本特征:条件 logit 层中的所有常数在比率时都会抵消

$$
\frac{\exp(\boldsymbold{x}_i\boldsymbol{\beta})}
      {\sum_k\boldsymbold{x}_k\boldsymbol{\beta}}
$$

已创建。

一个随机斜率项应该起作用并且看起来像这样(插入自己的数据):

random = dependent variable | random term variable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2019-05-01
    相关资源
    最近更新 更多