R逻辑回归舍入错误?

时间:2014-02-20 02:57:40

标签: r

我刚学习R中的逻辑回归,并且遇到了令人困惑的事情。我有一个包含两个预测变量的大型数据集,用于训练logit模型。

> 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

正如您所看到的,该模型在我的第一个测试数据点上成功率为.08359。作为一个完整性检查,我想将模型系数插入logistic function以及我的第一次测试观察,并确保我得出相同的结果。这就是我得到的

> 1/(1+exp(-(-2.4123661-0.0001938*512556.00+0.0001938*512690.3)))
[1] 0.08422038

大概是.001。我注意到其他一些差异似乎有点高。这只是舍入错误还是我犯了根本错误?感谢

1 个答案:

答案 0 :(得分:2)

试试这个:

sum( c(1, 512556.00, 512690.3) * coef(model) ) 

感谢复选标记,但即使我在第一篇帖子中提出建议,下一个建议可能也行不通。有两个原因。第一个是来自traintest的输出看起来来自data.table对象,因为它不包含表示基线所需的'1'乘以(Intercept)中的coef()值回来了。

sum( traintest[1, ] * coef(model) )