はじめに
こちらの本を読んでいます。
毎度のこと内容を簡単にまとめます。
点過程について
点過程とは、空間上・時系列上のランダムに分布する点(イベント)の集合に関する確率過程である。
購買間隔やイベントの発生タイミングについて検討することになる。
例
各要素の定義
ある観測期間]にn回のイベントが起きた時、各イベントの発生時刻をとし、その集合をと表現する。
各イベントの発生時刻には順序がある。
ある区間]に発生するイベント数で表す。
地震の発生の時系列のように、イベントの発生に何らかの情報(規模, 発生場所, etc.)が付随する場合がある。
このような時系列は、マーク付き点過程(marked point process)と呼ばれている。(今回は扱わない)
確率密度関数
強度関数
瞬間のイベントの発生のしやすさと強度と呼び、強度が時間に応じて変化する場合に各時刻の強度の変化を強度関数で定義する。
また、過去のイベントの発生に強度が依存する場合は、条件付き強度関数と呼ぶ。
イベントの配列の発生は試行ごとに異なるため、あるイベント配列の起こりやすさを確率密度関数で表現する。
イベント数の分布
点過程では、ある観測期間に得られるイベント数も確率に得られる変数である。
そのため、複数の観測データが与えられている場合は、イベント数の分布はデータから調べることができる。
イベント間隔の分布
あるイベントの後の次にイベントが発生する時間をイベント間間隔と呼ぶ。
イベント間隔は観測データから調べることができるため、点過程のデータを特徴付けるのに重要である。
また、イベントの発生に関係なく任意の時刻から次のイベントが発生するまでの時間を待ち時間と呼ぶ。
ポアソン過程
ポアソン過程とは、観測期間 ]に発生するイベント数がポアソン分布に従う過程のことを指す。
強度関数のポアソン過程では、微小な幅の買う間にイベントが発生する場合と発生しない場合の確率は次のようになる。
ある時刻でのイベントの発生確率は他のイベントには依存しない。
また、微小なにおいて、次のような近似が成り立つ。
そしてポアソン過程には、定常ポアソン過程と非定常ポアソン過程が存在する。
定常ポアソン過程
定常ポアソン過程では強度が時間によって変化せずとなり、発生確率の関数は次のようになる。
確率密度関数は、次のようになる。
期間 ]イベント数の分布は、平均が、分散がポアソン分布に従うことになる。
そして、イベント間間隔の確率密度関数は、期待値が、分散がの指数分布にしたがう。
Rでポアソン過程
Rでポアソン過程を扱うNHPoisson パッケージがあります。
一日1440分でとした時のポアソン過程のデータを生成した。
# 定常ポアソン過程の生成 lambda = 1/60 #強度 time_span = 60*24 #1日:1440分 ps_sim <- simNHP.fun(rep(lambda,time_span))
得られたイベントタイミングを確認してみました。
ppplot(ps_sim, time_span) # 自作関数
午前中の方が少しイベント発生件数が多いように見えます。
定常ポアソン過程の強度を推定するには、fitPP.fun
関数を利用します。
# 強度の推定 # b0=0 が推定する強度の初期値 pp_res <- fitPP.fun(posE = ps_sim$posNH, n = time_span, start = list(b0=0))
推定された強度の確認をします。λ=exp(β)であるため自然対数をとる必要があります。
> pp_res@coef %>% exp b0 0.01388889
概ね設定通りの強度を推定できていると考えられます。
非定常ポアソン過程
非定常ポアソン過程では、強度関数に従い時間によって変化する。
次のようなものが、非定常ポアソン過程を考えたものです。
確率密度関数は次のようになる。
観測期間に発生するイベント数は、以下の時間変換定理を適用した場合、定常ポアソン過程の場合と等しくなる。 そんため、イベント数は期待値のポアソン分布に従うことになる。
イベント間間隔の確率密度関数は、時間変換定理を用いると、次のように互いに独立に期待値1の指数分布に従うことになる。
また、時間変換後のイベント間間隔はものとイベント間間隔を用いると次にように表される。
そして、時間変換定理の逆変換を考えれば、イベント間間隔の確率密度関数[p(\tau_i|t_i)]は次のように得られる。
時間変換定理
非定常ポアソン過程は、イベントの発生間隔に合わせて時間変換を行うと、定常ポアソン過程になる。
次の時間変換定理が適用できる時に定常ポアソン過程に変換することができる。
観測期間 ] においてイベントが強度関数に従っているとする時、
次の変換式によって得られるイベントは、観測期間 ] において強度1 の定常ポアソン過程に従う。
このことから、ある過程を時間変換することにより定常ポアソン過程に従う場合、その過程は非定常ポアソン過程であると言える。
Rで非定常ポアソン過程
時変の強度関数を作ります。
all.seconds <- seq(1, time_span, length.out=time_span) lambdas <- 0.05 * exp(-0.005 * all.seconds) + 0.005
可視化すると次のようになります。 深夜から明け方にかけてイベント発生強度が強いようなイメージです。
シミュレーションすると次のような結果が得られました。
ps_sim <- simNHP.fun(lambdas) ppplot(ps_sim)
強度関数を推定します。
# 推定 npp_res <- fitPP.fun(tind = TRUE, covariates = cbind(all.seconds), posE = ps_sim$posNH, start = list(b0=0, b1=0), modSim=TRUE)
推定された強度関数は次のようになりました。
このグラフはfitPP.fun
関数を実行すると自動的に出力されます。
概ね設定通りの強度関数を推定できました。
条件付き強度関数
条件付き強度関数とは、過去のイベント履歴が与えられた時のイベント発生の強度の時系列変化を表現する関数である。
条件付き強度関数を用いた場合の点過程での、微小区間でのイベント発生確率は次のように定義できる。
また、確率密度間数は次のように定義できる。
NHPoisson packageでは、ポアソン過程の強度の変化に説明変数を回帰させるモデルに拡張することも可能である。
更新過程
定常ポアソン過程ではイベント間間隔がi.i.dの指数分布に従う性質を持っていたが、更新過程ではこれを一般化したものです。
具体的には、イベント間間隔が独立に確率密度関数と累積分布関数を持つ同一の連続確率分布に従う点過程のことを指している。
この時用いる確率分布としては、次のような分布が代表的である。
定常更新過程
イベント発生時刻の集合に対する同時分布の確率密度関数は次のようになる。
つまり、 イベント発生時刻の同時分布の確率密度関数は、イベント間間隔に対する確率密度間数の積で表現される。
次にある観測期間]における確率密度間数は、次のように最後のイベント発生時刻から観測終了時刻までイベントが起こらない確率を掛け合わせたもになる。
また、i番目のイベント発生時刻における確率密度関数は次のように表現できる。
これは各イベントの発生時刻に関する確率密度関数を再帰的に得ることができることを意味する。
また、周辺分布の確率密度関数から、k番目のイベント発生時刻の累積分布関数は次のように得られる。
観測期間内のイベント数がk個以下になることと、回目のイベント発生時刻が観測終了時刻より後に来ることは同値な事象であることから、次の関係式が得られる。
これを用いると特定のイベント回数となる時の確率関数は次のようになる。
期間内に発生するイベントの期待値は、次にようになります。
そして、イベント間間隔の期待値と次の関係が成り立つ。
非定常更新過程
非定常更新過程では、ポアソン過程における非定常過程と同様に定常更新過程から時間変換によって構築できる。
そのため、ある過程が以下の時間変換を行うことで、平均強度関数に従っている時にイベントは平均強度関数の非定常更新過程であると言える。
ここで、変換後のイベントは である。
期間]の平均強度関数非定常更新過程の確率密度関数は、次のように定義できる。
イベント数の分布は、時間変換後の定常更新過程のイベント数の分布と同じになるため、次のようになる。
イベント間間隔の発生確率は、前に発生したイベント発生時刻に依存するため、条件付き確率密度関数は次のようになる。
更新過程の特徴を表現する指標
変動係数CV
定常更新過程におけるイベント間間隔の分布のばらつきを表す指標。
CV=1の時、定常ポアソン分布に従っている。
CV<1の時、指数分布よりばらつきが小さく、イベントの発生間間隔は等しくなっていく。
CV>1の時、指数分布よりばらつきが大きい、イベント発生がまばらになる。
Fano因子
イベント数の分布のばらつきぐらいを表現する。
定常ポアソン分布の場合、観測期間の長さによらず1をとる。
イベント間間隔のばらつきが大きくバースト状のイベント列では、1を超えるようになる。
生存時間分析との関係
イベント発生が条件付き強度関数の点過程に従っている時、ある時刻から次のイベントが発生するまでの待ち時間の分布について考える。
条件付き強度関数は最後のイベント発生からの経過時間のみに依存する。
そのため、次のような経過時間のみに依存する関数を定義する。
この関数をハザード関数と呼ぶ。
分母はある時間から経過した時点で次のイベントが発生していない確率=生存関数として定義できる。
この生存関数を用いると、待ち時間の累積分布関数および確率密度関数は次のようになる。
ここで、は任意の基準の時刻を意味する。
次のイベントの発生時刻は強度関数の非定常ポアソン過程に従うことから、生存関数は次のようになる。
待ち時間の分布が次のようになる。