Skip to content

Need some help in R programming code

2 messages · saikat sarkar, jim holtman

#
Dear R guru,

I am Saikat Sarkar working as a researcher of Economics in Tampere
University, Finland. I am trying to estimate some Garch related tests with
Bayesian analysis by R programme.

I am not good in R but trying to survive.

Anyway I have the coding but not working properly. I have tried to find the
problem but failed. I am writing to all R gurus to help me out.

Could you please look at the problem and help me if you can.

Thanking you
saikat

Could you please look at the problem below:

R message is like below:
-------
Error in garch.gjr.d0(param, y, X, Z, iterate = FALSE)$res :
  $ operator is invalid for atomic vectors
plot(Ch.mic,Ch.mic.rep,xlim=c(0,6),ylim=c(0,6))
-----------------------
Coding
--------

res<-garch.gjr.d0(a$estimate,y,X,X,iterate=FALSE)$res
sig2<-garch.gjr.d0(a$estimate,y,X,X,iterate=FALSE)$sig2


test.mic <- function(param,y,X,Z)

{
   n <- length(y)

   res <- garch.gjr.d0(param,y,X,Z,iterate=FALSE)$res

   s2 <- garch.gjr.d0(param,y,X,Z,iterate=FALSE)$sig2

   s<-sqrt(s2)

   r <- res

   u <- r[-1]

   r2<- (r[-n]^2*s2[-n])/s[-1]

   r3<- (r[-n]^3*s2[-n]*s[-n])/s[-1]

   U <- cbind(r[-n],r2,r3)

   U <- cbind(1,U)

   U <- U/matrix(s[-1],nr=nrow(U),nc=ncol(U))

   Fstat<-summary(lm(u~U-1))$fstatistic[1]

   Fstat

}


sim.gjr <- function(par,y,X=0,Z=0)
{

   n <- length(y)

   e<-numeric(n)

   yrep<-numeric(n)

   yrep[1] <- y[1]

   n.dummies.mean <- dim(X)[2]

   if(is.matrix(X)) e[1] <- e[1]-sum(X[1,]*par[9:(8+n.dummies.mean)])

   delta <- par[-(1:(8+n.dummies.mean))]

   s2 <- var(y)

   for(i in 2:n){

     s2 <-
par[5]+par[6]*e[i-1]^2+par[7]*ifelse(e[i-1]<0,1,0)*e[i-1]^2+par[8]*s2+sum(X[i,]*delta)

     e[i] <- rnorm(1,0,sqrt(s2))

     yrep[i]<-par[1]+par[2]*yrep[i-1]+par[3]*s2+par[4]*yrep[i-1]*s2+e[i]

   }


   if(is.matrix(X)) yrep <- yrep + X%*%par[9:(8+n.dummies.mean)]

   yrep
}

yrep <- sim.gjr(a$estimate,y,X,Z)


n.test <- 500

Ch.mic <- Ch.mic.rep <- numeric(n.test)

for(i in 1:n.test){

   simulation <- sample(1:10000,1)

   par <- sims.matrix[simulation,]

   Ch.mic[i] <- test.mic(par,y,X,X)

   yrep <- sim.gjr(par,y,X,X)

   Ch.mic.rep[i] <- test.mic(par,yrep,X,X)
}

 plot(Ch.mic,Ch.mic.rep,xlim=c(0,6),ylim=c(0,6))

 lines(c(0,6),c(0,6))
#
You need to also provide the data that your code is using since the
error message indicates that the problem is probably in the way that
the object 'a' is defined and there is no indication of what it looks
like.  You should either provide the output of "str(a)", or the output
of 'dput(a)' so we have an idea of what it is.  The error message
seems to indicate the the "$" is not legal for 'a' as it is currently
defined.
On Sat, Nov 22, 2008 at 4:55 AM, saikat sarkar <dipa_sanyal at yahoo.com> wrote: