1

我正在尝试使用 geepack 运行 GEE 模型。我使用以下调用成功完成了此操作。

Call:
geeglm(formula = pdc1 ~ country + post + time_post +
    TIME + age + sex + country * time_post + country * post, family = gaussian("identity"), data = lipid_data, 
    id = id, waves = ID, corstr = "ar1", std.err = "san.se").

在哪里:

pdc1=numeric
country=factor
post=factor
time_post=numeric
TIME=numeric

我试图在不同的数据上运行完全相同的模型,这些数据的格式与上面完全相同。我可以运行具有主效应的模型,但不能运行交互作用。这是我得到的错误:

Error in geeglm(pdc1 ~ STATE + post + time_post + TIME + STATE * post,  : 
  Model matrix is rank deficient; geeglm can not proceed

我曾尝试将 STATE 重新编码为数字变量(并发布),但这并没有证明是有效的。我不明白发生了什么,变量包含与第一个模型完全相同的数据,并且以这种方式编码。有谁知道这里会发生什么?

4

2 回答 2

2

我最近解决了一个类似的问题——它与数据集中的一个协变量保持不变有关。例如,对于可能导致错误“等级不足”的每个观察,状态可能是相同的状态。这也可以解释为什么此错误特定于您的新数据集。

于 2014-05-18T07:13:29.320 回答
0

我不确定你是否遇到了和我一样的问题。我曾经在 R 中拟合 geeglm 模型并遇到了同样的问题。

我的模型是这样的:

geeglm(outCC$counts~outCC$partage:as.factor(outCC$contage)-1,
      family=poisson(link="log"),id=outCC$partid,data=outCC,subset=sel,weights=outCC$partwe)

该模型运行没有任何问题。但是,当我尝试将另一个二元协变量设置(城市/农村)放入模型时:

geeglm(outCC$counts~outCC$partage:as.factor(outCC$contage)+as.factor(setting)-1,
       family=poisson(link="log"),id=outCC$partid,data=outCC,subset=sel,weights=outCC$partwe)

R给了我错误:

Model matrix is rank deficient; geeglm can not proceed

然后我决定创建一个新的二进制变量:setting_new (0/1) 并将这个新变量置于模式:

geeglm(outCC$counts~outCC$partage:as.factor(outCC$contage)+setting_new-1,
       family=poisson(link="log"),id=outCC$partid,data=outCC,subset=sel,weights=outCC$partwe)

现在问题解决了。

尝试将另一个分类变量放入上述模型时,我遇到了同样的问题,语法如下:

as.factor(Q12_travel)

在我尝试创建新的虚拟变量 (0/1) 并将其放回模型之前,模型无法运行。也许你还有其他问题,但我建议你可以试试这种方法,看看问题是否解决了。

于 2015-12-28T14:40:51.367 回答