查找给定点之前和之后的一系列之前的斜率

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

我正在研究结构断裂,因此我在我的系列中发现了一个断裂。我想找到断裂前后线性方程 (y~x) 的斜率,以便拟合值通过断裂连接起来。

我尝试为每个分段独立拟合线性回归或使用交互作用(有或没有效果),但这只是为每个分段提供了不同的“起点”,这是我想避免的。我正在考虑类似于软件jointpoint的东西,但是对于我已经知道中断在哪里的情况。

任何想法或建议将不胜感激!

r time-series linear-regression
1个回答
0
投票

给定切点为

k
,关节点回归可以拟合为

y ~ x + ifelse(x <= k, 0, x-k)

示例

set.seed(123)
x <- rnorm(500, mean = 3)
y <- (x - 3)^2 + rnorm(500)
df <- data.frame(x = x, y = y)

## Jointpoint Regression
jp <- lm(y ~ x + ifelse(x <= 3, 0, x-3), data = df)

# Call:
# lm(formula = y ~ x + ifelse(x <= 3, 0, x - 3), data = data.frame(x = x, y = y))
# 
# Coefficients:
#              (Intercept)                         x  ifelse(x <= 3, 0, x - 3)  
#                    5.590                    -2.079                     4.121

x=3 之前和之后的直线的斜率分别为

-2.079
-2.079+4.121

x_horiz <- seq(0, 6, 0.01)
plot(x, y)
lines(x_horiz, predict(jp, newdata = data.frame(x = x_horiz)),
      col = "red", lwd = 2)

enter image description here

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