我正在寻找一种更简单的方法来在 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 是数字而不是因子变量。
此函数的工作方式似乎与 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)