He construido en mbq la respuesta de que la búsqueda de todas las posibilidades. Además, yo hago esto:
- Comprobar la importancia de los dos tramos de modelos para asegurarse de que los coeficientes son significativos
- Comprobar la diferencia a la suma de los cuadrados de los residuos para el modelo completo
- Confirmar mi modelo visualmente (asegúrese de que no es algo sin sentido).
Por qué comprobar el significado? Eso es porque el punto de que con el mínimo de la ESS tiene sentido si cualquiera de trozos modelo se ajusta a los datos muy mal. Esto puede suceder por dos muy correlacionadas con las variables sin un claro punto de ruptura donde laderas de cambio.
Vamos a ver este enfoque simple con un fácil de caso de prueba:
x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)
El punto de corte es, obviamente, cero. Utilice la siguiente secuencia de comandos de 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
}
Ajuste de un modelo lineal por tramos de modelos para todas las combinaciones posibles:
f(x,y)
k sums
0 0
Si revisamos los coeficientes de las dos óptimo de los modelos, que va a ser muy importante. Su R2 será también muy alta.