카운트 <20 인 카운트 데이터의 시계열


23

나는 최근 결핵 클리닉에서 일하기 시작했습니다. 우리는 현재 치료중인 결핵 사례 수, 시행되는 검사 횟수 등을 논의하기 위해 정기적으로 회의를합니다.이 수치를 모델링하기 시작하여 무언가가 비정상적인지 아닌지 추측하지 않습니다. 불행히도, 시계열에 대한 교육은 거의 없었으며 대부분의 노출은 매우 지속적인 데이터 (주가) 또는 매우 많은 수의 인플루엔자 모델에 노출되었습니다. 그러나 우리는 다음과 같이 배포되는 매월 0-18 건 (평균 6.68, 중간 7, var 12.3)을 처리합니다.

[시간의 안개로 상실된 이미지]

[그루가 먹는 이미지]

나는 이와 같은 모델을 다루는 몇 가지 기사를 찾았지만 접근 방식과 그러한 접근 방식을 구현하는 데 사용할 수있는 R 패키지 모두에 대한 제안을 듣는 것에 크게 감사드립니다.

편집하다: mbq의 답변 덕분에 제가 여기서 무엇을 요구하는지 더 신중하게 생각해야했습니다. 나는 매달 계산에 너무 매달리고 질문의 실제 초점을 잃었습니다. 내가 알고 싶은 것은 2008 년 이후의 (공정하게 보이는) 하락이 전체 사례 수의 하락 추세를 반영 하는가? 2001 년부터 2007 년까지 매월 건수가 안정적인 프로세스를 반영하는 것처럼 보입니다. 계절적이지만 전반적으로 안정적 일 수 있습니다. 2008 년부터 현재까지는 프로세스가 변경되는 것처럼 보입니다. 임의성과 계절성으로 인해 월별 수가 증가하고 감소하더라도 전체 사례 수가 감소하고 있습니다. 프로세스에 실제 변화가 있는지 어떻게 테스트 할 수 있습니까? 하락을 확인할 수 있다면


2
링크가 죽었습니다. 이미지를 유지할 수 있거나 이미지를 재생할 수있는 경우 이미지를 저장하는 새로운 시스템을 사용하십시오.
Glen_b-복귀 모니카

불행히도,이 음모는 몇 일 전에 일한 것입니다. 사과!
매트 파커

1
이 게시물 (# 173)이 사이트가 베타 버전 일 때 거슬러 올라간다는 점을 고려하면 놀라운 일이 아닙니다. 어쨌든 고마워
Glen_b-복지 주 모니카

답변:


15

역사적 추세를 평가하기 위해 추세와 계절 성분이 포함 된 게임을 사용합니다. 예를 들어

require(mgcv)
require(forecast)
x <- ts(rpois(100,1+sin(seq(0,3*pi,l=100))),f=12)
tt <- 1:100
season <- seasonaldummy(x)
fit <- gam(x ~ s(tt,k=5) + season, family="poisson")
plot(fit)

그런 다음 summary(fit)추세의 변화에 ​​대한 유의성 검정을 제공하고 플롯은 신뢰 구간을 제공합니다. 여기에서의 가정은 관측치가 독립적이며 조건부 분포가 포아송이라는 것입니다. 평균은 시간이 지남에 따라 매끄럽게 변경 될 수 있기 때문에 특히 강력한 가정은 아닙니다.

트렌드를 미래에 투영해야하므로 예측하기가 더 어렵습니다. 데이터 끝에서 추세의 선형 외삽을 기꺼이 받아들이려면 (확실히 피하지만 몇 달 동안은 괜찮을 것입니다)

fcast <- predict(fit,se.fit=TRUE,
               newdata=list(tt=101:112,season=seasonaldummyf(x,h=12)))

동일한 그래프에서 예측을 보려면

plot(x,xlim=c(0,10.5))
lines(ts(exp(fcast$fit),f=12,s=112/12),col=2)
lines(ts(exp(fcast$fit-2*fcast$se),f=12,s=112/12),col=2,lty=2)
lines(ts(exp(fcast$fit+2*fcast$se),f=12,s=112/12),col=2,lty=2)

적합치의 (편차) 잔차에서 특이 치를 찾아 특이한 달을 찾을 수 있습니다.


8

strucchange를 살펴볼 수 있습니다 .

(선형) 회귀 모델의 구조적 변화 테스트, 모니터링 및 데이트 strucchange는 일반화 된 변동 테스트 프레임 워크와 F 테스트 (Chow 테스트) 프레임 워크의 테스트 / 방법을 특징으로합니다. 여기에는 변동 프로세스 (예 : CUSUM, MOSUM, 재귀 / 이동 추정) 및 F 통계를 각각 맞추고 플로팅하고 테스트하는 방법이 포함됩니다. 변동 프로세스를 사용하여 들어오는 데이터를 온라인으로 모니터링 할 수 있습니다. 마지막으로, 구조적 변화가있는 회귀 모형의 중단 점을 신뢰 구간과 함께 추정 할 수 있습니다. 데이터 시각화 방법에 항상 중점을두고 있습니다. "

추신. 멋진 그래픽;)


