【发布时间】:2016-10-23 11:54:12
【问题描述】:
原问题
我想平滑我的解释变量,比如车辆的速度数据,然后使用这个平滑值。我搜索了很多,没有找到直接是我的答案。
我知道如何计算核密度估计(density() 或KernSmooth::bkde()),但我不知道如何计算速度的平滑值。
重新编辑的问题
感谢@ZheyuanLi,我能够更好地解释我拥有什么以及我想做什么。所以我重新编辑了我的问题如下。
我在一段时间内对车辆进行了一些速度测量,存储为数据框vehicle:
t speed
1 0 0.0000000
2 1 0.0000000
3 2 0.0000000
4 3 0.0000000
5 4 0.0000000
. . .
. . .
1031 1030 4.8772222
1032 1031 4.4525000
1033 1032 3.2261111
1034 1033 1.8011111
1035 1034 0.2997222
1036 1035 0.2997222
这是一个散点图:
我想平滑speed 和t,我想为此目的使用内核平滑。根据@Zheyuan的建议,我应该使用ksmooth():
fit <- ksmooth(vehicle$t, vehicle$speed)
但是,我发现平滑后的值与我的原始数据完全相同:
sum(abs(fit$y - vehicle$speed)) # 0
为什么会这样?谢谢!
【问题讨论】:
-
假设你有一个向量,使用R中的
density函数。你可以将它赋值为Y<-density(Speed),得到Y$y,也就是平滑后的值。 -
rollmeanin packagezoo很好。 -
loess函数通常用于非参数平滑。它有一个预测方法。计算 kde 的平滑度对我来说没有多大意义。也许你应该发布一个例子。这从未排序的值开始,对它们进行排序并估计它们的本地“接近度”。 -
其实我想从平滑的速度计算加速度,然后用它们构建另一个解释变量,然后做一个回归。
-
@ZheyuanLi:我发表评论并不意味着我也投反对票。事实上,我很少投反对票。我确实同意它现在很有用,并且您的第二个答案值得代表,尽管我认为有两个不同的答案有点令人困惑。
标签: r regression curve-fitting smoothing