Tôi xây dựng trên câu trả lời của mbq rằng tìm kiếm tất cả các khả năng. Hơn nữa, tôi làm điều này:
- Kiểm tra tầm quan trọng của hai mô hình piecewise để đảm bảo các hệ số có ý nghĩa
- Kiểm tra sự khác biệt với tổng số dư bình phương cho mô hình đầy đủ
- Xác nhận mô hình của tôi một cách trực quan (đảm bảo nó không phải là thứ gì đó vô nghĩa)
Tại sao phải kiểm tra ý nghĩa? Đó là bởi vì điểm với SSE tối thiểu là vô nghĩa nếu một trong hai mô hình piecewise phù hợp với dữ liệu rất kém. Điều này có thể xảy ra đối với hai biến tương quan cao mà không có điểm dừng rõ ràng nơi độ dốc thay đổi.
Hãy kiểm tra phương pháp đơn giản này với một trường hợp thử nghiệm dễ dàng:
x <- c(-50:50)
y <- abs(x)
plot(x,y,pch=19)
Điểm dừng rõ ràng là bằng không. Sử dụng tập lệnh R sau:
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
}
Phù hợp với mô hình tuyến tính piecewise cho tất cả các kết hợp có thể:
f(x,y)
k sums
0 0
Nếu chúng ta kiểm tra các hệ số cho hai mô hình tối ưu, chúng sẽ có ý nghĩa cao. R2 của họ cũng sẽ rất cao.