2014-11-16 2 views
2

Я пытаюсь запустить НША и получить обратно известные параметры, используя следующий код:Почему NLS (нелинейный МНК) не работает в R

создать data.frame:

xx = 1:100 
yy = 0.5*xx^2 
dd = data.frame(xx,yy) 
str(dd) 
'data.frame': 100 obs. of 2 variables: 
$ xx: int 1 2 3 4 5 6 7 8 9 10 ... 
$ yy: num 0.5 2 4.5 8 12.5 18 24.5 32 40.5 50 ... 

head(dd) 
    xx yy 
1 1 0.5 
2 2 2.0 
3 3 4.5 
4 4 8.0 
5 5 12.5 
6 6 18.0 

Я бегу NLS по данным:

> nls(yy ~ A*(xx^B), data=dd) 
Error in nls(yy ~ A * xx^B, data = dd) : 
    number of iterations exceeded maximum of 50 
In addition: Warning message: 
In nls(yy ~ A * xx^B, data = dd) : 
    No starting values specified for some parameters. 
Initializing ‘A’, ‘B’ to '1.'. 
Consider specifying 'start' or using a selfStart model 

я попробовать добавить 'старт' параметры:

> nls(yy ~ A*(xx^B), data=dd, start=c(A=0.1, B=0.1)) 
Error in numericDeriv(form[[3L]], names(ind), env) : 
    Missing value or an infinity produced when evaluating the model 

Где ошибка и почему я не получаю параметры A = 0,5 и B = 2?

ответ

2

Прочтите справочную страницу ?nls. В частности, Предупреждение об использовании nls для искусственных «нулевых остаточных» данных. Попробуйте

yy = 0.5*xx^2 + rnorm(length(xx)) 

добавить некоторый шум

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