R: 在 ExtremeBounds 命令中调试 glm "subscript out of bounds"
R: Debug glm "subscript out of bounds" in ExtremeBounds command
我运行宁代码使用 ExtremeBounds 和 glm (logit) 通过几个规范,有时我 运行 遇到以下问题:
Data <- data.frame(var1=rbinom(30,1,0.2),var2=rbinom(30,1,0.2),var3=rnorm(30),coll1=rep(3:32),coll2=rep(1:30))
eba <- eba(data=Data, y="var1",
free="var2",
doubtful=c("var3","coll1","coll2"),
reg.fun=glm, k=1, vif=7, draws=50, weights = "lri", family = binomial(logit))
错误信息是:
Error in reg.summary$coefficients[variable.label, 1] :
subscript out of bounds
由于我的数据集很大,我不知道在我的实际应用中是哪个变量导致了这个问题。有谁知道这些问题的答案之一:
如何查看是哪个变量导致的?
我怎样才能自动删除它(可能会显示如下消息:"coll2 omitted due to collinearity")
这个问题是glm引起的吗?
作为回答发布,评论有点长:
- 设置
options(error=recover)
- 运行 上面的代码(没有
se.fun=se.robust
)给出
1: eba(data = Data, y = "var1", free = "var2", doubtful = c("var3", "coll1", "
2: .eba.wrap(formula = formula, data = data, y = y, free = free, doubtful = do
3: run.eba(y = y, v = focus, x = free, combinations = comb, data = data, level
4: run.regressions(y, v, x, combinations, data, level, vif.max, vars.labels, v
我选择选项#4(最低级别)
我可以 运行 ls()
查看此范围内存在的所有变量。因为我知道 reg.summary$coefficients[variable.label, 1]
会出现问题,所以我可以尝试
Browse[1]> variable.label
# coll2
# "coll2"
Browse[1]> str(reg.summary$coefficients)
# num [1:3, 1:4] -0.9154 0.9436 -0.0504 1.1159 0.9728 ...
# - attr(*, "dimnames")=List of 2
# ..$ : chr [1:3] "(Intercept)" "var2" "coll1"
# ..$ : chr [1:4] "Estimate" "Std. Error" "z value" "Pr(>|z|)"
这表明 reg.summary$coefficients
显然删除了 coll2
变量 ...
不幸的是,我对 eba()
正在做什么知之甚少,无法知道如何进一步进行诊断......如果你知道,你可以进一步检查 reg.summary
对象以尝试找出问题所在...
我运行宁代码使用 ExtremeBounds 和 glm (logit) 通过几个规范,有时我 运行 遇到以下问题:
Data <- data.frame(var1=rbinom(30,1,0.2),var2=rbinom(30,1,0.2),var3=rnorm(30),coll1=rep(3:32),coll2=rep(1:30))
eba <- eba(data=Data, y="var1",
free="var2",
doubtful=c("var3","coll1","coll2"),
reg.fun=glm, k=1, vif=7, draws=50, weights = "lri", family = binomial(logit))
错误信息是:
Error in reg.summary$coefficients[variable.label, 1] :
subscript out of bounds
由于我的数据集很大,我不知道在我的实际应用中是哪个变量导致了这个问题。有谁知道这些问题的答案之一:
如何查看是哪个变量导致的?
我怎样才能自动删除它(可能会显示如下消息:"coll2 omitted due to collinearity")
这个问题是glm引起的吗?
作为回答发布,评论有点长:
- 设置
options(error=recover)
- 运行 上面的代码(没有
se.fun=se.robust
)给出
1: eba(data = Data, y = "var1", free = "var2", doubtful = c("var3", "coll1", "
2: .eba.wrap(formula = formula, data = data, y = y, free = free, doubtful = do
3: run.eba(y = y, v = focus, x = free, combinations = comb, data = data, level
4: run.regressions(y, v, x, combinations, data, level, vif.max, vars.labels, v
我选择选项#4(最低级别)
我可以 运行 ls()
查看此范围内存在的所有变量。因为我知道 reg.summary$coefficients[variable.label, 1]
会出现问题,所以我可以尝试
Browse[1]> variable.label
# coll2
# "coll2"
Browse[1]> str(reg.summary$coefficients)
# num [1:3, 1:4] -0.9154 0.9436 -0.0504 1.1159 0.9728 ...
# - attr(*, "dimnames")=List of 2
# ..$ : chr [1:3] "(Intercept)" "var2" "coll1"
# ..$ : chr [1:4] "Estimate" "Std. Error" "z value" "Pr(>|z|)"
这表明 reg.summary$coefficients
显然删除了 coll2
变量 ...
不幸的是,我对 eba()
正在做什么知之甚少,无法知道如何进一步进行诊断......如果你知道,你可以进一步检查 reg.summary
对象以尝试找出问题所在...