Pas proses Poisson stasioner
Pertama-tama, penting untuk disadari, seperti apa input data yang dibutuhkan NHPoisson.
Terutama, NHPoisson membutuhkan daftar indeks momen acara. Jika kita mencatat interval waktu dan jumlah peristiwa dalam interval waktu, daripada I kita harus menerjemahkannya ke dalam satu kolom tanggal, mungkin "mengolesi" tanggal selama interval yang direkam.
Untuk kesederhanaan saya akan menganggap, bahwa kita menggunakan waktu yang diukur dalam detik, dan bahwa "kedua" adalah satuan alami .λ
Mari kita mensimulasikan data untuk proses Poisson stasioner sederhana, yang memiliki peristiwa per menit:λ=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))
The simNHP.fun
membuat simulasi. Kami menggunakan untuk mendapatkan aux$posNH
, variabel dengan indeks saat-saat acara menembakkan simulasi. Kita dapat melihat bahwa kita memiliki sekitar 60 * 24 = 1440 acara, dengan memeriksa `length (aux $ posNH).
Sekarang mari kita rekayasa balik dengan :λ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
Karena fungsi hanya mengambil indeks peristiwa, maka perlu juga mengukur berapa banyak indeks yang mungkin dimungkinkan. Dan ini adalah bagian yang sangat membingungkan , karena dalam proses Poisson yang sebenarnya dimungkinkan untuk memiliki jumlah kejadian yang tak terbatas (jika hanya ). Tetapi dari perspektif kita perlu memilih unit waktu yang cukup kecil. Kami memilihnya sangat kecil, sehingga kami dapat mengasumsikan maksimum satu peristiwa per unit waktu.λ>0fitPP
Jadi apa yang kita lakukan sebenarnya adalah bahwa kita mendekati proses Poisson dengan urutan granular peristiwa binomial, setiap peristiwa berlangsung tepat satu unit waktu, analogi dengan mekanisme di mana distribusi Poisson dapat dilihat sebagai batas distribusi binomial dalam hukum peristiwa langka .
Setelah kami memahaminya, sisanya jauh lebih sederhana (setidaknya untuk saya).
Untuk mendapatkan perkiraan kami saya perlu mengambil eksponen parameter dipasang , . Dan di sini datang sepotong informasi penting, yang hilang di manual : dengan kami cocok dengan logaritma dari λ , tidak λ itu sendiri.λbeta
exp(coef(out)[1])
NHPoisson
λλ
Pas proses Poisson non-stasioner
NHPoisson
cocok dengan model berikut:
λ=exp(P⃗ T⋅β⃗ )
P⃗ λ
Sekarang mari kita siapkan proses Poisson non-stasioner.
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)
Sama seperti sebelumnya, aux$posNH
akan memberi kita indeks peristiwa, tetapi kali ini kita akan melihat, bahwa intensitas peristiwa berkurang secara eksponensial dengan waktu. Dan laju penurunan ini adalah parameter yang ingin kami perkirakan.
out<-fitPP.fun(tind=TRUE,covariates=cbind(all.seconds),
posE=aux$posNH,
start=list(b0=0,b1=0),modSim=TRUE)
Penting untuk dicatat, bahwa kita perlu menempatkan all.seconds
sebagai kovariat, bukan lambdas
. Eksponensial / logaritisasi dilakukan secara internal oleh fitPP.fun
. BTW, terlepas dari nilai yang diprediksi, fungsi membuat dua grafik secara default.
Bagian terakhir adalah fungsi pisau swiss untuk validasi model globalval.fun
,.
aux<-globalval.fun(obFPP=out,lint=2000,
covariates=cbind(all.seconds),typeI='Disjoint',
typeRes='Raw',typeResLV='Raw',resqqplot=FALSE)
Antara lain, fungsi membagi waktu menjadi interval, masing-masing lint
sampel panjang, sehingga dimungkinkan untuk membuat grafik kasar yang membandingkan intensitas yang diprediksi dengan intensitas yang diamati.