基于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
相关产品推荐
相关产品推荐

