R 和线性回归:R 怎么可能说我有 NA 值?

问题描述 投票:0回答:0

我正在使用数据集中的变量运行线性回归

final2

这里是数据集的样本

nquest nord sex anasc ireg eta staciv studio tpens
173    1   1  1948   18    64      3      5  2500
375    1   2  1925   16    87      4      2   409
629    1   1  1939    5    73      4      3  1188
632    1   1  1950    5    62      1      3  1320
633    1   2  1934    5    78      4      2   350
1238   1   1  1937   15    75      4      3  1000
7886   1   1  1950    9    62      1      5  2000
11972  2   1  1938   17    74      1      2   750
20174  1   1  1941    8    71      1      5  2000
20174  2   2  1942    8    70      1      3   132
20223  1   2  1938    3    74      1      5   800
20223  2   1  1939    3    73      1      4   980
20711  2   1  1944    4    68      1      2  1900
20837  1   1  1931    8    81      1      4  1600
20837  2   2  1928    8    84      1      2   430
21461  1   2  1918    5    94      4      2   600
22173  1   1  1938   15    74      1      2  1200
22208  1   2  1935    5    77      4      2   700
22222  1   1  1927    5    85      4      2  1100
22276  1   1  1949    8    63      2      5  1170

如果我运行线性回归,它会起作用

> lm(tpens ~ sex + eta + ireg + studio, data = final2)

Call:
lm(formula = tpens ~ sex + eta + ireg + studio, data = final2)

Coefficients:
(Intercept)          sex          eta         ireg       studio  
   1401.511     -404.133       -4.882       -3.860      202.406  

但是我需要用变量的

log
来运行它
tpens

> lm(log(tpens) ~ sex + eta + ireg + studio, data = final2)

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  NA/NaN/Inf in 'y'

你会认为变量

tpens
中有NA或0值,但事实并非如此

> which(is.na(final2$tpens))
integer(0)
> sum(final2$pens == 0, na.rm = TRUE)
[1] 0

事实上,如果我尝试在回归之外创建

log
tpens
,它会起作用

> head(log(final2$tpens))
[1] 7.824046 6.013715 7.080026 7.185387 5.857933 6.907755
> tail(log(final2$tpens))
[1] 7.279319 6.016157 7.258412 6.692084 6.684612 7.090077

我还检查了其他变量以确保

> which(is.na(final2$sex))
integer(0)
> which(is.na(final2$eta))
integer(0)
> which(is.na(final2$ireg))
integer(0)
> which(is.na(final2$studio))
integer(0)

这怎么可能?我真的需要用

log(tpens)
运行回归。我该如何解决?

更新

tpens
是一种工资,因此几乎不可能是0或-inf。 不过,我试过了

> summary(final2$tpens)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0     700    1035    1113    1400    8000 


> sum(final$pens == 0, na.rm = TRUE)
[1] 0
r variables regression na logarithm
© www.soinside.com 2019 - 2024. All rights reserved.