【发布时间】:2021-10-04 17:53:59
【问题描述】:
我正在使用使用 bam() R 包中的 bam() 函数构建的广义相加模型来预测二元响应的概率。
根据所提供的newdata 表的构成,对于相同的输入数据,我似乎得到的预测略有不同,但不明白为什么。
模型是使用如下公式构建的:
model <- bam(response ~ categorical_predictor1 + s(continuous_predictor, bs='tp'),
data=data,
family="binomial",
select=TRUE,
discrete=TRUE,
nthreads = 16)
我还有几个分类和连续的预测变量,但为了节省篇幅,我在上面的公式中只提到了两个。
然后我这样预测:
predictions <- predict(model,
newdata = newdata,
type="response")
我想对大约 250 万行进行预测,但在测试期间我预测了 250,000 行的子集。
每次我使用模型预测该子集(即newdata=subset)时,我都会得到相同的输出 - 这是可重现的。但是,如果我使用该模型在 250 万行的完整表中预测相同的子集(即newdata=full_data),那么我得到的 250,000 子集的预测与单独预测它们时略有不同。
我一直认为每一行都是根据提供的预测器依次预测的,所以无法理解为什么预测会随着“newdata”的上下文而变化。如果我预测使用标准 glm 或随机森林,则不会发生这种情况,因此我认为它是特定于 gams 或 mgcv 包的。
抱歉,我无法提供可重现的示例 - 我的数据集很大,我不确定小示例数据集是否会发生同样的情况。
【问题讨论】:
标签: r logistic-regression prediction gam mgcv