gpt4 book ai didi

r - 散点图内核平滑: ksmooth() does not smooth my data at all

转载 作者:行者123 更新时间:2023-12-04 11:37:51 28 4
gpt4 key购买 nike

原始问题
我想平滑我的解释变量,例如车辆的“速度”数据,然后使用此平滑后的值。我搜索了很多东西,却没有发现直接答案。
我知道如何计算内核密度估计(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
这是一个散点图:
scatter
我想针对 speed平滑 t,并且我想为此使用内核平滑。根据@Zheyuan的建议,我应该使用 ksmooth():
fit <- ksmooth(vehicle$t, vehicle$speed)
但是,我发现平滑后的值与原始数据完全相同:
sum(abs(fit$y - vehicle$speed))  # 0
为什么会这样呢?谢谢!

最佳答案

回答老问题

您需要区分“内核密度估计”和“内核平滑”。
密度估计仅适用于单个变量。它旨在估计此变量在其物理域上的分布程度。例如,如果我们有1000个正常样本:

x <- rnorm(1000, 0, 1)
我们可以通过核密度估计器评估其分布:
k <- density(x)
plot(k); rug(x)
density
x轴上的地毯显示了 x值的位置,而曲线则测量了这些地毯的密度。
内核平滑,实际上是一个回归问题,或散点图平滑问题。您需要两个变量:一个响应变量 y和一个解释性变量 x。让我们只使用上面的 x作为解释变量。对于响应变量 y,我们从中生成一些玩具值
y <- sin(x) + rnorm(1000, 0, 0.2)
给定 yx之间的散点图:
scatter
我们想找到一个平滑函数来近似那些分散的点。
使用R函数 ksmooth()的Nadaraya-Watson内核回归估计将帮助您:
s <- ksmooth(x, y, kernel = "normal")
plot(x,y, main = "kernel smoother")
lines(s, lwd = 2, col = 2)
ks
如果要根据预测来解释所有内容,请执行以下操作:
  • 核密度估计:给定x,预测x的密度;也就是说,我们估计了P(grid[n] < x < grid[n+1])的概率,其中grid是一些围网点;
  • 内核平滑:给定x,预测y;也就是说,我们对函数f(x)进行了估算,该函数近似于y

  • 在这两种情况下,您都没有解释变量 x的平滑值。因此,您的问题:“我想平滑我的解释变量”是没有道理的。

    您实际上有一个时间序列吗?
    车辆的速度的速度”听起来像您正在沿着 speed监视 t一样。如果是这样,获取 speedt之间的散点图,然后使用 ksmooth()
    其他平滑方法(例如 loess()smooth.spline())也不属于内核平滑类,但是您可以进行比较。

    关于r - 散点图内核平滑: ksmooth() does not smooth my data at all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952793/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com