나중에 더 자세히 읽어야하지만,이 패키지는 내가 직면하고있는 문제의 종류를 분명히 다루고 있습니다. 감사! 또한 줄거리에 대한 친절한 말에 감사합니다; p
Matt Parker

6

정말 고급 모델이 필요합니까? 내가 결핵에 대해 알고있는 것에 기초하여, 전염병이없는 경우, 감염은 확률 론적 행동이므로, 월 N의 카운트 형태는 N-1 월의 카운트와 상관되지 않아야한다. (자기 상관으로이 가정을 확인할 수 있습니다). 그렇다면 월간 수 분포 만 분석하면 일부 수가 정상보다 유의하게 높은지 여부를 결정할 수 있습니다.
반면에 계절, 여행 교통량 또는 상관 관계가 있다고 생각할 수있는 것과 같은 다른 변수와의 상관 관계를 찾을 수 있습니다. 이와 같은 것을 발견하면 데이터 정규화에 사용될 수 있습니다.


1
N-1의 수와 N-1의 상관 관계에 대한 요점은 잘 알려져 있습니다. TB와 같이 느리게 성장하는 질병의 경우,주의 깊게 살펴 봐야 할 것이지만, 소스 사례를보고하는 시간과 2 차보고를하는 시간 사이의 지연이 얼마나되는지 확인할 수 있습니다. 사례.
매트 파커

1
그러나 내 질문의 중심에있는 월간 수의 분포를 분석하는 것이 요점입니다. 미국과 지역에서 전국적으로 결핵이 확실히 감소했습니다. 예를 들어, 2009 년을 전년도와 비교할 때 확실히 적은 사례가 있습니다. 2010 년은 여전히 ​​더 적은 수를 기록하고 있습니다. 내가 확인하려고하는 것은 (질문에서 설명을 잘 못 했음)이 감소가 지속적인 하락 추세의 일부인지 아니면 단지 하향 흔들림인지 여부입니다. 감사합니다. 문제에 대해 훨씬 더 신중하게 생각하게되었습니다.
매트 파커

5

종종 이와 같은 질병 데이터는 시계열 분석을 반드시 적용 할 필요는 없기 때문에 일반 선형 모델로 수행됩니다. 월은 서로 상관 관계가있는 것은 아닙니다.

이 데이터를 받았다면 다음과 같이하십시오 (실제로 비슷한 데이터로 수행 한 것입니다).

데이터를 올바르게 볼 때 "2000 년 1 월 이후의 월"로보다 정확하게 설명되는 "시간"변수를 작성하십시오. 그런 다음 Poisson 분포 (또는 음 이항)와 대략 다음과 같은 형식의 로그 링크를 사용하여 R에서 일반 선형 모델을 실행합니다.

log(Counts) = b0 + b1*t + b2*(t^2) + b3*cos(2pi*w*t) + b4*sin(2pi*w*t)

