R - 绘制具有x和y数据的幂律线

joe*_*joe 6 r

我试图绘制一条幂律线来拟合我已经在数据框中的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)
)
Run Code Online (Sandbox Code Playgroud)

Set*_*eth 4

我通常在这里使用两种策略之一,我采用对数并拟合线性模型,或者使用nls. 我认为如果您愿意的话,您可以找出记录的模型,所以我将nls在这里展示该方法。

  nls1=nls(ygm~i*x^-z,start=list(i=-3,z=-2),data=dat)
Run Code Online (Sandbox Code Playgroud)

仔细检查这是否是您想要的公式,此方法接受相当广泛的公式类别。花一些时间研究初始值。特别是尝试考虑可能性表面可能会做出奇怪事情的边界。尝试奇怪地方两侧的值,这样您就可以确保您没有处于局部最优状态。

> 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))
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的解决方案。我没有找到太多关于 nls 的文档,大多数内容都指向无法正常工作的 igraph。我现在得到了我所需要的。谢谢你! (3认同)