当用R绘制线性模型(lm)时产生NaN

时间:2015-02-04 19:28:39

标签: r linear-regression glm lm

我正在尝试创建一个正常的回归模型和一个逻辑回归模型来预测真实状态数据中的欺诈。我使用混合数据集(分类和数字变量),我已经完成了预处理和重新编码,这样我每个分类变量的每个级别都有均衡的权重(避免包含只有1个注册表的级别的变量混合了具有许多级别的级别观察,等等)。我添加了一个交互来增加我的lm的R ^ 2。当我想绘制我的线性模型时,我收到了这个警告:

    Warning messages:
1: In sqrt(crit * p * (1 - hh)/hh) : NaNs produced
2: In sqrt(crit * p * (1 - hh)/hh) : NaNs produced

这似乎与库克的距离有关 - https://bugs.r-project.org/bugzilla3/show_bug.cgi?format=multiple&id=9316 - (影响因素,即使我删除了异常值......)。知道是什么导致了这个错误,可以做些什么来绘制线性模型?

我的代码示例:

lm.a3 <- lm(log(response) ~(.-file_status)*file_status, data=data) 
final.lm3 <- stepAIC(lm.a3,direction="both")
summary(final.lm3) #R^2 = 64%
par(mfrow=c(2,2))
plot(final.lm3)

感谢您的时间,感谢您的回答

1 个答案:

答案 0 :(得分:2)

问题是我在运行stepAIC函数之前进行了对数转换以改善拟合。由于我的一些响应变量等于1,因此在执行log(response_variable)时,对于某些情况,此函数的输出等于零。将最小数量添加到对数函数的参数解决了问题:log(response_variable + 0.0001234)。感谢@LyzandeR的反馈。