Я хотел бы поместить экспоненциальные кривые в массивы данных вертикальных температурных профилей. Иногда экспоненциальная форма является положительной и в других случаях отрицательной в зависимости от условий температуры воздуха. В конце я хотел бы подгонять каждую кривую, а затем извлекать градиент и перехватывать для серии отдельных профилей температуры (сделать петлю фитинга и извлечения параметров)Экспоненциальная подгонка кривой и извлечения градиента и перехвата
Я пробовал несколько предложений по stackoverflow и Google и не может пройти мимо этапа «первоначальной догадки» ... Любая помощь будет оценена по достоинству.
Моя последняя и наиболее многообещающим попытка ниже (взято из примера на StackOverflow - (whuber):
Мои данные:
Temps1<-c(284.1875, 285.6550, 286.2342, 286.9142, 287.7900,
290.3492,295.2517, 298.1608)
Temps2<-c(275.6958, 275.0583, 274.7858, 274.4458, 273.9900, 273.1675,
272.3225, 271.5875)
Depths<-c(-100,-70,-56,-42,-28,-14,0,7)
d <- data.frame(x = Temps1, y = Depths)
c.0 <- min(d[,1]) * 0.5
model.0 <- lm(log(Temps1) - c.0 ~ Depths, data=d)
start <- list(a=exp(coef(model.0)[1]), b=coef(model.0)[2], c=c.0)
model <- nls(d[,1]~ a * exp(b * Depths) + c, data = d, start = start)
Я застрял с ошибкой: «Ошибка в nlsModel (формула, mf, start, wts): сингулярная градиентная матрица при начальных оценках параметров Кроме того: Предупреждающие сообщения: 1: In min (x): нет не пропускаемых аргументов до мин; возврат Inf 2: In max (x): нет аргументов без пропусков до max; r eturning -Inf "
это первоначальное предположение, кажется, работает 'список (а = 1, Ь = 1, с = 1)' - <но не очень конструктивный комментарий> Также вам нужно передать имя переменной, а не в матрицу, из o: 'nls (x ~ a * exp (b * y) + c, data = d, start = list (a = 1, b = 1, c = 1)) ' – user20650