여기서 t는 위에서 설명한 시간이고 w는 독감과 같은 연간 질병의 경우 1/365입니다. 일반적으로 1 / n이며, 여기서 n은 질병주기의 길이입니다. TB가 무엇인지 잘 모릅니다.

시간에 따른 의미있는 변동이있는 경우 정상적인 계절 변동 이외의 두 가지 시간 추세가 표시됩니다.


4

Tukey Control 차트 를 데이터에 적용하는 것을 고려할 수 있습니다 .


허-이것은 실제로 내가 만든 포스트 중 하나가 아닌 플롯 중 하나였습니다. 내가 가진 문제는 범위를 계산하는 방법을 결정하는 것입니다. 처음 시도는 Poisson 범위를 사용하고 람다는 내 데이터의 평균으로 설정되었지만 분산이 너무 높아 적절한 Poisson이 될 수 없습니다 (실제로 문제가 될만큼 높습니까? 모르겠다).
매트 파커

또 다른 문제는 분포의 중심이 시간이 지남에 따라 변할 수 있다는 점입니다. 예를 들어 콜로라도가 결핵 환자의 피난처였던 1900 년대 초의 데이터를 사용하여 경계를 설정하는 것은 의미가 없습니다. 그렇다면 편차를 식별하면서 프로세스의 장기적인 변화에 따라 라인을 최신 상태로 유지하는 적절한 방법은 무엇입니까?
매트 파커

4

동적 일반 선형 모델 (DGLM)을 사용하여 데이터를 모델링 할 수 있습니다. R에서는 sspir 및 KFAS 패키지를 사용하여 이러한 종류의 모델에 맞출 수 있습니다. 어떤 의미에서, 이것은 포아송 관측치의 로그 평균이 시간의 부드러운 함수라고 가정하는 대신, 확률 적 역학을 따른다고 가정한다는 점을 제외하고 Rob이 제안한 게임 접근법과 유사합니다.


쿨-KFAS 패키지에 대해 몰랐습니다. DLM 및 상태 공간 틱 접근 방식에 대한 DSE, 여기서 R 사용자를위한 일반적인 개요도있다 : cran.r-project.org/web/views/TimeSeries.html
conjugateprior

2
dlm패키지를 강력히 추천합니다 . DLM은 다른 솔루션만큼 사용하기 쉽지 않지만 dlm가능한 한 쉽게 만들고 프로세스를 안내하는 멋진 비네팅이 있습니다.
Wayne

2

나는 주된 질문 만 남길 것입니다. 왜냐하면 내가 잘못 생각할 것이기 때문입니다 (의료 서비스 제공자의 데이터도 분석하고 정직 하기는하지만이 데이터가 있다면 표준 기술을 사용하여 분석 할 것입니다. 최선을 다하겠습니다, 그들은 나에게 꽤 괜찮아 보입니다).

R 패키지에 관해서는 TSA 라이브러리를 발견했으며 그와 함께 제공되는 책은 실제로 매우 유용합니다. armasubsets명령은, 특히, 내가 생각하는 훌륭한 시간 절약이다.


2

Deming이 제안하고 전통적인 분석 통계 (이 경우에는 관리도)를 제안 할 때 전통적인 열거 통계에서 벗어나십시오. 자세한 내용은 Donald Wheeler PhD의 책, 특히 "SPC의 고급 주제"를 참조하십시오.


누군가 방금 stats.stackexchange.com/questions/15809/ 에서 R의 SPC (일명 QC) 차트에 대한 질문을 했는데 패키지 힌트를 제공합니다. 나는 SPC / QC 자신을 확신하지 못한다 : 그것이 컴퓨터 이전 시대와 작업 현장의 근로자들에게 더 유용한 지 궁금하지만, 가치가있다.
Wayne

사실,이 답변은 @ babelproofreader 's와 중복됩니까?
Wayne

2

