ปัญหาการอนุมานนี้มีชื่อหลายชื่อรวมถึงจุดเปลี่ยน, จุดเปลี่ยน, จุดแตกหัก, การถดถอยเส้นแตก, การถดถอยแบบแท่งหัก, การถดถอยแบบเส้นตรง, การถดถอยเชิงเส้นแบบชิ้นเดียว, การถดถอยเชิงเส้นแบบท้องถิ่น, การถดถอยเชิงเส้นแบบแบ่งส่วน
นี่คือภาพรวมของแพคเกจจุดเปลี่ยนที่มีข้อดี / ข้อเสียและตัวอย่างการทำงาน หากคุณทราบจำนวนการเปลี่ยนแปลงคะแนนเบื้องต้นให้ตรวจสอบmcp
แพ็คเกจ ก่อนอื่นเรามาจำลองข้อมูล:
df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))
สำหรับปัญหาแรกของคุณมันเป็นสามส่วนเท่านั้น:
model = list(
y ~ 1, # Intercept
~ 1, # etc...
~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")
เราสามารถพล็อตผลที่ได้:
plot(fit)
ที่นี่จุดเปลี่ยนแปลงนั้นถูกกำหนดไว้อย่างดี (แคบ) มาสรุปความเหมาะสมเพื่อดูตำแหน่งที่สรุป ( cp_1
และcp_2
):
summary(fit)
Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
1: y ~ 1
2: y ~ 1 ~ 1
3: y ~ 1 ~ 1
Population-level parameters:
name mean lower upper Rhat n.eff
cp_1 3.05 3.0 3.1 1 6445
cp_2 11.05 11.0 11.1 1 6401
int_1 0.14 -1.9 2.1 1 5979
int_2 179.86 178.8 180.9 1 6659
int_3 22.76 19.8 25.5 1 5906
sigma_1 4.68 4.1 5.3 1 5282
คุณสามารถทำแบบจำลองที่มีความซับซ้อนมากขึ้นด้วยmcp
รวมทั้งการสร้างแบบจำลอง autoregression ชับสั่ง (มีประโยชน์สำหรับอนุกรมเวลา) ฯลฯ Disclaimer: mcp
ผมพัฒนาของ