- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
原始问题
我想平滑我的解释变量,例如车辆的“速度”数据,然后使用此平滑后的值。我搜索了很多东西,却没有发现直接答案。
我知道如何计算内核密度估计(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
为什么会这样呢?谢谢!
最佳答案
回答老问题
您需要区分“内核密度估计”和“内核平滑”。
密度估计仅适用于单个变量。它旨在估计此变量在其物理域上的分布程度。例如,如果我们有1000个正常样本:
x <- rnorm(1000, 0, 1)
我们可以通过核密度估计器评估其分布:
k <- density(x)
plot(k); rug(x)
x
值的位置,而曲线则测量了这些地毯的密度。
y
和一个解释性变量
x
。让我们只使用上面的
x
作为解释变量。对于响应变量
y
,我们从中生成一些玩具值
y <- sin(x) + rnorm(1000, 0, 0.2)
给定
y
和
x
之间的散点图:
ksmooth()
的Nadaraya-Watson内核回归估计将帮助您:
s <- ksmooth(x, y, kernel = "normal")
plot(x,y, main = "kernel smoother")
lines(s, lwd = 2, col = 2)
x
,预测x
的密度;也就是说,我们估计了P(grid[n] < x < grid[n+1])
的概率,其中grid
是一些围网点; x
,预测y
;也就是说,我们对函数f(x)
进行了估算,该函数近似于y
。 x
的平滑值。因此,您的问题:“我想平滑我的解释变量”是没有道理的。
speed
监视
t
一样。如果是这样,获取
speed
和
t
之间的散点图,然后使用
ksmooth()
。
loess()
和
smooth.spline()
)也不属于内核平滑类,但是您可以进行比较。
关于r - 散点图内核平滑: ksmooth() does not smooth my data at all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952793/
我有以下问题: 我有一个数据框“测试”,看起来或多或少像这样: Date return price vol 20100902 0.3 15
原始问题 我想平滑我的解释变量,例如车辆的“速度”数据,然后使用此平滑后的值。我搜索了很多东西,却没有发现直接答案。 我知道如何计算内核密度估计(density()或KernSmooth::bkde(
我有一个像这样的核函数: x print(kernel$y) [1] NA 即使我改变 range.x它不会让步: x print(kernel$y) [1] NA 我如何获得 ksmooth功能
为什么 R 中的 ksmooth 会生成 NA? set.seed(1) x <- sort(rnorm(1000,0,2)) e <- rnorm(1000) y <- x + e ks <- ks
我是一名优秀的程序员,十分优秀!