如何在R中拟合分段回归,并约束第一个拟合通过截距。?

问题描述 投票:1回答:1

我想执行折线回归,其中第一段的截距被限制为通过原点。

以下代码在R中使用“分段”包,以将两个线性模型拟合到数据。

尽管注意第一段的回归未通过原点-据我所知,分段不允许用户指定第一段的截距应通过原点。

因此,在约束第一个线段通过原点的同时,如何执行这种折线回归??

## create data with two 'growth' regimes
n <- 100
x <- 1:n
y1 <- x[1:(n/2)] + rnorm(n=n/2, mean = 0, sd=10) 
y2 <-              rnorm(n=n/2, mean = 0, sd=5) + max(y1)
y <- c(y1,y2)
DF <- data.frame(x,y )

## fit a broken-stick regression model 
library(segmented)
LM <- lm(y~x, DF)
Seggie <- segmented(LM, seg.Z=~x, npsi=1, psi=n/2)

## plot the data & the model
plot(Seggie); abline(h=0, lty=2); abline(v=0, lty=2)
points(y ~ x, DF); abline(h=0, lty=2)

Broken_Stick

r regression lm
1个回答
2
投票

很好的例子。

您只需要调整公式,使其需要经过原点即可。您可以通过在您的因变量中添加+0来实现。 (请参见?formula

LM <- lm(y~x+0, DF)
Seggie <- segmented(LM, seg.Z=~x+0, npsi=1, psi=n/2)
plot(Seggie)
abline(h=0, lty=2); abline(v=0, lty=2)
points(y ~ x, DF); abline(h=0, lty=2)

Segmented model going through origin

© www.soinside.com 2019 - 2024. All rights reserved.