고정식 포아송 프로세스 피팅
우선 NHPoisson에 필요한 입력 데이터의 종류를 알아야합니다.
무엇보다도 NHPoisson 은 이벤트 순간 의 인덱스 목록이 필요합니다 . 시간 간격과 시간 간격에서 이벤트 수를 기록하는 경우,이를 시간보다 하나의 날짜 열로 변환해야합니다 (아마도 기록 된 간격에 걸쳐 날짜가 "흐름").
간단하게하기 위해, 우리는 초 단위로 측정 된 시간을 사용하고 "초"는 자연 단위 합니다.λ
분당 이벤트 가있는 간단한 고정식 포아송 프로세스에 대한 데이터를 시뮬레이션 해 보겠습니다 .λ=1
lambda=1/60 #1 event per minute
time.span=60*60*24 #24 hours, with time granularity one second
aux<-simNHP.fun(rep(lambda,time.span))
는 simNHP.fun
시뮬레이션을한다. 우리는 얻을 사용 aux$posNH
하여, 변수를 인덱스 시뮬레이션 이벤트 발사의 순간. `length (aux $ posNH)를 확인하면 대략 60 * 24 = 1440 개의 이벤트가 있음을 알 수 있습니다.
이제 다음을 사용하여 를 리버스 엔지니어링하십시오 .λfitPP.fun
out<-fitPP.fun(posE=aux$posNH,n=time.span,start=list(b0=0)) # b0=0 is our guess at initial value for optimization, which is internally made with `nlminb` function
이 함수는 이벤트 인덱스 만 가져 오기 때문에 가능한 인덱스 수를 측정해야합니다. 그리고 이것은 매우 혼란 부분입니다 진정한 포아송 과정에서이 가질 수 있기 때문에, 가능한 이벤트의 무한 수 (있는 경우에만 ). 그러나 우리 의 관점에서 우리는 작은 시간 단위를 선택해야합니다. 시간 단위당 최대 하나의 이벤트를 가정 할 수 있도록 너무 작게 선택합니다.λ>0fitPP
우리가 실제로하는 일은 우리가 있다는 것입니다 그래서 대략 이항 이벤트의 세부 순서와 포아송 과정, 포아송 분포의 이항 분포의 제한으로 볼 수있는 메커니즘과 유사하게 각 이벤트 스팬 시간을 정확히 하나 개의 단위 법 드문 사건 .
우리가 이해하면 나머지는 훨씬 더 간단합니다 (적어도 나를 위해).
λ 의 근사값을 구하려면λ 저를 장착 매개 변수의 지수를 취할 필요를 beta
, exp(coef(out)[1])
. 그리고 여기 설명서에없는 정보의 또 다른 중요한 부분, 제공 에 : NHPoisson
우리는에 맞는 대수 의 하지, λ 자체가.λλ
고정식 포아송 공정 적합
NHPoisson
다음 모델에 적합합니다.
λ=exp(P⃗ T⋅β⃗ )
즉 , λ 의 로그 에 매개 변수 (공변량이라고 함) 의 선형 조합을 맞 춥니 다 .P⃗ λ
이제 고정식 포아송 프로세스를 준비하겠습니다.
time.span=60*60*24 #24 hours, with time granularity one second
all.seconds<-seq(1,time.span,length.out=time.span)
lambdas=0.05*exp(-0.0001*all.seconds) #we can't model a linear regression with NHPoisson. It must have the form with exp.
aux<-simNHP.fun(lambdas)
이전과 마찬가지로 aux$posNH
사건의 지표를 알려 주겠지 만 이번에는 사건의 강도가 시간에 따라 기하 급수적으로 감소한다는 것을 알 수 있습니다. 이 감소율은 우리가 추정하고자하는 매개 변수입니다.
out<-fitPP.fun(tind=TRUE,covariates=cbind(all.seconds),
posE=aux$posNH,
start=list(b0=0,b1=0),modSim=TRUE)
우리가 all.seconds
아닌 공변량 으로 넣어야한다는 점에 유의하는 것이 중요합니다 lambdas
. 지수화 / 대 수화는 내부적으로에 의해 수행됩니다 fitPP.fun
. BTW는 예측 된 값 외에 기본적으로 두 개의 그래프를 만듭니다.
마지막 조각은 모델 검증을위한 스위스 나이프 함수입니다 globalval.fun
.
aux<-globalval.fun(obFPP=out,lint=2000,
covariates=cbind(all.seconds),typeI='Disjoint',
typeRes='Raw',typeResLV='Raw',resqqplot=FALSE)
무엇보다도이 함수는 시간을 간격으로 나누고 각 lint
샘플은 길기 때문에 예측 된 강도와 관측 된 강도를 비교하는 조잡한 그래프를 만들 수 있습니다.