データフレームにすでにあるxデータとyデータに合うようにべき乗則の線をプロットしようとしています。igraphライブラリでpower.law.fitを試しましたが、機能しません。データフレームは次のとおりです。
dat=data.frame(
x=1:8,
ygm=c( 251.288, 167.739, 112.856, 109.705, 102.064, 94.331, 95.206, 91.415)
)
データフレームにすでにあるxデータとyデータに合うようにべき乗則の線をプロットしようとしています。igraphライブラリでpower.law.fitを試しましたが、機能しません。データフレームは次のとおりです。
dat=data.frame(
x=1:8,
ygm=c( 251.288, 167.739, 112.856, 109.705, 102.064, 94.331, 95.206, 91.415)
)
ここでは通常、2つの戦略のいずれかを使用します。ログを取得して線形モデルを近似するか、を使用しますnls
。必要に応じて、ログに記録されたモデルを理解できると思うので、nls
ここでその方法を示します。
nls1=nls(ygm~i*x^-z,start=list(i=-3,z=-2),data=dat)
必要な数式を再確認してください。このメソッドは、かなり幅広いクラスの数式を受け入れます。開始値をだまして時間をかけてください。特に、尤度面が奇妙なことをする可能性のあるフロンティアについて考えてみてください。奇妙な場所の両側で値を試してみてください。そうすれば、局所的な最適点にいないことが保証されます。
> nls1
Nonlinear regression model
model: ygm ~ i * x^-z
data: dat
i z
245.0356 0.5449
residual sum-of-squares: 811.4
...
> predict(nls1)
[1] 245.03564 167.95574 134.66070 115.12256 101.94200 92.30101 84.86458
[8] 78.90891
> plot(dat)
> lines(predict(nls1))