如何在同一数据中拟合两个线性回归?

Jon*_*han 2 statistics r

可能听起来很愚蠢,但假设我有:

x = c(1:10)
y = c(2,4,6,8,10,12,12.5,13,13.5,14)
Run Code Online (Sandbox Code Playgroud)

散点图如下所示:

在此输入图像描述

我不想拟合一个线性回归,而是想拟合两个线性回归等式。1 当 x > a且 eq. 2 当 x <= a时。并找出斜率变化时的a值。在此示例中,通过可视化分析, a约为 6,但有没有办法更自动地找到它?

我正在寻找的是这样的:

在此输入图像描述

Rui*_*das 5

CRAN 包分段非常适合此类问题。使用起来甚至很简单。首先拟合线性模型,然后得到分段拟合。

library(segmented)

x <- 1:10
y <- c(2,4,6,8,10,12,12.5,13,13.5,14)

fit <- lm(y ~ x)
segfit <- segmented(fit)
Run Code Online (Sandbox Code Playgroud)

现在是断点。segfit$psi[2]是断点。

segfit$psi
#       Initial Est.       St.Err
#psi1.x     5.5    6 6.452643e-16
Run Code Online (Sandbox Code Playgroud)

摘要提供了更多信息。

summary(segfit)
Run Code Online (Sandbox Code Playgroud)

并绘制图表。

plot(x, y)
plot(segfit, add=TRUE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述