[英]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.