定常ポアソンプロセスの近似
まず、NHPoissonが必要とする入力データの種類を理解することが重要です。
何よりも、NHPoissonにはイベントモーメントのインデックスのリストが必要です。時間間隔と時間間隔内のイベントの数を記録する場合、私はそれを日付の単一の列に変換する必要があり、それらが記録されている間隔にわたって日付を「塗りつぶす」可能性があります。
簡単にするために、秒単位の時間を使用し、「秒」は自然単位であると仮定します。λ
単純な定常ポアソンプロセスのデータをシミュレートしてみましょう。このプロセスは、1分間にイベントです。λ=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
したがって、実際に行うことは、ポアソン分布を法則の二項分布の限界と見なすことができるメカニズムに類似して、各イベントが正確に1単位の時間にわたる、二項イベントのきめ細かいシーケンスでポアソンプロセスを近似することですまれなイベントの。
理解すれば、残りはずっと単純です(少なくとも私にとっては)。
λ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
ます。ところで、予測値とは別に、この関数はデフォルトで2つのグラフを作成します。
最後の部分は、モデル検証用のスイスナイフ関数ですglobalval.fun
。
aux<-globalval.fun(obFPP=out,lint=2000,
covariates=cbind(all.seconds),typeI='Disjoint',
typeRes='Raw',typeResLV='Raw',resqqplot=FALSE)
特に、この関数は時間を間隔に分割し、各lint
サンプルは長いため、予測強度と観測強度を比較する粗いグラフを作成することができます。