3
我希望這不是一個太天真的問題。 我在R的caret
包中使用不同模型執行一系列二項式迴歸。除了地球(MARS)之外,所有工作都到目前爲止。通常,earth
家族通過earth
函數glm=list(family=binomial)
傳遞給glm
函數。這似乎工作正常(如下所示)。對於一般的predict()
函數,我會使用type="response'
來正確縮放預測。以下示例顯示fit1
中的無符號方法,並在pred1
中進行了正確的預測。如果沒有type='response'
,pred1a
是不正確的縮放預測。 fit2
是caret
和pred2
的方法是預測;它與pred1a
中的非縮放預測相同。通過fit2
對象挖掘,正確擬合的值出現在glm.list
組件中。因此,earth()
函數表現得應該如此。「響應」預測與地球(MARS)和插入符號R
問題是...因爲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
@Max,謝謝你的明確答覆和例。很有幫助! –