我正在学习在 R 中实现健壮的 glms,但是当我有一个由于共线性而删除了某些列的模型时,我无法弄清楚为什么我无法让 glmrob 从我的回归模型中预测值。特别是当我使用 predict 函数从 glmrob 预测值时,它总是为所有值提供 NA 。使用 glm 从相同的数据和模型预测值时,我没有观察到这一点。我使用什么数据似乎并不重要——只要拟合模型中有一个 NA 系数(并且 NA 不是系数向量中的最后一个系数),预测就不起作用。
这种行为适用于我尝试过的所有数据集和模型,其中由于共线性而删除了内部列。我包含了一个假数据集,其中从模型中删除了两列,这在系数列表中给出了两个 NA。glm 和 glmrob 都给出几乎相同的系数,但 predict 仅适用于 glm 模型。所以我的问题是:对于会阻止我的 glmrob 模型生成预测值的稳健回归,我不了解什么?
library(robustbase)
#Make fake data with two categorial predictors
df <- data.frame("category" = rep(c("A","B","C"),each=6))
df$location <- rep(1:6,each=3)
val <- rep(c(500,50,5000),each=6)+rep(c(50,100,25,200,100,1),each=3)
df$value <- rpois(NROW(df),val)
#note that predict works if we omit the newdata parameter. However I need the newdata param
#so I use the original dataframe here as a stand-in.
mod <- glm(val ~ category + as.factor(location), data=df, family=poisson)
predict(mod, newdata=df) # works fine
mod <- glmrob(val ~ category + as.factor(location), data=df, family=poisson)
predict(mod, newdata=df) #predicts NA for all values