簡體   English   中英

理解R中的黃土錯誤

[英]Understanding loess errors in R

我正在嘗試使用黃土擬合模型,並且我遇到諸如“在3處使用偽逆”,“鄰域半徑1”和“倒數條件數0”之類的錯誤。 這是一個MWE:

x = 1:19
y = c(NA,71.5,53.1,53.9,55.9,54.9,60.5,NA,NA,NA
      ,NA,NA,178.0,180.9,180.9,NA,NA,192.5,194.7)
fit = loess(formula = y ~ x,
        control = loess.control(surface = "direct"),
        span = 0.3, degree = 1)
x2 = seq(0,20,.1)
library(ggplot2)
qplot(x=x2
    ,y=predict(fit, newdata=data.frame(x=x2))
    ,geom="line")

我意識到我可以通過選擇更大的跨度值來修復這些錯誤。 但是,我正在嘗試自動化這種擬合,因為我有大約100,000個時間序列(每個長度大約20個)與此類似。 有沒有辦法可以自動選擇一個可以防止這些錯誤的跨度值,同時仍能提供相當靈活的數據擬合? 或者,任何人都可以解釋這些錯誤的含義嗎? 我在loess()和simpleLoess()函數中做了一些討論,但是在調用C代碼時我放棄了。

比較fit$fitted y fit$fitted y 您會注意到回歸出現問題。 選擇足夠的帶寬,否則它只是插入數據。 由於數據點太少,線性函數在小帶寬上表現得像常數,並觸發共線性。 因此,您會看到錯誤警告pseudoinverses,奇點。 如果使用degree=0ksmooth則不會看到此類錯誤。 一個可理解的,數據驅動的span選擇是用於交叉驗證,您可以在Cross Validated中詢問。

> fit$fitted
 [1]  71.5  53.1  53.9  55.9  54.9  60.5 178.0 180.9 180.9 192.5 194.7
> y
 [1]    NA  71.5  53.1  53.9  55.9  54.9  60.5    NA    NA    NA    NA    NA 178.0
[14] 180.9 180.9    NA    NA 192.5 194.7

您會看到過度擬合(完美擬合),因為在您的模型中,參數數量與有效樣本數量一樣多。

fit
#Call:
#loess(formula = y ~ x, span = 0.3, degree = 1, control = loess.control(surface = "direct"))

#Number of Observations: 11 
#Equivalent Number of Parameters: 11 
#Residual Standard Error: Inf 

或者,您也可以使用自動geom_smooth (再次設置geom_smooth(span=0.3)會拋出警告)

ggplot(data=data.frame(x, y), aes(x, y)) + 
  geom_point() + geom_smooth()

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM