Есть ли способ ограничить диапазон значений, которые коэффициент NLS может принимать в R? Я знаю форму кривой, которая должна существовать для моих данных; однако NLS не может построить такую кривую, поскольку дает коэффициент мощности ‹ 1.
По сути, я пытаюсь создать отношение высоты ствола к надземной биомассе для набора данных ствола молодого дерева (саженцев). Высота деревьев снижается из-за холодной погоды на участке, и, таким образом, они приближаются к пределу высоты ... но продолжают расти в обхвате и, следовательно, биомассе по мере старения.
Проблема в том, что у меня есть данные только для определенного диапазона высот деревьев, и отсутствуют значения для стволов высотой ‹ 1,3 метра. Код, который у меня есть до сих пор:
#Plot the raw data
plot(AC$Height.m, AC$ag.biomass, xlim=c(0,2.5), ylim=c(0,40))
#Generate a NLS fit and plot curve on the raw data to show misfit
bg.nls = nls(ag.biomass ~ B0*Height.m^B1, data=AC, start=list(B0=8,B1=2))
curve(coef(bg.nls)[1]*x^coef(bg.nls)[2], col="red", add=TRUE)
#Provide example of appropriate growth curve given biological understanding
curve(6*x^1.7, col="blue", add=TRUE)
Что производит следующий сюжет. Красная линия показывает несоответствие NLS (в основном из-за того, что B1 имеет значение ‹1), а синяя линия иллюстрирует биологически подходящее соответствие.
Я понимаю, что существует много статистических проблем, связанных с этим способом создания подгонки модели, однако я не касаюсь их здесь. Вместо этого меня просто интересует техническая проблема ограничения значения B1 только значениями, превышающими 1. Есть ли способ сделать это?
lower=c(-5, 0), upper=c(5, 1)
), вы увидите, что они не заканчиваются автоматически на границах. Я выбрал ограничения в своем ответе наугад для иллюстрации, но в реальном анализе вы захотите выбрать их на основе знаний предметной области. 15.07.2019