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


R loess 局部多項式回歸擬合


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

說明

使用局部擬合擬合由一個或多個數值預測變量確定的局部多項式曲麵。

用法

loess(formula, data, weights, subset, na.action, model = FALSE,
      span = 0.75, enp.target, degree = 2,
      parametric = FALSE, drop.square = FALSE, normalize = TRUE,
      family = c("gaussian", "symmetric"),
      method = c("loess", "model.frame"),
      control = loess.control(...), ...)

參數

formula

formula 指定數字響應和一到四個數字預測變量(最好通過交互指定,但也可以附加指定)。如有必要,將強製采用公式。

data

包含模型中變量的可選 DataFrame 、列表或環境(或由 as.data.frame 強製轉換為 DataFrame 的對象)。如果在 data 中找不到,則從 environment(formula) 中獲取變量,通常是調用 loess 的環境。

weights

每種情況的可選重量。

subset

要使用的數據子集的可選規範。

na.action

在響應或預測變量中缺失值時要采取的操作。默認值由 getOption("na.action") 給出。

model

模型框架應該退回嗎?

span

參數 控製平滑程度。

enp.target

另一種指定 span 的方法,作為要使用的參數的近似等效數量。

degree

要使用的多項式的次數,通常為 1 或 2。(也允許次數為 0,但請參閱“注釋”。)

parametric

任何條款是否應該在全局範圍內而不是在本地範圍內適用?術語可以通過名稱、數字或與預測變量數量相同長度的邏輯向量來指定。

drop.square

對於多個預測變量和 degree = 2 的擬合,是否應該針對特定預測變量刪除二次項?術語的指定方式與 parametric 相同。

normalize

如果有多個預測變量,是否應該將其標準化為通用比例?使用的歸一化是將 10% 修剪標準差設置為 1。對於空間坐標預測器和其他已知的通用比例尺,設置為 false。

family

如果 "gaussian" 擬合是通過最小二乘法進行的,並且如果 "symmetric" 則將重新降序 M 估計器與 Tukey 的雙權重函數一起使用。可以縮寫。

method

擬合模型或僅提取模型框架。可以縮寫。

control

控製參數:參見loess.control

...

也可以直接提供控製參數(如果未指定control)。

細節

裝配是在本地完成的。也就是說,對於點 處的擬合,使用 鄰域中的點進行擬合,並按它們與 的距離進行加權(計算距離時忽略 ‘parametric’ 變量中的差異)。鄰域的大小由 控製(由 spanenp.target 設置)。對於 ,鄰域包括點的比例 ,並且這些點具有三次權重(與 成比例)。對於 ,使用所有點,“最大距離”假定為 乘以 解釋變量的實際最大距離。

對於默認族,擬合是通過(加權)最小二乘法進行的。對於 family="symmetric",使用了帶有 Tukey 雙權重的 M-estimation 過程的幾次迭代。請注意,由於初始值是最小二乘擬合,因此這不需要是非常穩定的擬合。

調整控製列表以獲得可接受的速度可能很重要。有關詳細信息,請參閱loess.control

"loess" 的對象,具有 print()summary()predictanova 方法。

注意

由於這是基於 cloess 的,因此它與 S 的 loess 函數類似但不完全相同。特別是,未實現調節。

loess 的此實現的內存使用量大致是點數的二次方,1000 個點大約占用 10Mb。

degree = 0 ,局部常量擬合,在此實現中允許,但未記錄在參考中。似乎很少經過測試,因此請謹慎使用。

例子

cars.lo <- loess(dist ~ speed, cars)
predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE)
# to allow extrapolation
cars.lo2 <- loess(dist ~ speed, cars,
                  control = loess.control(surface = "direct"))
predict(cars.lo2, data.frame(speed = seq(5, 30, 1)), se = TRUE)

作者

B. D. Ripley, based on the cloess package of Cleveland, Grosse and Shyu.

來源

Cleveland、Grosse 和 Shyu 的 1998 版 cloess 包。更高版本可在 https://netlib.org/a/ 處作為 dloess 獲得。

參考

W. S. Cleveland, E. Grosse and W. M. Shyu (1992) Local regression models. Chapter 8 of Statistical Models in S eds J.M. Chambers and T.J. Hastie, Wadsworth & Brooks/Cole.

也可以看看

loess.controlpredict.loess

lowessloess 的祖先(具有不同的默認值!)。

相關用法


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