R の平滑化関数の簡易紹介
R は幾つかのデータの平滑化関数を持つ。一部は時系列オブジェクトの 平滑化を行う。ここでは R の基本パッケージ stats 中の、特に散布図の平滑化を行う関数を紹介する。
Nadaraya-Watson による核関数を用いた回帰平滑化を行う。
ksmooth(x, y, kernel = c("box", "normal"), bandwidth = 0.5, range.x = range(x), n.points = max(100, length(x)), x.points)
LOWESS 平滑化による計算を実行する。 lowess89 は平滑結果の座標である x と y を成分に持つリストを 返す。平滑結果は lines() 関数で元の散布図プロットに描き加えることができる。
lowess(x, y = NULL, f = 2/3, iter=3, delta = 0.01 * diff(range(xy$x[o])))
散布図を描き、それに Loess による平滑化曲線を上描きする。
scatter.smooth(x, y, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), ylim = range(y, prediction$y), evaluation = 50, ...) loess.smooth(x, y, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation = 50, ...)
スプライン関数当てはめによる新しい点での予測を行う。 予測は元のデータ範囲外では直線になる。
## クラス "smooth.spline" に対する S3 メソッド predict(object, x, deriv = 0, ...)
与えられたデータに3次の平滑化スプライン関数を当てはめる。
smooth.spline(x, y = NULL, w = NULL, df, spar = NULL, cv = FALSE, all.knots = FALSE, nknots = NULL, df.offset = 0, penalty = 1, control.spar = list())
散布図を描き、それに Loess による平滑化曲線を上描きする。
scatter.smooth(x, y, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), ylim = range(y, prediction$y), evaluation = 50, ...) loess.smooth(x, y, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation = 50, ...)
Friedman の「super smoother」を用いて (x,y) 値を 平滑化する。
supsmu(x, y, wt, span = "cv", periodic = FALSE, bass = 0)
奇数スパンの移動中央値(running median)を計算する。 これは考えられる限り「最も頑健」な散布図平滑化である。効率化(そして歴史的理由から)、 同じ結果を与える二つの方法を選ぶことができる。
runmed(x, k, endrule = c("median","keep","constant"), algorithm = NULL, print.level = 0)
Tukey の移動中央値平滑化(runnning median)を行う。
smooth(x, kind = c("3RS3R", "3RSS", "3RSR", "3R", "3", "S"), twiceit = FALSE, endrule = "Tukey", do.ends = FALSE)
最端点で順次小さくなる中央値と Tukey の端点規則を使用し、 ベクトル y の端点を平滑化する。
smoothEnds(y, k = 3)