Nano Hash - криптовалюты, майнинг, программирование

Как установить границы для коэффициентов nls?

Есть ли способ ограничить диапазон значений, которые коэффициент 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 и upper для ограничения коэффициента вписывается в nls. 06.11.2015
  • Обратите внимание, однако, что аргументы upper и lower можно использовать только с алгоритмом порта, который, согласно документации, выглядит незавершенным и должен использоваться с осторожностью, особенно там, где указаны границы. 29.07.2017

Ответы:


1

Вы можете установить ограничения на соответствие коэффициентов, используя аргументы upper и lower для nls. Ограничения работают только с алгоритмом port, поэтому его тоже нужно указать. Простой пример:

Без ограничений:

nls(mpg ~ wt^a + disp^b, data=mtcars, start=list(a=3.5, b=0.1), algorithm="port")

Nonlinear regression model
model: mpg ~ wt^a + disp^b
data: mtcars
a      b 
0.4441 0.5025 
residual sum-of-squares: 3612

С ограничениями:

nls(mpg ~ wt^a + disp^b, data=mtcars, start=list(a=3.5, b=0.1), algorithm="port", 
    lower=c(3,0), upper=c(5,0.25))

Nonlinear regression model
model: mpg ~ wt^a + disp^b
data: mtcars
a b 
3 0 
residual sum-of-squares: 78781

Algorithm "port", convergence message: relative convergence (4)
06.11.2015
  • Похоже, что с ограничением NLS оценивает только нижнюю и верхнюю границу, а не лучшее значение внутри. 15.07.2019
  • Я предполагаю, что это происходит, когда ограничения не включают локальный оптимум, и самое близкое соответствие, которое может быть достигнуто к локальному оптимуму, находится на границах ограничений. Если вы измените ограничения (например, lower=c(-5, 0), upper=c(5, 1)), вы увидите, что они не заканчиваются автоматически на границах. Я выбрал ограничения в своем ответе наугад для иллюстрации, но в реальном анализе вы захотите выбрать их на основе знаний предметной области. 15.07.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..