2012-07-06 31 views
3

我想繪製一條冪律線以適應我已經在數據框中已經有的x和y數據。我在igraph庫中嘗試了power.law.fit,但它不起作用。該數據幀是:R - 用x和y數據繪製冪律線

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)) 
+1

感謝您的解決方案。我還沒有找到關於nls的很多文檔,大多數的東西都指向igraph,它不能正常工作。我正在得到我現在需要的東西。謝謝! – joe 2012-07-06 18:34:28