Я хотел бы подгонять кривые на ряде наборов данных, сгруппированных по обработке. Это очень хорошо работает с nlslist, но теперь я хотел бы ввести верхние оценки моих параметров.R Как использовать границы и алгоритм «port» в nlslist?
Представление границ очень хорошо работает, когда я поместил каждую группу отдельно с помощью nls, но, по-видимому, нет, когда я хочу ускорить работу (у меня есть много других наборов данных) с nlslist.
Может ли кто-нибудь помочь мне здесь с какой-либо идеей, как решить эту проблему?
Пример моего набора данных:
DF1<-data.frame(treatment = rep(c("mineral","residues"),4),
N_level = c(0,0,100,100,200,200,300,300),
yield = c(8,8.5,10,10.5,11,9.8,9.5,9.7))
DF1
treatment N_level yield
1 mineral 0 8.0
2 residues 0 8.5
3 mineral 100 10.0
4 residues 100 10.5
5 mineral 200 11.0
6 residues 200 9.8
7 mineral 300 9.5
8 residues 300 9.7
Попытка соответствовать этот набор данных только с НЛС работает хорошо:
fit_mineral <- nls(formula = yield ~ a + b*0.99^N_level +c*N_level,
data=subset(DF1, subset = treatment == "mineral"),
algorithm = "port", start = list(a = 12, b = -8, c= -0.01),
upper = list(a=1000, b=-0.000001, c=-0.000001))
fit_mineral
Nonlinear regression model
model: yield ~ a + b * 0.99^N_level + c * N_level
data: subset(DF1, subset = treatment == "mineral")
a b c
13.7882 -5.8685 -0.0126
residual sum-of-squares: 0.4679
Но как только я стараюсь сочетать вещи в nlslist, он не работает:
fit_mineral_and_residues <- nlsList(model = yield ~ a + b*0.99^N_level +c*N_level
| treatment, data=DF1,
algorithm = "port", start = list(a = 12, b = -8, c= -0.01),
upper = list(a=1000, b=-0.000001, c=-0.000001))
сообщение об ошибке:
Error in nlsList(model = yield ~ a + b * 0.99^N_level + c * N_level | :
unused arguments (algorithm = "port", upper = list(a = 1000, b = -1e-06, c = -1e-06))
'nlme :: nlsList' не поддерживает разные алгоритмы. – Roland