Ich baute auf der Antwort von mbq auf, nach allen Möglichkeiten zu suchen. Außerdem mache ich das:
- Überprüfen Sie die Signifikanz der beiden stückweisen Modelle, um sicherzustellen, dass die Koeffizienten signifikant sind
- Überprüfen Sie die Differenz zur Summe der quadratischen Residuen für das vollständige Modell
- Bestätige mein Modell visuell (stelle sicher, dass es kein Unsinn ist)
Warum auf die Bedeutung prüfen? Dies liegt daran, dass der Punkt mit der minimalen SSE bedeutungslos ist, wenn eines der stückweisen Modelle sehr schlecht zu den Daten passt. Dies kann für zwei stark korrelierte Variablen ohne einen klaren Haltepunkt geschehen, an dem sich die Steigungen ändern.
Lassen Sie uns diesen einfachen Ansatz anhand eines einfachen Testfalls überprüfen:
x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)
Der Haltepunkt ist offensichtlich Null. Verwenden Sie das folgende R-Skript:
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
}
Passen Sie stückweise lineare Modelle für alle möglichen Kombinationen an:
f(x,y)
k sums
0 0
Wenn wir die Koeffizienten für die beiden optimalen Modelle überprüfen, sind sie von hoher Bedeutung. Ihr R2 wird auch sehr hoch sein.