我正在尝试使用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重新编码为数字变量(并发布)但这并不能证明是富有成效的。我不明白发生了什么,变量保存与第一个模型完全相同的数据,并按照编码的方式编码。有谁知道这里会发生什么?
答案 0 :(得分:2)
我最近解决了一个类似的问题 - 它与其中一个协变量在整个数据集中保持不变有关。例如,对于每个观察,STATE可能是相同的状态,这可能导致错误“秩不足”。这也可以解释为什么此错误特定于您的新数据集。
答案 1 :(得分: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)并将其放回模型之前,模型无法运行。 也许你有另一个问题,但我建议你可以尝试这种方法,看看问题是否已经解决。