【问题标题】:R: Function "lowess" with NAsR:具有 NA 的函数“lowess”
【发布时间】:2015-06-15 14:40:46
【问题描述】:

我正在尝试使用基本包中的函数“lowess”来平滑矢量。问题是该向量只有一个 NA 值,但经过“lowess”平滑后,又出现了 4 个 NA。我进行了搜索,有人建议在“gplots”包中使用“lowess”。我试过但得到了相同的结果。

x1 <- c(NA, 19.93621, 17.64789, 17.78488, 17.11141, 18.4648, 19.62629, 17.5737, 17.48582, 18.76946, 19.57138, 19.62812, 2.982385, -0.1320513)
x2 <- lowess(x1)
x2
$x
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14

$y
[1]        NA        NA        NA        NA        NA 18.988279 18.563642 18.407768 18.496699 17.922510 14.419999 10.861535  7.179754  3.145612

一种方法是删除 x1 中的 NA,这样在 x2$y 中平滑后就没有 NA。

x2 <- lowess(x1[-1])
x2
$x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13

$y
 [1] 18.7079309 18.4481273 18.2491632 18.0847709 18.0946245 18.1282192 18.1497617 17.9298278 14.6441882 10.9465210  7.2635244  3.5247529 -0.3021372

但我只是想知道为什么会出现更多的 NA,有没有更简单的方法?谢谢!

【问题讨论】:

  • lowess 进行局部多项式拟合。如果您在某个点的局部区域有 NA,则这些 NA 值将传播到附近的值。

标签: r na smooth


【解决方案1】:

lowess 没有任何内置的NA 处理

    1234563 987654326@ 可以,默认情况下应该按照您想要的方式工作 - 但是,就语法而言,loess 的工作方式更像 lm,而不是 lowess)。
  1. 您可以在lowess 的参数上直接使用na.omit;这样您就不需要具体确定哪些观察被省略了。

【讨论】:

  • 这看起来不错,但使用默认参数时,lowessloess 会给出截然不同的结果。不知道如何简单地将前者变成后者,你能指导我吗?
  • 这是一个很好的问题,但可惜没有进一步的答案。您最终切换到loess 还是lowess 以您想要的方式工作? @Kacey
猜你喜欢
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
相关资源
最近更新 更多