簡體   English   中英

R功能無輸出黃土跨度

[英]R function no output loess span

因此,我編寫了一個函數,該函數應該為我找到loess函數的跨度,該跨度對應於一個方程的自由度:

m <- function(x) x+4*cos(7*x)
x<-seq(-1,1,length=101)

為了找到自由度,我使用了身份矩陣

y<-diag(101)
slp<-matrix(0,nrow=101,ncol=101)
snw<- is the hat matrix

這是我的函數,我希望它輸出的范圍大約等於帽子矩陣snw相同的自由度(對角線之和)

y<-diag(101)
dflp<-function(span,value)
       {
        for(q in 1:301)
          {          
          for(i in 1:101)
            {
            slp[,i]<-predict(loess(y[,i]~x,span=span[q]),newdata=x)
            }
          if(sum(diag(slp))-value==0)
            {
             cat("span:",format(span[q]),"\n")
             break
            }
          }
        }

它似乎什么也不輸出,並且q的值始終為7。

謝謝。

注意:這不是家庭作業。

您的邏輯似乎沒有任何問題。 您正在對多個候選span執行網格搜索。 當得到的自由度與snw給定的自由度匹配時,就停止搜索。

您無法從函數dflp獲得任何返回值,因為函數dflp缺少return(span[q])

我要提出的另一個建議與上面的評論類似。 永遠不會用精確的0來判斷“收斂”,但要達到一定的容差。 通常我們使用相對公差:

abs(diag(slp)-value) / value < 1e-6  ## tol = 1e-6

暫無
暫無

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

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