Saya membangun berdasarkan jawaban mbq yang mencari semua kemungkinan. Selanjutnya, saya melakukan ini:
- Periksa signifikansi dari kedua model sambungan untuk memastikan koefisiennya signifikan
- Periksa perbedaan dengan jumlah residu kuadrat untuk model lengkap
- Konfirmasikan model saya secara visual (pastikan itu bukan sesuatu yang tidak masuk akal)
Mengapa memeriksa signifikansi? Itu karena titik dengan SSE minimum tidak ada artinya jika salah satu model sambungan sesuai data yang sangat buruk. Hal ini dapat terjadi untuk dua variabel yang sangat berkorelasi tanpa breakpoint yang jelas di mana perubahan lereng.
Mari kita periksa pendekatan sederhana ini dengan test case yang mudah:
x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)
Breakpoint jelas nol. Gunakan skrip R berikut:
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
}
Sesuaikan model linear satu demi satu untuk semua kemungkinan kombinasi:
f(x,y)
k sums
0 0
Jika kita periksa koefisien untuk dua model optimal, mereka akan sangat signifikan. R2 mereka juga akan sangat tinggi.