lm()NA/NaN/Inf错误

Pk.*_*.yd 24 r nan lm kaggle

我的问题很简单,但我无法弄清楚什么是错的.只是说我有data.framea

我用

m.fit <- lm(col2 ~ col3 * col4, na.action = na.exclude)
Run Code Online (Sandbox Code Playgroud)

col2具有一定的NA价值,col3col4具有小于1的值.

我一直在

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
NA/NaN/Inf in foreign function call (arg 1)
Run Code Online (Sandbox Code Playgroud)

我检查了邮件列表,它似乎是因为NAs in col2但我尝试使用,na.action=na.exclude/omit/pass但它们似乎都没有.我lm在前10个参赛作品中再次测试过,绝对不是因为NAs.这个警告的问题是每个谷歌的结果似乎都指向NA.

我错误地解释了这个错误,或者我lm错误地使用了错误?

谢谢

确定数据位于http://www.kaggle.com/c/GiveMeSomeCredit/Download/cs-training.csv.我使用线性回归对MonthlyIncome数据进行建模(不判断,我无法让某个glm家庭工作,因为我对R不好).我已经创建了自己的变量,但是如果你尝试使用已经存在的变量对MonthlyIncome进行建模,那么它就会失败.

sla*_*ter 35

我知道这个帖子真的很旧,但答案似乎并不完整,我只是碰到了同样的问题.

我遇到的问题是因为NA列也有NaN和Inf.删除它们并再试一次.特别:

col2[which(is.nan(col2))] = NA
col2[which(col2==Inf)] = NA
Run Code Online (Sandbox Code Playgroud)

希望能帮到你18个月大的问题!

  • 对于单行:`col2 [which(!is.finite(col2))] = NA` (12认同)

小智 8

您应该阅读"R初学者指南 "一书,获得对此的完整说明.具体来说,它提到了以下错误:

lm.fit中的错误(x,y,offset = offset,singular.ok = singular.ok,...):外部函数调用中的NA/NaN/Inf(arg 4)

解决方案是在Intensity数据中添加一个小的常量值,例如1.请注意,统计社区中正在进行有关添加小值的讨论.尽管如此,在R中进行计算时,不能使用零的对数.


arr*_*ond 5

毕竟可能的事na.omitna.exclude支票让我感到另一种可能性。

我正在采取类似:

lm(log(x) ~ log(y), data = ...)

无需注意,对于我的数据集中的某些值,x或y可能为零: log(0) = -Inf

因此,需要注意的另一件事!


小智 1

尝试更改 col2 的类型(以及所有其他变量)

col2 <- as.integer(col2)
Run Code Online (Sandbox Code Playgroud)