Мне нужно сделать nls, подходящую для данных об урожае/годе (см. -a-strange-fit/64977765#64977765">Вопрос о том, что nls подходят для R - почему это так странно подходит?).
Я начинаю с этих данных и использую коэффициенты из обычной линейной модели в качестве начальных оценок параметров.
x <- c(1979L, 1980L, 1981L, 1982L, 1983L, 1984L, 1985L, 1986L, 1987L,
1988L, 1989L, 1990L, 1991L, 1992L, 1993L, 1994L, 1997L, 1998L,
2000L, 2001L, 2002L, 2003L, 2004L, 2012L, 2014L, 2018L)
y <- c(94.4, 100, 120.6, 97.3, 110, 110, 80, 110, 117, 115, 50, 120,
68.4, 137, 83, 106, 124, 113, 95.8, 115.7, 60, 105, 60, 74, 95.7,
100)
mod_lm <- lm(y~x)
Теперь я получаю эту ошибку с пакетом minpack.lm,
library(minpack.lm)
mod_nls <- nlsLM(y ~ a+x^b, start=list(a = mod_lm$coefficients[1],b=mod_lm$coefficients[2]))
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
или этот, если я попробую пакет nls2.
library(nls2)
mod_nls <- nls2(y ~ a+x^b, start=list(a = mod_lm$coefficients[1],b=mod_lm$coefficients[2]))
Error in numericDeriv(form[[3L]], names(ind), env) :
Missing value or an infinity produced when evaluating the model
Я предполагаю, что проблема заключается в плохой начальной оценке параметров. Как мне получить более точные оценки параметров на начальном этапе? Спасибо.
x <- 1:26
. Также кажется, что он работает нормально, если не используются начальные параметры. - person Eric Krantz   schedule 24.11.2020