DrawK0 {invgamstochvol}R Documentation

Obtains a random draw from the exact posterior of the inverse volatilities.

Description

Obtains a draw from the posterior distribution of the inverse volatilities.

Usage

DrawK0(AllSt, allctil, alogfac, alogfac2, alfac, n, rho, b2, nproc2=2)

Arguments

AllSt

Some constants obtained from the evaluation of the log likelihood using the function lik_clo

allctil

Some constants obtained from the evaluation of the log likelihood using the function lik_clo

alogfac

Some constants obtained from the evaluation of the log likelihood using the function lik_clo

alogfac2

Some constants obtained from the evaluation of the log likelihood using the function lik_clo

alfac

Some constants obtained from the evaluation of the log likelihood using the function lik_clo

n

Degrees of freedom.

rho

The parameter for the persistence of volatility.

b2

Level of volatility.

nproc2

The number of processors allocated to the calculations. The default value is set at 2.

Value

A vector with a random draw from the posterior of the inverse volatilities.

Examples

##example using US inflation Data
data("US_Inf_Data")
 Ydep <- as.matrix(US_Inf_Data)
 littlerho=0.95
r0=1
rho=diag(r0)*littlerho
p=4
n=4.1
T=nrow(Ydep)
Xdep <- Ydep[p:(T-1),]
if (p>1){
for(lagi in 2:p){
 Xdep <- cbind(Xdep, Ydep[(p-lagi+1):(T-lagi),])
 }
}
T=nrow(Ydep)
Ydep <- as.matrix(Ydep[(p+1):T,])
 T=nrow(Ydep)
unos <- rep(1,T)
Xdep <- cbind(unos, Xdep)

##obtain residuals
 bOLS <- solve(t(Xdep) %*% Xdep) %*% t(Xdep) %*% Ydep
 Res= Ydep- Xdep %*% bOLS
 Res=Res[1:T,1]
 b2=solve(t(Res) %*% Res/T)*(1-rho %*% rho)/(n-2)
 Res=as.matrix(Res,ncol=1)
  
##obtain log likelihood
   LL1=lik_clo(Res,b2,n,rho)
   
##obtain smoothed estimates of volatility. First, save the constants from LL1
 deg=200
 niter=200
 AllSt=matrix(unlist(LL1[3]), ncol=1)
 allctil=matrix(unlist(LL1[4]),nrow=T, ncol=(deg+1))
 donde=(niter>deg)*niter+(deg>=niter)*deg 
 alogfac=matrix(unlist(LL1[5]),nrow=(deg+1),ncol=(donde+1))
 alogfac2=matrix(unlist(LL1[6]), ncol=1)
 alfac=matrix(unlist(LL1[7]), ncol=1)
        
 milaK=0
 repli=5
  keep0=matrix(0,nrow=repli, ncol=1)
        for (jj in 1:repli)
       {
          laK=DrawK0(AllSt,allctil,alogfac, alogfac2, alfac, n, rho, b2, nproc2=2)
          
           milaK=milaK+1/laK*(1/repli)
          keep0[jj]=mean(1/laK)/b2
        }
        ccc=1/b2
        fefo=(milaK[1:T])*ccc
        
##moving average of squared residuals
        mRes=matrix(0,nrow=T,ncol=1)
           Res2=Res*Res
         bandi=5
       for (iter in 1:T)
        {  low=(iter-bandi)*(iter>bandi)+1*(iter<=bandi)
          up=(iter+bandi)*(iter<=(T-bandi))+T*(iter>(T-bandi))
          mRes[iter]=mean(Res2[low:up])
        }
        
##plot the results
       plot(fefo,type="l", col = "red", xlab="Time",ylab="Volatility Means")
          lines(mRes, type="l", col = "blue")
          legend("topright", legend = c("Stochastic Volatility", "Squared Residuals"),
                 col = c("red", "blue"), lty = 1, cex = 0.8)

[Package invgamstochvol version 1.0.0 Index]