在回归中处理Na / NaNs

时间:2015-04-08 15:34:03

标签: r time-series nan

所以我想使用R来计算回归。问题是,我想用对数转换变量来计算回归。这是我想要做的:

reg1 <- lm(y~x+z+u+log(p))

现在,由于您无法记录0,因此会弹出以下消息:

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

即使有NaN,我怎样才能计算回归(在我的情况下,它们仅针对变量p的前几个观察值产生)?非常感谢

Date        y        x      z       u      p
25.06.2009  0.582   1.145   0.603   26.36   0
26.06.2009  0.604   1.12    0.61    25.93   0
29.06.2009  0.647   1.108   0.647   25.35   0
30.06.2009  0.597   1.099   0.669   26.35   0
01.07.2009  0.604   1.085   0.633   26.22   0
02.07.2009  0.54    1.072   0.63    27.95   0
06.07.2009  0.543   1.048   0.57    29      0
07.07.2009  0.512   1.044   0.567   30.85   0
08.07.2009  0.496   1.029   0.533   31.3    0
09.07.2009  0.487   1.018   0.515   29.78   23
10.07.2009  0.482   1.007   0.504   29.02   66
13.07.2009  0.473   0.996   0.503   26.31   162
14.07.2009  0.471   0.985   0.503   25.02   235
15.07.2009  0.472   0.979   0.492   25.89   585
16.07.2009  0.441   0.969   0.486   25.42   668
17.07.2009  0.431   0.954   0.461   24.34   1080
20.07.2009  0.438   0.944   0.451   24.4    1883
21.07.2009  0.435   0.937   0.451   23.87   2398

编辑为了让自己更清楚,我只想省略因为回归的日志转换而生成的NaN。因为如果变量p的值为零,则实际上意味着当天没有观察值。我试过了nan.action=nan.exclude。但这种情况似乎有效。 THX

1 个答案:

答案 0 :(得分:1)

如果观察很少,那么快速排除p = 0的记录 例如

    lm(y ~ log(p), train, subset = p>0)