R に Marquardt アルゴリズムを実装しようとしています。 nls.lm 関数の例を見て、それに基づいて何かを書こうとしました。これが私のコードです(result1は262個の値の列であり、最適な指数平滑化を行う必要があります)
n=seq(1:262)
x=result1
#observed values
obs<-function(nn) x[nn+1]
#exponentially smoothed values
pred<-function(p, nn) ifelse(nn==1, obs(0), p*obs(nn-1)+(1-p)*Recall(p, nn-1))
#residuals
resFun<-function(p, nn) obs(n)-pred(p, nn)
nls.out<-nls.lm(par=0.33, resFun, nn=n, control = nls.lm.control(nprint=1)))
しかし、それは私にこのエラーを与え続けます。
Error in x[n + 1] : only 0's may be mixed with negative subscripts
どこかで関数の定義のばかばかしい間違いに違いないことはわかっていますが、何が間違っているのかがわかれば見てください。これをExcelで解決したとき、p = 0.33で開始し、ソルバーはtop = 0.55114になりました。これは基本的に、0.33から始まる最適な値0.55114を見つけるために、私がやろうとしていることです。
お時間をいただき申し訳ございません。アルパイン