이 질문은 너무 기본적 일 수 있습니다. 데이터의 일시적인 추세를 위해 "급격한"변경이 발생하는 지점을 찾고 싶습니다. 예를 들어 아래에 표시된 첫 번째 그림에서 통계 방법을 사용하여 변경 지점을 찾고 싶습니다. 그리고 변경 지점이 분명하지 않은 다른 데이터 (예 : 두 번째 그림)에 이러한 방법을 적용하고 싶습니다. 그러한 목적을위한 일반적인 방법이 있습니까?
이 질문은 너무 기본적 일 수 있습니다. 데이터의 일시적인 추세를 위해 "급격한"변경이 발생하는 지점을 찾고 싶습니다. 예를 들어 아래에 표시된 첫 번째 그림에서 통계 방법을 사용하여 변경 지점을 찾고 싶습니다. 그리고 변경 지점이 분명하지 않은 다른 데이터 (예 : 두 번째 그림)에 이러한 방법을 적용하고 싶습니다. 그러한 목적을위한 일반적인 방법이 있습니까?
답변:
시계열 데이터의 관측치가 직전의 관측치와 상관 관계가있는 경우 Chen and Liu (1993) 의 논문 이 관심을 가질 수 있습니다. 자동 회귀 이동 평균 시계열 모델의 프레임 워크에서 레벨 이동 및 임시 변경을 감지하는 방법을 설명합니다.
[1] : Chen, C. 및 Liu, LM. (1993),
"시계열에서 모형 모수와 특이 치 효과의 결합 추정"
, 미국 통계 협회 저널 , 88 : 421, 284-297
통계에서이 문제는 (일 변량) 임시 이벤트 감지라고합니다. 가장 간단한 아이디어는 이동 평균 및 표준 편차를 사용하는 것입니다. 3 표준 편차 (엄지 규칙)가 "초과"인 판독 값은 "이벤트"로 간주됩니다. 물론 HMM 또는 회귀를 사용하는 고급 모델이 있습니다. 다음은 해당 분야의 개요입니다 .
일련의 시퀀스 또는 시퀀스를 이상적인 상수 값을 가진 철자로 나누는 데 관련된 문제가 있습니다. 숫자 데이터를 자연스럽게 형성되는 "브래킷"으로 그룹화하는 방법을 참조하십시오 . (예 : 소득)
질문이 어떤 방향이나 모든 방향으로 느리게 표류하는 주문을 제외하지는 않지만 급격한 변경이없는 것과 같은 문제는 아닙니다.
더 직접적인 대답은 우리가 큰 점프를 찾고 있다고 말하는 것이므로 실제 문제는 점프를 정의하는 것입니다. 첫 번째 아이디어는 이웃 값 사이의 첫 번째 차이점을 보는 것입니다. 점프가 노이즈의 차이와 구별 될 수없는 것처럼, 급격히 돌파 할 수없는 것처럼 노이즈를 먼저 제거하여 노이즈를 세분화해야한다는 것은 분명하지 않습니다. 반면에, 질문자는 급격한 변화뿐만 아니라 단계적 변화를 포함하기 위해 급격한 변화를 원하기 때문에 고정 길이 창 내의 분산 또는 범위와 같은 일부 기준이 요구되는 것 같습니다.
찾고있는 통계 영역은 변경점 분석입니다. 여기 에 해당 지역에 대한 개요를 제공하고 소프트웨어 페이지 가있는 웹 사이트가 있습니다 .
당신이 R
사용자라면 changepoint
평균의 변화에 대한 strucchange
패키지와 회귀의 변화에 대한 패키지를 권장합니다 . Bayesian이되고 싶다면 bcp
패키지도 좋습니다.
일반적으로 찾고자하는 변경의 강도를 나타내는 임계 값을 선택해야합니다. 물론 특정 상황에서 사람들이 옹호하는 임계 값 선택이 있으며 점근 적 신뢰 수준이나 부트 스트랩을 사용하여 자신감을 얻을 수도 있습니다.
이 추론 문제에는 변경점, 전환점, 중단 점, 끊어진 선 회귀, 끊어진 스틱 회귀, 쌍 선형 회귀, 부분 선형 회귀, 국소 선형 회귀, 세그먼트 회귀 및 불연속 모델을 포함한 많은 이름이 있습니다.
다음은 장단점과 실제 예제 가 포함 된 변경점 패키지에 대한 개요입니다 . 사전에 변경점 수를 알고 있으면 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
N 차 자동 회귀 모델링 (시계열에 유용) 등을 포함하여 훨씬 더 복잡한 모델을 수행 할 수 있습니다 . 면책 조항 :의 개발자입니다 mcp
.