Ten problem wnioskowania ma wiele nazw, w tym punkty zmiany, punkty przełączania, punkty przerwania, regresja linii przerywanej, regresja łamanego pręta, regresja dwuliniowa, regresja liniowa fragmentaryczna, lokalna regresja liniowa, regresja segmentowa i modele nieciągłości.
Oto przegląd pakietów punktów zmiany z zaletami / wadami i sprawdzonymi przykładami. Jeśli znasz liczbę punktów wymiany a priori, sprawdź mcp
pakiet. Najpierw symulujmy dane:
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))
Pierwszym problemem są trzy segmenty tylko przechwytujące:
model = list(
y ~ 1, # Intercept
~ 1, # etc...
~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")
Możemy wykreślić wynikowe dopasowanie:
plot(fit)
Tutaj punkty zmiany są bardzo dobrze zdefiniowane (wąskie). Podsumujmy dopasowanie, aby zobaczyć ich wywnioskowane lokalizacje ( cp_1
i 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
Możesz wykonywać znacznie bardziej skomplikowane modele mcp
, w tym modelowanie autoregresji rzędu N (przydatne w szeregach czasowych) itp. Oświadczenie: Jestem programistą mcp
.