我想用一个断点进行分段线性回归,其中回归线的后半部分有slope = 0.有一些如何进行分段线性回归的例子,例如这里.我遇到的问题是我不清楚如何将模型的一半的斜率修正为0.
我试过了
lhs <- function(x) ifelse(x < k, k-x, 0)
rhs <- function(x) ifelse(x < k, 0, x-k)
fit <- lm(y ~ lhs(x) + rhs(x))
Run Code Online (Sandbox Code Playgroud)
k断点在哪里,但右边的段不是平面/水平段.
我想将第二段的斜率约束为0.我试过:
fit <- lm(y ~ x * (x < k) + x * (x > k))
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何让下半场得到零斜率.
任何帮助是极大的赞赏.
我自己的解决方案
由于下面的评论,我有一个解决方案.这是我用来优化然后绘制拟合的代码:
x <- c(1, 2, 3, 1, 2, 1, 6, 1, 2, 3, 2, 1, 4, 3, 1)
y <- c(0.041754212, 0.083491254, 0.193129615, 0.104249201, 0.17280516,
0.154342335, 0.303370501, 0.025503008, …Run Code Online (Sandbox Code Playgroud)