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


R lowess 散點圖平滑


R語言 lowess 位於 stats 包(package)。

說明

此函數使用 locally-weighted 多項式回歸執行 LOWESS 平滑器的計算(請參閱引用)。

用法

lowess(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(x)))

參數

x, y

給出散點圖中點坐標的向量。或者,可以指定單個繪圖結構 - 請參閱xy.coords

f

跨度越平滑。這給出了圖中影響每個值的平滑度的點的比例。值越大,平滑度越高。

iter

應該執行的 ‘robustifying’ 迭代次數。使用較小的 iter 值將使 lowess 運行得更快。

delta

查看具體信息'。默認為 x 範圍的 1/100。

細節

lowess由複雜的算法定義,Ratfor 的原始算法(由 W. S. Cleveland 編寫)可以在R源文件‘src/library/stats/src/lowess.doc’。通常使用局部線性多項式擬合,但在某些情況下(參見文件)可以使用局部常數擬合。 “本地”是根據到目的地的距離來定義的floor(f*n)th 最近鄰,並且三次加權用於x屬於鄰域內。

初始擬合是使用加權最小二乘法完成的。如果iter > 0,使用接近的權重的乘積來完成進一步的加權擬合x從上一次迭代的殘差得出的值和案例權重。具體來說,案例權重是 Tukey 的雙權重,截止值是殘差 MAD 的 6 倍。 (當前R如果 MAD 實際上為零,則實現與原始實現的不同之處在於停止迭代,因為在這種情況下算法非常不穩定。)

delta 用於加速計算:不是計算每個數據點的局部多項式擬合,而是不會計算最後計算點的 delta 內的點,並且使用線性插值來填充擬合值跳過的點。

lowess 返回一個包含組件 xy 的列表,它們給出了平滑的坐標。可以使用函數 lines 將平滑添加到原始點的圖中:請參閱示例。

例子

require(graphics)

plot(cars, main = "lowess(cars)")
lines(lowess(cars), col = 2)
lines(lowess(cars, f = .2), col = 3)
legend(5, 120, c(paste("f = ", c("2/3", ".2"))), lty = 1, col = 2:3)

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988). The New S Language. Wadsworth & Brooks/Cole.

Cleveland, W. S. (1979). Robust locally weighted regression and smoothing scatterplots. Journal of the American Statistical Association, 74, 829-836. doi:10.1080/01621459.1979.10481038.

Cleveland, W. S. (1981) LOWESS: A program for smoothing scatterplots by robust locally weighted regression. The American Statistician, 35, 54. doi:10.2307/2683591.

也可以看看

loess ,基於公式的新版本 lowess(具有不同的默認值!)。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Scatter Plot Smoothing。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。