当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R smoothEnds 端点平滑(用于运行中位数)


R语言 smoothEnds 位于 stats 包(package)。

说明

使用随后较小的中位数和最后的 Tukey 终点规则来平滑向量 y 的终点。 (奇数跨度),

用法

smoothEnds(y, k = 3)

参数

y

要平滑的因变量(向量)。

k

最大中值窗口的宽度;一定是奇数。

细节

smoothEnds 仅用于进行“终点平滑”,即最多更改比窗口 k 一半更接近开始/结束的观测值。第一个和最后一个值是使用 Tukey 的终点规则计算的,即 sm[1] = median(y[1], sm[2], 3*sm[2] - 2*sm[3], na.rm=TRUE)

R版本 3.6.0 及更早版本,缺失值 (NA) 在y通常会导致错误,而现在相当于median(*, na.rm=TRUE)被使用。

平滑值向量,长度与 y 相同。

例子

require(graphics)

y <- ys <- (-20:20)^2
y [c(1,10,21,41)] <-  c(100, 30, 400, 470)
s7k <- runmed(y, 7, endrule = "keep")
s7. <- runmed(y, 7, endrule = "const")
s7m <- runmed(y, 7)
col3 <- c("midnightblue","blue","steelblue")
plot(y, main = "Running Medians -- runmed(*, k=7, endrule = X)")
lines(ys, col = "light gray")
matlines(cbind(s7k, s7.,s7m), lwd = 1.5, lty = 1, col = col3)
eRules <- c("keep","constant","median")
legend("topleft", paste("endrule", eRules, sep = " = "),
       col = col3, lwd = 1.5, lty = 1, bty = "n")

stopifnot(identical(s7m, smoothEnds(s7k, 7)))

## With missing values (for R >= 3.6.1):
yN <- y; yN[c(2,40)] <- NA
rN <- sapply(eRules, function(R) runmed(yN, 7, endrule=R))
matlines(rN, type = "b", pch = 4, lwd = 3, lty=2,
         col = adjustcolor(c("red", "orange4", "orange1"), 0.5))
yN[c(1, 20:21)] <- NA # additionally
rN. <- sapply(eRules, function(R) runmed(yN, 7, endrule=R))
head(rN., 4); tail(rN.) # more NA's too, still not *so* many:
stopifnot(exprs = {
   !anyNA(rN[,2:3])
   identical(which(is.na(rN[,"keep"])), c(2L, 40L))
   identical(which(is.na(rN.), arr.ind=TRUE, useNames=FALSE),
             cbind(c(1:2,40L), 1L))
   identical(rN.[38:41, "median"], c(289,289, 397, 470))
})

作者

Martin Maechler

参考

John W. Tukey (1977) Exploratory Data Analysis, Addison.

Velleman, P.F., and Hoaglin, D.C. (1981) ABC of EDA (Applications, Basics, and Computing of Exploratory Data Analysis); Duxbury.

也可以看看

runmed(*, endrule = "median") 调用 smoothEnds()

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 End Points Smoothing (for Running Medians)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。