我尝试使用
bestglm
进行子集回归,但是当我执行它时,出现以下错误
Error in bestglm(Xy=H.bestglm2, family = binomial, IC ="AC", method = "exhaustive":
Binomial non-logistic regression: S and F counts can not be <0
我不知道这意味着什么,也找不到有关此问题的任何信息。
谢谢!
如果您确定响应变量(必须位于最后一列)是二进制的,请尝试以下操作:
H.bestglm2 <- data.frame(H.bestglm2)
然后在新对象上运行 bestglm
bestglm 的文档似乎不完整。我也遇到了这个错误,并且找不到我的数据框有任何问题。最终,在将我的数据列替换为现有的工作 data.frame(来自 bestglm 示例的 SAheart)时,我发现 Xy 数据框似乎只使用最后一列作为结果变量。
这失败了:
> set.seed(1)
> test.data=data.frame(y=rbinom(100,1,.5),X=rnorm(100))
> bestglm(test.data,family=binomial)
Error in bestglm(test.data, family = binomial) :
Binomial nonlogistic-regression: S and F counts can not be <0
但这有效:
> set.seed(1)
> test.data=data.frame(X=rnorm(100),y=rbinom(100,1,.5))
> bestglm(test.data,family=binomial)
Morgan-Tatar search since family is non-gaussian.
BIC
Best Model:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.4895482 0.2060214 -2.376201 0.01749194
无论我的变量如何命名,它似乎总是抓住最后一列用作结果(y)变量。在第一种情况下,会产生错误,因为该列不是严格的 0/1,因此它认为您没有进行逻辑回归。
对于仍然遇到此问题的任何人,将 tibble 传递给该函数是行不通的。当我将其转换为数据框时,它工作得很好。
转换为数据框有助于解决问题。