2017-04-11 14 views
2

私はタイプのパワーモデルに適合したいと思います:R:フィッティング電源機能 - エラーの修正とより

y = b*x(^z) 

私のデータは、質量パッケージから動物のデータです。

私のコードはここにある:

library(MASS) 
nls(brain~b*body^z,start = list(b = 0, z = 1),data=Animals) 

それは私が

Error in nlsModel(formula, mf, start, wts) : 
    singular gradient matrix at initial parameter estimates 

を修正する方法がわからないし、私がお聞きしたいのエラーがこのモデルに合うように、この権利は、私の機能を使用している持っています。

ありがとうございました!

+0

をzの小さな摂動はrhsの値には何の影響も与えません。 –

+0

私はごめんなさい、私はrの初心者です、あなたはbとzを設定する方法を教えてくれますか?ありがとう – kkjoe

+1

bの開始値を0に設定してください。 –

答えて

2

あなたには2つの間違いがあります。 1つはb = 0による特異な勾配であり、もう1つは完全に異なる分布に従う2つの異なるタイプの動物が存在するという事実である。分布の

ルック:

enter image description here 特異勾配を修正するには、まだエラーが発生します。

> nls(brain~b*body^z,start = list(b = 0.1, z = 1),data=Animals) 
Error in numericDeriv(form[[3L]], names(ind), env) : 
    Missing value or an infinity produced when evaluating the model 

したがって、あなたもこれを行う必要があります。その後、B = 0の場合

subset(Animals, ! body > 9000) -> mammals 
nls(brain~b*body^z,start = list(b = 0.1, z = 1),data=mammals) 
Nonlinear regression model 
    model: brain ~ b * body^z 
    data: mammals 
     b  z 
15.5540 0.6795 
residual sum-of-squares: 4301588 

Number of iterations to convergence: 13 
Achieved convergence tolerance: 3.321e-06 
関連する問題