當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。