【问题标题】:Generalized additive models for calibration用于校准的广义加法模型
【发布时间】:2023-11-12 13:06:02
【问题描述】:

我从事概率校准工作。我正在使用一种称为generalized additive models 的概率映射方法。

我写的算法是:

probMapping = function(x, y, datax, datay) {

    if(length(x) < length(y))stop("train smaller than test")
    if(length(datax) < length(datay))stop("train smaller than test")

    datax$prob = x # trainset: data and raw probabilities
    datay$prob = y # testset: data and raw probabilities

    prob_map = gam(Target ~ prob, data = datax, familiy = binomial, trace = TRUE)
    prob_map_prob = predict(prob_map, newdata = datay, type = "prob")

  # return(str(datax))
  return(prob_map_prob)
}

我使用的包是mgcv

  1. x - 对train 数据集的预测
  2. y - 对test 数据集的预测
  3. datax - traindata
  4. 数据-testdata

问题:

  1. 输出值不在 0 和 1 之间
  2. 我收到以下警告消息:

    In predict.gam(prob_map, newdata = datay, type = "prob") :
    Unknown type, reset to terms.
    

【问题讨论】:

    标签: r statistics probability prediction calibration


    【解决方案1】:

    警告告诉您predict.gam 无法识别您传递给type 参数的值。由于看不懂,所以决定使用默认值type,即"terms"

    请注意,predict.gamtype="terms" 返回有关模型项的信息,不是概率。因此输出值不在 0 和 1 之间。

    有关mgcv::predict.gam的更多信息,请查看here

    【讨论】:

    • 嗨,Alex,非常感谢您的回答!我学到了两点:i)类型必须是“响应”,ii)拟合有一个错误,我写了“家庭” - 必须是“家庭”。我对此感到抱歉。亚历克斯,你能否也评论一下:*.com/questions/29948919/… - 我已经尝试过提供的答案,但结果仍然不在 0 和 1 之间
    最近更新 更多