1
我剛剛在R學習邏輯迴歸,並且遇到了一些令人困惑的事情。我有一個包含兩個預測變量的大型數據集,我用它來訓練一個logit模型。R logistic迴歸舍入誤差?
> model <- glm(as.factor(traintrain$loss)~.,data=traintrain[,-ncol(traintrain),with=FALSE],family=binomial)
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
> traintest$pred <- predict(model, traintest[,!"loss",with=FALSE],type="response")
這裏是我的模型
> model
Call: glm(formula = as.factor(traintrain$loss) ~ ., family = binomial,
data = traintrain[, -ncol(traintrain), with = FALSE])
Coefficients:
(Intercept) f527 f528
-2.4123661 -0.0001938 0.0001938
Degrees of Freedom: 53804 Total (i.e. Null); 53802 Residual
Null Deviance: 34540
Residual Deviance: 32740 AIC: 32750
的輸出這裏是我的測試數據集看起來像
> traintest
f527 f528 loss pred
1: 512556.00 512690.3 0 0.08359656
2: 516634.38 516635.0 0 0.08162884
3: 7261975.82 7262170.0 0 0.07658846
4: 1289936.09 1290091.5 0 0.08297042
5: 474396.88 476308.0 0 0.11410204
---
23056: 362651.53 362950.3 0 0.08625780
23057: 1590119.98 1590853.3 0 0.09150362
23058: 124814.17 125030.8 0 0.08530484
23059: 346397.91 346536.2 0 0.08385799
23060: 85503.97 85504.0 0 0.08213298
正如你可以看到,該模型停留在成功的0.08359概率我第一個測試數據點。作爲完整性檢查,我想將模型係數與我的第一次測試觀察一起插入logistic function,並確保我得出相同的結果。這就是我得到的
> 1/(1+exp(-(-2.4123661-0.0001938*512556.00+0.0001938*512690.3)))
[1] 0.08422038
這是關閉了約.001。我注意到其他一些差異似乎很高。這只是四捨五入錯誤還是我犯了一個根本的錯誤?由於
我從來沒有見過像這樣的任何子集數據。 – rawr
R保留的數字比顯示的更多。 – joran
看看'?options'。特別是查看幫助文件中的'digits'和'scipen'部分。 –