在 R 中回归时数据框中的 Phantom NA
Phantom NA's in dataframe when regression in R
我有相当大的数据框——大约 235K 行,我想进行多元回归:
model <- lm(var~., data=data)
但我得到一个错误:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
NA/NaN/Inf в 'y'
In addition: Warning message:
In storage.mode(v) <- "double" : NAs introduced by coercion
na.omit
和其他摆脱 NA 的方法都没有帮助。
所以我试着自己找NA。我将数据框分成两部分:
第二次更新
data1 <- data[1:(dim(data)[1]/2), ]
data2 <- data[(dim(data)[1]/2):(dim(data)[1]), ]
我又一次得到了 lm
的结果,而且之前的 UPD 部分没有错误!注意:我已经重新启动了 RStudio。
第一次更新
data1 <- data[1:(dim(data)[1]/2),]
当我调用 lm
而不是之前的错误时,我得到下一个:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
为了解决这个错误,我将数据从 235K 减少到 14.5K。那么,现在的问题是什么?一些 offcasted 切片不会抛出任何错误。
原始版本
data1 <- data[1:(dim(data)[1]/2)]
data2 <- data[(dim(data)[1]/2):(dim(data)[1])]
并为每个人调用 lm
:
model1 <- lm(var~., data=data1)
model2 <- lm(var~., data=data2)
而且我没有收到任何错误!所以,我想问题出在数据框的大尺寸上。有什么办法可以解决吗?
从 str(data)
的输出来看,您的某些数字预测变量似乎被编码为“字符”。
Re-code 使用 as.numeric
将它们转换为数字,看看是否能解决问题。
如果是,您可能想检查为什么将它们编码为字符。您的数据中是否存在恶意标点符号或空格?
我有相当大的数据框——大约 235K 行,我想进行多元回归:
model <- lm(var~., data=data)
但我得到一个错误:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
NA/NaN/Inf в 'y'
In addition: Warning message:
In storage.mode(v) <- "double" : NAs introduced by coercion
na.omit
和其他摆脱 NA 的方法都没有帮助。
所以我试着自己找NA。我将数据框分成两部分:
第二次更新
data1 <- data[1:(dim(data)[1]/2), ]
data2 <- data[(dim(data)[1]/2):(dim(data)[1]), ]
我又一次得到了 lm
的结果,而且之前的 UPD 部分没有错误!注意:我已经重新启动了 RStudio。
第一次更新
data1 <- data[1:(dim(data)[1]/2),]
当我调用 lm
而不是之前的错误时,我得到下一个:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
为了解决这个错误,我将数据从 235K 减少到 14.5K。那么,现在的问题是什么?一些 offcasted 切片不会抛出任何错误。
原始版本
data1 <- data[1:(dim(data)[1]/2)]
data2 <- data[(dim(data)[1]/2):(dim(data)[1])]
并为每个人调用 lm
:
model1 <- lm(var~., data=data1)
model2 <- lm(var~., data=data2)
而且我没有收到任何错误!所以,我想问题出在数据框的大尺寸上。有什么办法可以解决吗?
从 str(data)
的输出来看,您的某些数字预测变量似乎被编码为“字符”。
Re-code 使用 as.numeric
将它们转换为数字,看看是否能解决问题。
如果是,您可能想检查为什么将它们编码为字符。您的数据中是否存在恶意标点符号或空格?