You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R的双断点分段线性回归模型公式构建求助

双断点分段线性回归模型公式拆分(基于segmented包结果)

你通过segmented包拟合得到双断点分段线性模型后,以下是根据输出的断点和系数,拆分出三个区间的y = B0 + B1x + e(t)形式公式:

先明确segmented包系数的含义

  • (Intercept):第一个区间的截距
  • x:第一个区间的斜率
  • U1.x:第一个断点后,斜率的变化量(第二个区间斜率 = 第一个区间斜率 + U1.x)
  • U2.x:第二个断点后,斜率的额外变化量(第三个区间斜率 = 第二个区间斜率 + U2.x)

模型默认保证分段函数在断点处连续,因此后两个区间的截距需要通过连续性条件推导。


三个区间的具体公式

已知断点:psi1.x=34.125、psi2.x=63.690,系数:(Intercept)=39.71818、x=0.23644、U1.x=-0.33708、U2.x=0.42017

1. 区间1:x ≤ 34.125

无断点触发,直接使用初始系数:

y = 39.71818 + 0.23644x + e(t)

2. 区间2:34.125 < x ≤ 63.690

  • 斜率 = 初始斜率 + U1.x = 0.23644 + (-0.33708) = -0.10064
  • 截距通过断点x=34.125处的连续性计算:
    区间1在x=34.125的预测值:39.71818 + 0.23644*34.125 ≈ 47.786
    截距 = 47.786 - (-0.10064)*34.125 ≈ 51.221
    最终公式:
y = 51.221 - 0.10064x + e(t)

3. 区间3:x > 63.690

  • 斜率 = 初始斜率 + U1.x + U2.x = 0.23644 - 0.33708 + 0.42017 = 0.31953
  • 截距通过断点x=63.690处的连续性计算:
    区间2在x=63.690的预测值:51.221 - 0.10064*63.690 ≈ 44.811
    截距 = 44.811 - 0.31953*63.690 ≈ 24.461
    最终公式:
y = 24.461 + 0.31953x + e(t)

你的拟合代码

# Load necessary packages
library(segmented)
library(lmtest)

#create data
Date <- c(1:93)
Percentage <- c("38.2", "39.2", "40.4", "40.7", "41.5", "41.9", "42", "41.4", "41.9", "42.5", "42.5", "42.6", "42.4", "42.4", "43.4", "43.4", "44", "44.1", "45.2", "44.6", "45", "45.3", "45.2", "44.8", "46.2", "46.4", "46.4", "46.1", "46.4", "46.4", "46.7", "46.7", "47", "47.5", "46.4", "46.7", "46.6", "47.6", "47.8", "47.5", "47.9", "47.7", "47.7", "47", "46.8", "47.1", "46.8", "45.6", "45.2", "45.7", "46.4", "46.7", "45.5", "45.5", "45.5", "45.9", "45.8", "46.4", "46.7", "46.4", "43.6", "43.4", "44.2", "44.2", "44.9", "45.8", "45.5", "46.3", "45.9", "45.6", "46.6", "46.9", "47.9", "48.2", "49.5", "49", "49.2", "49.8", "50.5", "50.7", "50.7", "51.2", "51.5", "51.7", "52.6", "53.2", "54.1", "53.5", "52.3", "51.8", "52.2", "52.3", "52.7")

Percentage <- as.numeric(Percentage)

disabilityemployment <- data.frame(Date, Percentage)
View(disabilityemployment)

y <- disabilityemployment$Percentage
x <- disabilityemployment$Date

# Fit initial piecewise linear regression model
seg.model <- segmented(lm(y ~ x, data = disabilityemployment), seg.Z = ~x, npsi = 2)
summary(seg.model)

内容的提问来源于stack exchange,提问作者Ana Pereira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:55:03