귀하의 직접적인 질문에 대한 답변으로 "프로세스에 실제 변경이 있는지 테스트하는 방법은 무엇입니까?"그리고 감소를 식별 할 수있는 경우 해당 추세 및 계절에 관계없이 볼 수있는 사례 수를 추정 할 수있는 방법 다가오는 달? " 계절별 ARIMA 구조를 포함하여 기간별 종속성을 쉽게 설명하는 전송 함수 모델 (ARMAX)을 개발하십시오. 중재 감지와 같은 경험적 / 분석적 방법에 의해 제안 될 수있는 식별 가능한 레벨 이동, 계절 펄스, 현지 시간 추세 및 펄스를 통합합니다. 이 견고한 모델에 "거부"와 일치하는 팩터 / 시리즈가 포함되어 있으면기도에 응답 한 것입니다. 대안 적으로 간단히 가설 구조를 추가하여 예를 들어 지점 T1에서 시간 추세 변화를 테스트하여 두 개의 더미를 구성합니다. X1 = 1,1,2,3 ,,,,, T 및 X2 = 0,0,0,0,0,0,0,1,2,3,4,5, .... 제로가 기간 T1-1에서 끝나는 곳. 기간 T1에서 유의 한 경향 변화의 가설 검정은 X2에 대한 "t 값"을 사용하여 평가 될 것이다.

편집 9/22/11

종종 이와 같은 질병 데이터는 날씨 / 온도가 불특정 원인이기 때문에 월별 효과가 있습니다. 실제 꼬리 시리즈 ARIMA 모델을 생략하면 메모리 또는 계절 인형을 대리로 사용합니다. 또한 이와 같은 시리즈는 시간에 따른 구조적 변화를 반영하는 레벨 시프트 및 / 또는 로컬 시간 추세를 가질 수 있습니다. 타임 스퀘어 및 타임 큐빅 등과 같은 다양한 아티팩트를 부과하는 대신 데이터에서 자기 회귀 구조를 이용하는 것이 상당히 유용하고 추정이 적고 임시적인 것으로 밝혀졌습니다. 또한 "비정상적인 값"을 식별하기 위해 추가 원인 변수를 제안하는 데 유용 할 수 있고 다른 모델 매개 변수를 최소한으로 추정 할 수 있으므로주의해야합니다. 마지막으로 가변성 / 매개 변수는 시간이 지남에 따라 달라질 수 있으므로 이러한 모델 개선이 순서대로 이루어질 수 있습니다.


T1 post hoc 을 식별하기 위해 ( , 데이터를 검토 한 후 알 수 있도록) p- 값을 어떻게 조정 합니까?
whuber

모든 개선 사항, 즉 확대로 이어지는 진단 검사는 데이터가 서랍에있는 동안 제안 된 구조와 동일하게 취급됩니다. 진단 검사를 기반으로 예측 변수에 지연을 추가하면 다른 귀무 가설이 목록에 추가됩니다. 이것은 중요하지 않은 coefficent를 삭제하는 것과 다르지 않습니다.
IrishStat

@ 아일랜드 나는 그것을 따르지 않습니다. T1은 지연이 아닌 것 같습니다. 변경점을 지정합니다. 변경점의 위치를 ​​선택하기 위해 먼저 데이터를 검사하도록 허용 된 경우 "유의 한"변경 사항을 찾기가 쉽지 않습니까?
whuber

@ whuber 네 맞습니다. 그러나 "잠재적 통합"에 대한 대체 (생략 된) 변수를 조사하는 단계적 회귀 처리 과정을 생각해보십시오. 이는 결과 오류 프로세스 가우시안을 렌더링하기 위해 모델에 어떤 "생략 생략"을 추가할지 결정한다는 점에서 다르지 않습니다.
IrishStat

@Irish 아일랜드는 비유입니다. 이해한다면, 실제로는 모든 기간에 대해 하나의 잠재적 변수를 고려하고 (해당 기간에 가능한 변경을 지정) 모델에 포함해야 할 것을 결정하기위한 체계적인 프로세스를 호출합니다. 이는 Bonferroni와 같은 일부 표준 p 수준 조정 절차가 합리적으로 적용될 수 있음을 나타냅니다. 유효합니까?
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.