Кусочно-нелинейная регрессия с использованием нелинейной функции в R - PullRequest
1 голос
/ 24 февраля 2012

Я хочу выполнить регрессию кусочно, используя нелинейные функции с несколькими точками останова.Я сделал кусочно-линейную регрессию, но когда дело доходит до задания нелинейных функций любого типа, как мы настраиваем в R?

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

karthik

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

Будет ли использование nls() (нелинейных наименьших квадратов) решить вашу проблему?Я использовал формулировку, аналогичную этой, добавив операторы True / False для каждого «куска»:

reg = nls( y ~ (Z < 0.33) * a + (Z < 0.33) * Z * b +
        (Z >= 0.33 & Z < 0.67) * Z ^ a2 +
        (Z >= 0.67) * a3 + (Z >= 0.67) * Z * a4,
        start = list(a = 0, b = 50, a2 = 100, a3 = 150, a4 = 80),
        data = yourdata)

В приведенном выше стилизованном примере точки останова находятся при Z = 0,33 и Z = 0,67.Если вы можете более конкретно указать код трех регрессий по отдельности, я могу сделать свой ответ более конкретным.

0 голосов
/ 24 февраля 2012

Я предлагаю загрузить пакет 'splines' и запустить примеры в help(bs). Вы можете получить кусочно-кубические (но непрерывные в узлах) посадки, используя механизм линейной регрессии. Харрелл использовал эту стратегию для превосходного эффекта в своем пакете 'rms'. Загрузите «rms» и посмотрите на help(rcs). Пример на этой странице использует его реализацию логистической регрессии, но термины rcs() работают и в ols() и cph().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...