2017-06-21 6 views
0

私は奇妙な問題に直面しています。おそらく愚かですが、私はそれを見ていないし、助けに感謝します。次のコードは今nlsが収束してもエラーを返す

x<-seq(100, 1000, 100) 
b<-0.3 
y<-x^-b 

のは、私がモデルに合うようにしたいとすることができますように私は(説明のために、

df <- data.frame(x = x, y = y) 
nlf <- nls(y~p1*x^-p2 , data = df, start=list(p1=1,p2=1), trace = TRUE) 

は、私は右の結果への迅速な収束を取得するには、次のコードを使用すると仮定してみましょうを考えてみましょうチェック)。しかし、私もエラーが発生します

5.392604e-33 : 1.0 0.3 
5.392604e-33 : 1.0 0.3 
5.392604e-33 : 1.0 0.3 
Error in nls(y ~ p1 * x^-p2, data = df, start = list(p1 = 1, p2 = 1), : 
    Iterationenzahl überschritt Maximum 50 

誰でも説明できますか? ありがとうございます。

答えて

1

ドキュメント(?nls)から、「人工のゼロ残差」データに「nlsを使用しないでください」という警告が表示されます。したがって、エラーは、基本的に完全にあなたのデータに適合するあなたの例の製品です。これがなぜ起こるかの説明は、ドキュメンテーションで見ることができます。以下のようにノイズのビットを追加してみ :OKは、ドキュメントを読んでください、あなたがこの記事を書いたとして

x<-seq(100, 1000, 100) 
b<-0.3 
y<-x^-b + rnorm(100, 0, 0.1) # Remember to add noise 
df <- data.frame(x = x, y = y) 
nlf <- nls(y~p1*x^-p2 , data = df, start=list(p1=1,p2=1), trace = TRUE) 
#3.591758 : 1 1 
#3.581732 : 0.6274025 0.8963628 
#3.565431 : 0.3056595 0.7399811 
#3.488972 : 0.1682877 0.5522106 
#3.263759 : 0.1895249 0.4433675 
#2.941386 : 0.2844498 0.4125101 
#2.452259 : 0.4660136 0.4015228 
#1.793046 : 0.7829449 0.3985467 
#1.172338 : 1.2573922 0.3981166 
#0.9667725 : 1.7315307 0.3981305 
#0.9667725 : 1.7315408 0.3981278 
+0

...私はまさにこのことを考えていた... ;-)よりよい感謝を知っている必要があります。 – Umberto

+0

@fasttouch問題はありません。ドキュメントのかなり遠いです;) –

関連する問題