使用对比包进行逻辑回归(glm)时出错

问题描述 投票:0回答:1

我正在寻找一种更简单的方法来在 R (而不是 multcomp)中进行对比语句,并遇到了对比包。语法看起来很简单,但我不断收到错误。这是我的模型和输出(所有变量都编码为数字,但 WaterDistance 和 WaterSource 是二进制的,ChildAge 以月为单位)。

model1 <- glm(Breastfeeding ~ WaterDistance + ChildAge + WaterSource + WaterDistance*ChildAge, data = df, family = binomial(link = "logit"))

当我尝试运行这行代码时:

contrast_result <- contrast(model1,  a = list(WaterDistance = 1, ChildAge = 0),  # Distance = 1, Age = 0 b = list(WaterDistance = 0, ChildAge = 0))  # Distance = 0, Age = 0

我收到此错误: generateData(fit = list(coefficients = c(

(Intercept)
= 4.49922717166335,:没有足够的因素

)中出现错误

预先感谢您的帮助!而且,如果您知道除了 multcomp 中的复杂矩阵之外的任何其他更简单的方法,请告诉我!

我尝试将 WaterDistance 更改为一个因子,甚至将其重新编码为 1 和 2(相对于 0 和 1),但问题仍然存在。我不确定问题是否是因为 ChildAge 是数字而不是因子变量。

logistic-regression interaction contrast
1个回答
0
投票

此函数的工作方式似乎与 SAS 略有不同,SAS 中您需要为回归模型中的所有变量添加值,而不仅仅是那些对对比语句重要的变量。例如,

contrast_result <- contrast(model1, 
                            a = list(WaterDistance = 1, ChildAge = 0, WaterSource = 0),  # Distance = 1, Age = 0
                            b = list(WaterDistance = 0, ChildAge = 0, WaterSource = 0))  # Distance = 0, Age = 0

print(contrast_result)
© www.soinside.com 2019 - 2024. All rights reserved.