我希望这不是一个太天真的问题。我正在使用 R 包中的不同模型执行一系列二项式回归caret
。到目前为止,除了地球(MARS)之外,所有模型都在工作。通常,earth
族glm
通过earth
函数 as传递给函数glm=list(family=binomial)
。这似乎工作正常(如下所示)。对于一般predict()
功能,我会使用type="response'
来正确缩放预测。fit1
下面的示例显示了正确预测的非插入符号方法pred1
。 pred1a
是不正确缩放的预测type='response'
。 fit2
是方法,caret
是pred2
预测;它与 中的非缩放预测相同pred1a
。通过挖掘fit2
对象,正确拟合的值存在于glm.list
组件中。因此,该earth()
函数的行为应如此。
问题是......因为caret
prediction()
函数只需要type='prob' or 'raw'
,我如何指示预测响应的规模?
非常感谢。
require(earth)
library(caret)
data(mtcars)
fit1 <- earth(am ~ cyl + mpg + wt + disp, data = mtcars,
degree=1, glm=list(family=binomial))
pred1 <- predict(fit1, newdata = mtcars, type="response")
range(pred1)
[1] 0.0004665284 0.9979135993 # Correct - binomial with response
pred1a <- predict(fit1, newdata = mtcars)
range(pred1a)
[1] -7.669725 6.170226 # without "response"
fit2ctrl <- trainControl(method = "cv", number = 5)
fit2 <- train(am ~ cyl + mpg + wt + disp, data = mtcars, method = "earth",
trControl = fit2ctrl, tuneLength = 3,
glm=list(family='binomial'))
pred2 <- predict(fit2, newdata = mtcars)
range(pred2)
[1] -7.669725 6.170226 # same as pred1a
#within glm.list object in fit4
[1] 0.0004665284 0.9979135993