2
RでMarquardtアルゴリズムを実装しようとしています.nls.lm関数の例を見て、それに基づいて何かを書き込もうとしました。ここでは(結果1は、262個の値の列であること、私は最高のフィット感指数平滑を超える行う必要があります)MarquardtアルゴリズムR
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から始まり、ソルバーは0.55114になりました。
お時間を頂きまして、ありがとうございます。 Arpine
これは機能します。本当にありがとう!唯一のことは、x <-rnorm(20)を含んでいないということです。これはx値を駄目にするので、必要ないと思います。また、私はインデックスで少し演奏しなければならないが、それは小さなものであり、それは完全に動作し、私が望むものに近づく:〜0.55。 もう一度おねがいします! –