Я спирався на відповідь mbq, що шукаю всі можливості. Крім того, я роблю це:
- Перевірте значення двох кускових моделей, щоб переконатися, що коефіцієнти значні
- Перевірте різницю до суми залишків у квадраті для повної моделі
- Підтвердьте мою модель візуально (переконайтеся, що це не щось нісенітниця)
Навіщо перевіряти їх значимість? Це тому, що точка з мінімальним SSE є безглуздою, якщо будь-яка з кускових моделей дуже погано відповідає даних. Це може статися для двох сильно корельованих змінних без чіткої точки розриву, де змінюються нахили.
Давайте перевіримо цей простий підхід за допомогою легкого тестового випадку:
x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)
Точка розриву очевидно дорівнює нулю. Використовуйте наступний сценарій R:
f <- function(x, y)
{
d <- data.frame(x=x, y=y)
d <- d[order(x),]
r <- data.frame(k=rep(0,length(x)-4), sums=rep(0,length(x)-4))
plm <- function(i)
{
d1 <- head(d,i)
d2 <- tail(d,-i)
# Make sure we've divided the region perfectly
stopifnot(nrow(d1)+nrow(d2) == nrow(d))
m1 <- lm(y~x, data=d1)
m2 <- lm(y~x, data=d2)
r <- list(m1, m2)
r
}
lapply(2:(nrow(d)-3), function(i)
{
r$k[i-2] <<- d[i,]$x
# Fit two piecewise linear models
m <- plm(i)
# Add up the sum of squares for residuals
r$sums[i-2] <<- sum((m[[1]]$residuals)^2) + sum((m[[2]]$residuals)^2)
})
b <- r[which.min(r$sums),]
b
}
Підійдіть кусково-лінійні моделі для всіх можливих комбінацій:
f(x,y)
k sums
0 0
Якщо ми перевіримо коефіцієнти для двох оптимальних моделей, вони будуть дуже значущими. Їх R2 також буде дуже високим.