Membantu memahami uji Pesaran dan Timmermann baru (dan validasi kode R)


2

Saya saat ini bekerja dengan versi uji Pesaran & Timmermann dari tahun 2009. Karena saya tidak dapat menemukan paket R yang berisi fungsi untuk menghitungnya ( rugarchmemiliki versi 1992 DACTest). Saya baru-baru ini memposting utas lintas divalidasi dengan pertanyaan serupa di mana mlofton pengguna yang baik menyarankan saya untuk melihat daftar ini. Karena lintas-posting bukan praktik yang dapat diterima setelah lebih dari seminggu penelitian keras saya berhasil mengembangkan kode R untuk newPT_test. Tampaknya benar, tetapi karena saya memiliki banyak keraguan, mungkin seseorang akan mengklarifikasi kekhawatiran saya.

Berikut ini rumus yang saya gunakan (Pönkä 2017):

PT=(T1)(Syy,w1Syy^,wSy^y^,w1Sy^y,w)χ12,

Syy,w=(T1)1YMwY,
Sy^y^,w=(T1)1Y^MwY^,
Syy^,w=(T1)1Y^MwY^,
Syy^,w=(T1)1YMwY^,
Mw=IT1W(WW)1W,
W=(τT1,Y1,Y^1),

"... dan Y=(y2,...,yT)Y^=(y^2,...,y^T) Y = ( y 2 , . . . , y T ) , Y-1=(y1,...,yT-1) , Y = ( y 1 , .Y^=(y^1,...,y^T-1) danτt adalah sebagai(T-1)×1 vektor yang ..." Dari sumber lain saya belajar bahwasayat adalah matriks identitas.

Masalah utama saya adalah notasi. Saya mengerti bahwa yt mewakili satu dan nol tergantung pada apakah perubahan antara nilai aktual dan observasi yang terakhir adalah positif ( 1 ) atau negatif ( 0 )? Sama untuk perkiraan y t . Saya tidak yakin bagaimana memahami vektor: Y = ( y 2 , . . . , Y t ) ' dan Y ' di S elemen. saya tahu ituy^tY=(y2,...,yt)YS Pada akhir(y2,...,yt) artinya adalah vektor kolom, sehinggaY menunjukkan bahwa sekarang vektor barisnya sekarang ?. Juga dimulai dariy2 yang berarti saya menghapus observasi pertama dari seri biner sementara diY-1=(y1,...,yT-1) saya menghapus lalu? Itu membuatτt-1 a(T-1)×3 matriks benar?

Ini kode R:

nwPT_test=function(actual,forecast){

yt=actual #assign actual to yt to make code shorter  
xt=forecast #assign forecast to xt...  

delta_yt=as.matrix(cbind(ifelse(yt-lag(yt)>0,1,0)[-1])) #calc change of yt (delta)
delta_xt=as.matrix(cbind(ifelse(xt-lag(xt)>0,1,0)[-1])) #calc change of xt(delta)
nT=length(delta_yt) #number of Time periods
Yt=cbind(delta_yt[-1]) #Yt=(y2,...,yT) 
Xt=cbind(delta_xt[-1]) #Xt=(x2,...,xT)
Yt2=as.vector(rbind(delta_yt[-nT])) #Yt2=(y1,...,yT-1)
Xt2=as.vector(rbind(delta_xt[-nT])) #Xt2=(x1,...,xT-1)
teta=rep(1,nT-1) #T-1 vector of ones
I=diag(nT-1) #Identity matrix
W=cbind(teta,Yt2,Xt2) #W matrix as in formula

Mw=I-(W%*%((t(W)%*%W)^(-1))%*%t(W))#calcualting Mw as in formula

#calculating elements S as in formula
Syy.w=((nT-1)^(-1))*t(Yt)%*%Mw%*%Yt
Sxx.w=((nT-1)^(-1))*t(Xt)%*%Mw%*%Xt
Sxy.w=((nT-1)^(-1))*t(Xt)%*%Mw%*%Yt
Syx.w=((nT-1)^(-1))*t(Yt)%*%Mw%*%Xt

PT=(nT-1)*(Syy.w^(-1)*Syx.w*Sxx.w^(-1)*Sxy.w)#finally calculating PT 

p.value=1-pchisq(PT,df=1)#calculating p-value
#some code to make it looks nicer
summary=c(PT,p.value)
names(summary)=c("PT statistic","p.value")
summary
}

Saya berhasil memecahkan sebagian besar masalah dari utas saya sebelumnya. Berikut ini tautannya :: https://stats.stackexchange.com/questions/372776/confusions-about-pesaran-timmermann-test-2009-version?noredirect=1#comment701286_372776 Mungkin membantu memahami cara saya mendekatinya. Sejauh ini kode saya tampaknya memberikan hasil yang benar.

Harap jawab hanya pertanyaan dari utas saat ini. Semoga saya memperbarui pertanyaan saya cukup untuk tidak diperlakukan sebagai pos ganda ... Dan terima kasih lagi kepada mlofton untuk memberi tahu saya tentang subsite SE yang hebat ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.