【发布时间】:2015-06-14 22:15:56
【问题描述】:
我正在尝试使用 na.spline(zoo 包的一部分)将某些导入的速度数据中的 NA 值替换为三次样条插值。
na.spline 正在修改NA 的值,因为它应该是;但是,它也在修改最初等于 0 的值。
ex <- data.frame(speed)
ex$speed2 <- na.spline(ex$speed)
我的数据集是 ~1400 个值。我在下面包含了前约 40 个值。在这里,您可以看到原始的 speed 值和 speed 2 中的错误插值结果:
speed speed2
NA 8.639277e-06
0.000000 0.000000e+00
0.000000 0.000000e+00
0.000000 0.000000e+00
0.000000 -1.694066e-21
0.000000 0.000000e+00
0.000000 -2.710505e-20
0.000000 0.000000e+00
0.000000 -4.336809e-19
0.000000 0.000000e+00
0.000000 6.938894e-18
0.000000 0.000000e+00
0.000000 1.110223e-16
2.661698 2.661698e+00
3.107128 3.107128e+00
7.319669 7.319669e+00
10.800864 1.080086e+01
17.855491 1.785549e+01
18.250267 1.825027e+01
28.587002 2.858700e+01
36.405397 3.640540e+01
38.467383 3.846738e+01
38.685956 3.868596e+01
43.917737 4.391774e+01
40.829615 4.082962e+01
43.519173 4.351917e+01
45.597497 4.559750e+01
43.252656 4.325266e+01
45.581646 4.558165e+01
48.258325 4.825832e+01
48.269969 4.826997e+01
50.905045 5.090505e+01
53.258165 5.325817e+01
58.391370 5.839137e+01
59.278440 5.927844e+01
58.720518 5.872052e+01
56.933438 5.693344e+01
62.062116 6.206212e+01
59.860849 5.986085e+01
60.183378 6.018338e+01
有没有人遇到过类似的问题或有替代方法来用插值数据替换 NA 值?
【问题讨论】:
-
见这里:stackoverflow.com/questions/18695335/… - 虽然
na.spline应该可以工作。 -
实际上,查看示例数据,样条曲线运行良好。您是否尝试过绘制两组数据?
-
在大多数应用程序中,我可以得到结果,但我必须对结果执行一些车辆模拟,并且我需要
0速度正好是0。虽然1.6 e-21之类的东西和0很接近,但在模拟中这将是switch=ON和switch=OFF之间的差异,这并不好。 -
试试
round(na.spline(df$speed), 6) -
我同意@StevenBeaupré - 您需要为您的输出设置一个容差,通过该容差您可以确定某个东西需要接近 0 的程度,直到您认为它有效地为 0。
标签: r interpolation zoo spline