Ho costruito sulla risposta di mbq che cercavo tutte le possibilità. Inoltre, faccio questo:
- Verificare la significatività dei due modelli a tratti per assicurarsi che i coefficienti siano significativi
- Controlla la differenza con la somma dei residui quadrati per il modello completo
- Conferma visivamente il mio modello (assicurati che non sia una sciocchezza)
Perché verificare il significato? Questo perché il punto con il SSE minimo non ha senso se uno dei modelli a tratti si adatta molto male ai dati. Questo può accadere per due variabili altamente correlate senza un punto di interruzione chiaro dove cambiano le pendenze.
Controlliamo questo semplice approccio con un semplice test case:
x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)

Il punto di interruzione è ovviamente zero. Utilizzare il seguente script 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
}
Montare modelli lineari a tratti per tutte le possibili combinazioni:
f(x,y)
k sums
0 0
Se controlliamo i coefficienti per i due modelli ottimali, saranno altamente significativi. Anche il loro R2 sarà molto alto.