在R?中使用石灰预测logit模型?

在R?中使用石灰预测logit模型?,r,glm,lime,R,Glm,Lime,因此,我试图用莱姆来理解R中logit模型的预测。我知道我不“需要”,但我试图说明它对一个可以简单理解为演示起点的模型的作用 但是我很难让它工作。我确信这是由于model.predict方面的原因,但我的几个解决方案都不起作用 基本上我想做的是: model.logit <- glm(formula = formula, data = build.dat, family = binomial(link = "logit")) train.x <- build.dat[ , all

因此,我试图用莱姆来理解R中logit模型的预测。我知道我不“需要”,但我试图说明它对一个可以简单理解为演示起点的模型的作用

但是我很难让它工作。我确信这是由于model.predict方面的原因,但我的几个解决方案都不起作用

基本上我想做的是:

model.logit <- glm(formula = formula, data = build.dat, family = binomial(link = "logit"))


train.x <- build.dat[ , all.vars(formula[[3]])] 
test.x <- reject.dat[1:100, all.vars(formula[[3]])]

explainer <- lime(train.x, as_classifier(model.logit ), n_bins = 20, quantile_bins = TRUE)

explain.me <- lime::explain(test.x[2 , ], explainer, n_labels = 1, n_features = 8, n_permutations = 5000, 
                        feature_select = "forward_selection", type = "response" )
但是在“lime”代码中移动我的“type=“response””并不能解决这个问题

我曾尝试创建一个函数“predict_model.glm”,我认为这可能会纠正这一点,因为我在使用randomForest并使其正常工作时,我的想法是:

predict_model.glm <- function(x, newdata, type = "response" ) {
res <- as.data.frame(c(predict(x, newdata = newdata, type = type), 1-predict(x, newdata = newdata, type = type)))

}

predict\u model.glm您必须在
predict\u model.glm
中转换predict的输出。作为第一步,我建议打印
类型
和调用
预测
结果的第一行。根据传入的类型,对glm的调用和返回的结果将不同-
?predict_model
提示:对于“raw”,它是单个res;对于“prob”,它是概率(或者对于真正的线性模型:数字结果)

总的来说,就我(希望)理解您的情况而言,类似的功能可能会让您前进一步:

predict_model.glm <- function(x, newdata, type, ...) { 
  print(type)
  res <- predict(x, newdata);
  print(res[1])
  data.frame(Response = res)
}

predict_model.glm以便更新。我发现,如果我在函数“predict_model.glmHowever”中直接调用“type=”response“,”这个错误就解决了。不过,现在内部使用的glm.fit函数似乎不喜欢我的预测,我得到了:glm.fit中的错误(x=x_fit,y=y,weights=weights,family=gaussian()):V(mu)中的NAs。我试图通过在“predict_model.glm”中更改数据框中的输出格式来解决这个问题,但似乎无法解决这个问题。我有一个“model_type.glm”
predict_model.glm <- function(x, newdata, type, ...) { 
  print(type)
  res <- predict(x, newdata);
  print(res[1])
  data.frame(Response = res)
}