В этом посте мы увидим, как включить влияние предикторов в нелинейную регрессию. Другими словами, мы позволим параметрам нелинейной регрессии варьироваться в зависимости от некоторых объясняющих переменных (или предикторов). Обязательно ознакомьтесь с первым постом об этом, если вы новичок в нелинейной регрессии.
Пример, который я буду использовать в этом посте - это логистическая функция роста, она часто используется в экологии для моделирования роста населения. Например, предположим, вы подсчитываете количество бактериальных клеток в чашке Петри, вначале количество клеток будет расти экспоненциально, но через некоторое время из-за ограничений в ресурсах (будь то пространство или еда) популяция бактерий достигнет равновесия. В результате будет получена классическая S-образная нелинейная логистическая функция роста. Логистическая функция роста имеет три параметра: темп роста, называемый «r», размер популяции в состоянии равновесия, называемый «K», и размер популяции в начале, называемый «n0».
Первый пример: категориальный предиктор
Допустим, мы хотим проверить влияние качества пищи на популяционную динамику наших бактерий. Для этого мы используем три разных типа пищи и подсчитываем количество бактерий с течением времени. Вот как это закодировать в R, используя функцию nlsList из пакета nlme:
Код моделировал значения совокупности с использованием трех наборов параметров (r, K и n0). Затем мы задали формулу нелинейной регрессии, используя вертикальную черту «|» символ, чтобы явно просить подобрать различные параметры для каждого типа пищи. Выходные данные модели дают нам оценочные параметры для каждого типа пищи. Теперь мы можем сопоставить прогнозы модели с реальными данными:
Второй пример: непрерывный предиктор
Мы также можем моделировать влияние непрерывных предикторов на параметры нелинейной регрессии. Например, мы можем предположить, что бактериальные колонии растут быстрее при более высокой температуре. В этом случае мы могли бы смоделировать влияние температуры на скорость роста (предполагая, что она линейна) и использовать подобранную скорость роста для моделирования количества бактерий, все это в рамках одной модели, довольно аккуратно.
Для этого я воспользуюсь другим пакетом: bbmle и его функцией mle2:
Первый аргумент для mle2 - это либо функция, возвращающая отрицательное логарифмическое правдоподобие, либо формула вида «ответ ~ некоторое распределение (ожидаемое значение)». В нашем случае мы подбираем распределение Пуассона с ожидаемыми значениями, полученными из логистического уравнения и его трех параметров. Зависимость между скоростью роста и температурой задается с помощью аргумента «parameter». Выходные данные базовой модели дают нам все оценочные параметры, представляющие интерес здесь: «r. (Intercept)», который представляет собой скорость роста, когда температура равна 0, и «r.Temp», которая представляет собой увеличение скорости роста для каждого повышения температуры на 1 градус.
Снова мы можем получить расчетные значения для построения графика:
Третий пример: больше непрерывных предикторов
Крутая вещь с mle2 заключается в том, что вы можете подбирать любые модели, которые вы можете себе представить, если вы можете записывать функции логарифмического правдоподобия. Мы увидим это с расширением предыдущей модели. В биологии принято считать, что виды должны иметь некоторую оптимальную температуру, поэтому мы можем ожидать колоколообразной связи между равновесием популяции и температурой. Итак, мы добавим к предыдущей модели квадратичную зависимость между равновесием населения («K») и температурой.
На этот раз я определил функцию отрицательного логарифмического правдоподобия, чтобы она соответствовала модели. Эта функция принимает в качестве аргумента параметр модели. В этом случае у нас есть 3 параметра для описания квадратичной связи между K и температурой, 1 параметр для постоянного n0 и 2 параметра для описания линейной связи между r и температурой. Важно понимать, что делает последняя строка. В основном, вызов dpois возвращает вероятности получения наблюдаемых значений численности («Abund») на основе ожидаемого среднего значения («lbd»). Функция LL вернет одно отрицательное значение логарифмического правдоподобия (сумму), а задача mle2 - минимизировать это значение. Для этого mle2 будет пробовать много разных комбинаций параметров каждый раз, вызывая функцию LL, и когда она достигнет минимума, она вернет использованный набор параметров. Это оценка максимального правдоподобия (MLE). Как и раньше, выходные данные модели дают нам оценочные параметры, и мы можем использовать их для построения подобранных регрессий:
Заключение
Я показал три способа, с помощью которых можно включить влияние предикторов на параметры некоторой нелинейной регрессии: nlsList, mle2 с формулой и mle2 с настраиваемой функцией отрицательного логарифмического правдоподобия. Первый вариант очень прост, и во многих случаях может быть достаточен, в то время как последний вариант, хотя и более сложный, дает вам (почти) бесконечную свободу в моделях, которые вы можете подогнать.
Комментариев нет:
Отправить комментарий