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


R smooth Tukey 的(运行中值)平滑


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

说明

Tukey 的平滑器、3RS3R、3RSS、3R 等。

用法

smooth(x, kind = c("3RS3R", "3RSS", "3RSR", "3R", "3", "S"),
       twiceit = FALSE, endrule = c("Tukey", "copy"), do.ends = FALSE)

参数

x

向量或时间序列

kind

指示所需平滑类型的字符串;默认为 "3RS3R"

twiceit

逻辑,指示结果是否应该是‘twiced’。将平滑器 加倍意味着 ,即将平滑残差添加到平滑值中。这会减少偏差(增加方差)。

endrule

表示边界平滑规则的字符串。 "Tukey" (默认)或 "copy"

do.ends

逻辑上,表明关系的 3 分割是否也应该发生在边界(末端)。这仅用于kind = "S"

细节

3是 Tukey 的跑步缩写median长度s3,
3R代表R重复3直到收敛,并且
S为了S长度为 2 或 3 的水平延伸的分裂。

因此,3RS3R是一个串联3R,S3R,3RSS类似地,而3RSR意味着首先3R接着(S and 3)重复直到收敛——这可能很糟糕。

"tukeysmooth" 类的对象(具有 printsummary 方法),是包含具有附加属性的平滑值的向量或时间序列。

注意

S 和 S-PLUS 在 smooth(*) 中使用不同的(更好一些)Tukey 平滑器。请注意,还有其他平滑方法可以提供更好的结果。这些是为手工计算而设计的,主要用于教学目的。

自从R1.2版,smooth 真正正确地执行 Tukey 的 end-point 规则(参见参数endrule)。

kind = "3RSR"一直是默认的直到R-1.1,但它可能具有非常糟糕的属性,请参阅示例。

请注意,对于 "3RS*" 类型,重复应用 smooth(*) 会更加平滑。

例子

require(graphics)

## see also   demo(smooth) !

x1 <- c(4, 1, 3, 6, 6, 4, 1, 6, 2, 4, 2) # very artificial
(x3R <- smooth(x1, "3R")) # 2 iterations of "3"
smooth(x3R, kind = "S")

sm.3RS <- function(x, ...)
   smooth(smooth(x, "3R", ...), "S", ...)

y <- c(1, 1, 19:1)
plot(y, main = "misbehaviour of \"3RSR\"", col.main = 3)
lines(sm.3RS(y))
lines(smooth(y))
lines(smooth(y, "3RSR"), col = 3, lwd = 2)  # the horror

x <- c(8:10, 10, 0, 0, 9, 9)
plot(x, main = "breakdown of  3R  and  S  and hence  3RSS")
matlines(cbind(smooth(x, "3R"), smooth(x, "S"), smooth(x, "3RSS"), smooth(x)))

presidents[is.na(presidents)] <- 0 # silly
summary(sm3 <- smooth(presidents, "3R"))
summary(sm2 <- smooth(presidents,"3RSS"))
summary(sm  <- smooth(presidents))

all.equal(c(sm2), c(smooth(smooth(sm3, "S"), "S")))  # 3RSS  === 3R S S
all.equal(c(sm),  c(smooth(smooth(sm3, "S"), "3R"))) # 3RS3R === 3R S 3R

plot(presidents, main = "smooth(presidents0, *) :  3R and default 3RS3R")
lines(sm3, col = 3, lwd = 1.5)
lines(sm, col = 2, lwd = 1.25)

参考

Tukey, J. W. (1977). Exploratory Data Analysis, Reading Massachusetts: Addison-Wesley.

也可以看看

runmed 用于运行中位数; lowessloesssupsmusmooth.spline

相关用法


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