Кусочно-линейная регрессия с ограничением - r - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь выполнить кусочно-линейный анализ регрессии OLS в R с одной точкой останова.У меня есть следующая формула регрессии и ограничения: regression formula

Где D - пустышка.Я хотел бы наложить ограничение, чтобы линии регрессии были непрерывными (с точкой останова).Приведенное ниже ограничение будет работать нормально.

restriction

Мой вопрос: как мне сформулировать это в функции lm () в R?Ранее я пробовал «сегментированный» пакет, но мне нужно интерпретировать перехваты для обеих строк в сводке регрессии.

Я привел некоторые данные ниже.Точка останова здесь равна 0, поэтому d равно 1 для x> = 0.

             x          y d
1    4.3047451 11.2660463 1
2    7.0062423 -3.2897982 1
3    2.7862009 -2.8232636 1
4   -0.8662964  0.4051925 0
5   -0.9553261 -0.9228929 0
6   -1.6626654  3.5044546 0
7    3.4906905  1.4961349 1
8   -0.7072658 -0.2758436 0
9   -7.0054069 -1.3041742 0
10  -2.2510701 -0.1848814 0
11 -13.3617905 -0.2113756 0
12   4.1001251  0.2845748 1
13  -4.6575944 -1.1603290 0
14   5.2243857  3.8324236 1
15   3.5003320 -2.3672985 1
16 -13.2623113 -7.1593177 0
17  -1.7944354 -2.1725478 0
18   0.5885924 -0.2411048 1
19 -19.3744936 -0.1982088 0
20 -17.9876978 -1.5995063 0

Редактировать:

Я добавил графическое представление того, что япытаюсь выполнить.Важно, чтобы 2 подогнанные линии встретились на пороге, и чтобы я мог получить 4 коэффициента.2 альфы и 2 бета.

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Это не ответ, а комментарий, который не может быть отредактирован в разделе комментариев, поскольку требует, чтобы изображение было понятным.

На самом деле, я не могу понять ваши данные: когда они представлены на декартовой диаграмме (ниже) точки кажутся очень разбросанными.Это не похоже на кусочную функцию.Чего мне не хватает?

enter image description here

Кстати, если бы точки были не слишком далеко от кусочной функции, составленной из двух наклонных сегментов, существуеточень простой метод для примерки.См. Страницы 12-13 в этой статье: https://fr.scribd.com/document/380941024/Regression-par-morceaux-Piecewise-Regression-pdf

0 голосов
/ 08 июня 2018

Поскольку точка останова равна x = 0, у нас есть a = a2 и так:

nls( y ~ (x < 0) * (a + b * x) + (x > 0) * (a + b2 * x), dat,
  start = list(a = 1, b = 1, b2 = 1))

или с использованием lm

lm(y ~ I(x * (x < 0)) + I(x * (x > 0)), dat)

В общем случае, если B является точкой останова:

B <- 0
nls( y ~ (x < B) * (a + b * (x - B)) + (x > B) * (a + b2 * (x - B)), dat,
  start = list(a = 1, b = 1, b2 = 1))

B <- 0
lm(y ~ I((x - B) * (x < B)) + I((x - B) * (x > B)), dat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...