Как подогнать кусочную регрессию в R и ограничить первое соответствие, чтобы оно проходило через точку пересечения? - PullRequest
1 голос
/ 29 мая 2020

Я хотел бы выполнить регрессию с ломаной палкой, в которой пересечение первого сегмента ограничено, чтобы пройти через начало координат.

В приведенном ниже коде используется «сегментированный» пакет в R для подгонки двух линейных моделей к данным.

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

Итак, как можно выполнить такую ​​регрессию с прерывистой линией, ограничивая прохождение первого сегмента через начало координат ..?

## create data with two 'growth' regimes
n <- 100
x <- 1:n
y1 <- x[1:(n/2)] + rnorm(n=n/2, mean = 0, sd=10) 
y2 <-              rnorm(n=n/2, mean = 0, sd=5) + max(y1)
y <- c(y1,y2)
DF <- data.frame(x,y )

## fit a broken-stick regression model 
library(segmented)
LM <- lm(y~x, DF)
Seggie <- segmented(LM, seg.Z=~x, npsi=1, psi=n/2)

## plot the data & the model
plot(Seggie); abline(h=0, lty=2); abline(v=0, lty=2)
points(y ~ x, DF); abline(h=0, lty=2)

Broken_Stick

1 Ответ

2 голосов
/ 29 мая 2020

Очень хороший пример.

Вам просто нужно настроить формулу так, чтобы она проходила через начало координат. Вы можете сделать это, добавив +0 к зависимым переменным. (См. ?formula)

LM <- lm(y~x+0, DF)
Seggie <- segmented(LM, seg.Z=~x+0, npsi=1, psi=n/2)
plot(Seggie)
abline(h=0, lty=2); abline(v=0, lty=2)
points(y ~ x, DF); abline(h=0, lty=2)

Segmented model going through origin

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