2012-07-06 5 views
3

Я пытаюсь построить линию закона силы, чтобы соответствовать данным x и y, которые у меня уже есть в кадре данных. Я попробовал power.law.fit в библиотеке igraph, но он не работает. Фрейм данных: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. Я думаю, что вы могли бы выяснить зарегистрированную модель, если хотите, поэтому Ill покажет метод nls.

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

Двойная проверка - это формула, которую вы хотите, этот метод принимает довольно широкий класс формул. Проведите некоторое время, обманывая начальные значения. В частности, попробуйте подумать о границах, где поверхность правдоподобия может сделать странные вещи. Попробуйте значения по обе стороны от wierd, чтобы вы могли быть уверены, что вы не находитесь в локальном оптимуме.

> 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

Смежные вопросы