我正在尝试绘制一条幂律线来拟合数据框中已有的 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)
)
我通常在这里使用两种策略之一,我采用对数并拟合线性模型,或者我使用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))