可能听起来很愚蠢,但假设我有:
x = c(1:10)
y = c(2,4,6,8,10,12,12.5,13,13.5,14)
散点图如下所示:
我不想拟合一个线性回归,而是想拟合两个线性回归方程。 1 当 x > a 且 eq.当 x <= a 时为 2。还可以找到斜率变化时的a值。在此示例中,通过视觉分析,a 约为 6,但有没有办法更自动地找到它?
我正在寻找的是这样的:
最佳答案
CRAN 包 segmented非常适合此类问题。使用起来甚至很简单。首先拟合线性模型,然后得到分段拟合。
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)
现在是断点。 segfit$psi[2]
是断点。
segfit$psi
# Initial Est. St.Err
#psi1.x 5.5 6 6.452643e-16
摘要提供了更多信息。
summary(segfit)
并绘制图表。
plot(x, y)
plot(segfit, add=TRUE)
关于r - 如何在同一数据中拟合两个线性回归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58987527/