R &引用;下标越界“;使用特效软件包时

R &引用;下标越界“;使用特效软件包时,r,R,我正在使用effects软件包构建一些概率图,显示逻辑回归模型的预测概率。但是,我收到一条奇怪的错误消息,不知道问题是什么 当我试图生成绘图时,我得到以下错误。警告不是问题,而是我不理解错误消息告诉我的内容 library(effects) dat$won_ping = as.factor(dat$won_ping) mod2 = glm(won_ping ~ our_bid + age_of_oldest_driver2 + credit_type2 + cover

我正在使用effects软件包构建一些概率图,显示逻辑回归模型的预测概率。但是,我收到一条奇怪的错误消息,不知道问题是什么

当我试图生成绘图时,我得到以下错误。警告不是问题,而是我不理解错误消息告诉我的内容

library(effects)    

dat$won_ping = as.factor(dat$won_ping)

mod2 = glm(won_ping ~ our_bid +
  age_of_oldest_driver2 + 
  credit_type2 + 
  coverage_type2 +
  home_owner2 +
  vehicle_driver_score + 
  currently_insured2 +
  zipcode2,
  data=dat, family=binomial(link="logit"))

> plot(effect("our_bid*vehicle_driver_score", mod2), rescale.axis=FALSE, multiline=TRUE)
Warning message:
In analyze.model(term, mod, xlevels, default.levels) :
  our_bid:vehicle_driver_score does not appear in the model
Error in plot(effect("our_bid*vehicle_driver_score", mod2), rescale.axis = FALSE,  : 
  error in evaluating the argument 'x' in selecting a method for function 'plot': Error in apply(mod.matrix[, components], 1, prod) : 
  subscript out of bounds
以下是有关我的数据和glm命令的信息:

> str(dat)
'data.frame':   85240 obs. of  71 variables:
 $ our_bid                     : num  155 123 183 98 108 159 98 123 98 200 ...
 $ won_ping                    : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ zipcode2                    : Factor w/ 4 levels "1:6999","10000:14849",..: 4 3 2 1 3 2 3 1 2 2 ...
 $ age_of_oldest_driver2       : Factor w/ 4 levels "18 to 21","22 to 25",..: NA 3 NA NA NA NA 3 NA 3 NA ...
 $ currently_insured2          : Factor w/ 2 levels "0","1": 2 1 2 2 1 1 2 2 1 1 ...
 $ credit_type2                : Ord.factor w/ 4 levels "POOR"<"FAIR"<..: 2 3 2 3 2 2 1 3 3 2 ...
 $ coverage_type2              : Factor w/ 4 levels "BASIC","MINIMUM",..: 4 3 3 3 3 3 3 3 4 3 ...
 $ home_owner2                 : Factor w/ 2 levels "0","1": 1 2 2 2 2 2 2 2 2 2 ...
 $ vehicle_driver_score        : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
救命啊!错误消息是什么意思?通常情况下,如果一个“下标超出范围”,这意味着我选择了超出该数据结构范围的内容,但这根本不会发生

编辑:

到罗兰

正如我上面所说,警告和错误消息是分开的,不相关的。假设我取出zipcode2并运行glm:

mod2 = glm(won_ping ~ our_bid +
  age_of_oldest_driver2 + 
  credit_type2 + 
  coverage_type2 +
  home_owner2 +
  vehicle_driver_score + 
  currently_insured2,
  data=dat, family=binomial(link="logit"))

> plot(effect("our_bid*home_owner2", mod2), rescale.axis=FALSE, multiline=TRUE)
Warning message:
In analyze.model(term, mod, xlevels, default.levels) :
  our_bid:home_owner2 does not appear in the model
这只会产生警告,当我得到期望的结果时,这是很好的。因此,模型中未出现“:”这一事实不是问题所在,也不会导致错误消息。

尝试以下操作:

with(dat, table(our_bid, vehicle_driver_score))

我怀疑你有一些无人居住的牢房。通过您的编辑,我假设的稀疏性似乎不太可能,因为问题在于这两个变量。尽管存在大量的情况,但仍然有可能在使用所有这些因子变量构建模型时仍然存在空单元格。

您是对的,错误不会直接从警告中出现。然而,我仍然认为它们可能有关联。如果包含交互,您是否能够适应GLM?是的,添加交互时运行良好。
with(dat, table(our_bid, vehicle_driver_score))