Я пытаюсь подгонять нелинейную модель к серии измерений, собранных на нескольких участках в течение всего сезона. Ниже приведена подвыборка из более крупного набора данных. данные:Установка nls для сгруппированных данных R
dput (nee.example) структура (список (Julian = с (159L, 159L, 159L, 159L, 159L, 159L, 159L , 159L, 159L, 159L, 159L, 159L, 159L , 159L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L), blk = структура (c (1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c ("e", "w"), class = "factor"), type = structure (c (1L, 1L, 1L, 1L, , 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2 L), .Label = c ("b", "g"), class = "factor"), plot = c (1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), trt = структура (c (1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "a", class = "factor"), cloth = c (25L, 50L, 75L, 100L, 0L, 25L, 50L, 75L, 100L, 0L, 25L, 50L , 75L, 100L, 0L, 25L, 50L, 100L, 0L, 25L, 50L, 75L, 100L, 0L, 25L, 50L, 75L, 75L, 100L), plotID = c (1L, 1L, 1L, 1L, 3L, 3L, 3L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 15L, 15L ), fl (0,76, 0,6, 0,67, 0,7, 1,72, 1,63, -7,8, 0,92, -0,04, -0,83, 1,99, 1,55, 0,57, -0,02, -0,16, -2.12), ChT = c (18,6, 19,1, 19,6, 19,1, 16,5, 17,3, 18,3, 19, 18,6, 17,2, 18,4, 19, 19,2, 20,6, 22, 21,9, 22,4, 23,8, 20,7, 21,5, 22,5, 23,3, 23,8, 20,1, 20,8, 21,2, 21,8, 21,8, 21,4), par = c (129,9, 210,2, 305,4, 796,6 , 1,3, 62,7, 149,9, 171,2, 453,3, 1,3, 129,7, 409,3, 610, 1148,6, 1,3, 115,2, 237, 814,6, 1,3, 105,4, 293,4, 472,1, 955,9, 1,3, 100,5, 290, 467, 413.6, 934.2)), .Names = c ("julian", "blk", "type", "plot", "trt", "cloth", "plotID", "flux", "ChT", "par "), class =" data.frame ", row.names = с (NA, -29L))
мне нужно, чтобы соответствовать следующей модели (rec.hyp, ниже) для каждого участка на каждую дату и получить оценки параметров для каждой комбинации Julian-plotID , Через какого-то копается, это звучало как nlsList бы идеальная функция, так как группирования аспекта:
library(nlme)
rec.hyp <- nlsList(flux ~ Re - ((Amax*par)/(k+par)) | julian/plotID,
data=nee.example,
start=c(Re=3, k=300, Amax=5),
na.action=na.omit)
coef(rec.hyp)
Однако я получаю то же сообщение об ошибке:
Error in nls(formula = formula, data = data, start = start, control = control) :
step factor 0.000488281 reduced below 'minFactor' of 0.000976562
Я попытался настройка элементов управления в nls.control для увеличения maxIter и tol, но отображается одно и то же сообщение об ошибке. И я изменил начальные начальные значения безрезультатно.
Следует отметить, что мне нужно подгонять модель, используя наименьшие квадраты, чтобы соответствовать предыдущей работе.
Вопросы:
ли моя структура группировки допускаемые в nlsList. Другими словами, могу ли я установить plotID внутри julian? Может ли это быть причиной моей ошибки.
Я читал, что неправильные оценки параметров запуска вызывают сообщение об ошибке, но я получаю одно и то же сообщение после их изменения.
Я чувствую, что мне не хватает чего-то простого здесь, но мой мозг жарится.
Заранее спасибо.
Благодарим за отзыв, очень полезно. Можно ли заставить «nls» завершить моделирование других групп, даже если в других есть ошибки (например, тот, который вы начертили выше)? Было бы неплохо, если бы модель соответствовала «хорошим» отношениям, а затем возвращалась к «плохим» для контроля качества. В противном случае я буду следовать вашему предложению 'reshape' или' ggplot2', чтобы идентифицировать выбросы, а затем повторно запустить модель 'nlsList'. –
1. Посмотрите на 'coef (rec.hyp)' output - 'nlsList' автоматически завершает анализ и возвращает 'NA' для групп, вызвавших ошибки. 2. Я считаю, что визуальный осмотр будет хорошей идеей, являются ли ваши данные «хорошими» или «плохими» с точки зрения подгонки. 3. Я также предложил бы посмотреть на пакет «блестящий», который можно использовать для создания красивого и блестящего графического интерфейса для вашей программы контроля качества –