[R] Automatically extract info from Granger causality output

Pfaff, Bernhard Dr. Bernhard_Pfaff at fra.invesco.com
Fri Apr 15 11:35:48 CEST 2011


Hello Ivan,

see example(causality) for the first question and use count[[i]] and not count$[[i]] for the second. The following works for me:

example(causality)
test1 <- causality(var.2c, "e")
test2 <- causality(var.2c, "prod")
tl <- list(test1, test2)
res <- matrix(NA, ncol = 1, nrow = length(tl))
for(i in 1:length(tl)){
	res[i, ] <- tl[[i]]$Granger$p.value
}
res

hth,
Bernhard


> -----Ursprüngliche Nachricht-----
> Von: ivan [mailto:i.petzev at gmail.com] 
> Gesendet: Freitag, 15. April 2011 10:46
> An: Pfaff, Bernhard Dr.
> Cc: r-help at r-project.org
> Betreff: Re: [R] Automatically extract info from Granger 
> causality output
> 
> Dear Bernhard,
> 
> thank you very much for the response. Yes, I am using the 
> packsges "vars" with fuchrions VAR() and causality().
> 
> 1)Giving colnames to the objects does unfortunately not  
> change anything.
> 
> 2) I am not sure if I understood you right. Did you mean to 
> insert Countml$Granger$p.value rather than  
> Count$ml$Granger$p.value? This
> returns: Error: Object 'Countms' not found.
> 
> By the way, str(Count) produces the following:
> 
> > str(Count)
> List of 4
>  $ ml:List of 2
>   ..$ Granger:List of 5
>   .. ..$ statistic: num [1, 1] 0.277
>   .. .. ..- attr(*, "names")= chr "F-Test"
>   .. ..$ parameter: Named num [1:2] 1 122
>   .. .. ..- attr(*, "names")= chr [1:2] "df1" "df2"
>   .. ..$ p.value  : num [1, 1] 0.6
>   .. ..$ method   : chr "Granger causality H0: y1 do not 
> Granger-cause x"
>   .. ..$ data.name: chr "VAR object x"
>   .. ..- attr(*, "class")= chr "htest"
>   ..$ Instant:List of 5
>   .. ..$ statistic: num [1, 1] 19.7
>   .. .. ..- attr(*, "names")= chr "Chi-squared"
>   .. ..$ parameter: Named int 1
>   .. .. ..- attr(*, "names")= chr "df"
>   .. ..$ p.value  : num [1, 1] 8.86e-06
>   .. ..$ method   : chr "H0: No instantaneous causality 
> between: y1 and x"
>   .. ..$ data.name: chr "VAR object x"
>   .. ..- attr(*, "class")= chr "htest"
>  $ jp:List of 2
> .
> .
> .
> .
> 
> Best Regards,
> 
> Ivan
> 
> On Fri, Apr 15, 2011 at 10:13 AM, Pfaff, Bernhard Dr.
> <Bernhard_Pfaff at fra.invesco.com> wrote:
> > Dear Ivan,
> >
> > first, it would pay-off in terms of readability to employ 
> line breaks and second to provide a reproducable code snippet 
> and third which package you have used. Now to your questions:
> > 1) What happens if you provide colnames for your objects?
> > 2) What happens if you omit the $ after count?
> >
> > Best,
> > Bernhard
> >
> > ps: the function seems to have been ported from the package 
> 'vars'. In this package the function causality() is included 
> which returns a named list with elements of class htest.
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: r-help-bounces at r-project.org
> >> [mailto:r-help-bounces at r-project.org] Im Auftrag von ivan
> >> Gesendet: Donnerstag, 14. April 2011 19:37
> >> An: r-help at r-project.org
> >> Betreff: [R] Automatically extract info from Granger 
> causality output
> >>
> >> Dear Community,
> >>
> >> this is my first programming in R and I am stuck with a problem. I 
> >> have the following code which automatically calculates Granger 
> >> causalities from a variable, say e.g. "bs"
> >> as below, to all other variables in the data frame:
> >>
> >> log.returns<-as.data.frame( lapply(daten, function(x)
> >> diff(log(ts(x))))) y1<-log.returns$bs
> >> y2<- log.returns[,!(names(log.returns) %in% "bs")]
> >> Granger<- function(y1,y2) {models=lapply(y2, function(x)
> >> VAR(cbind(x,y1),ic="SC") ); results=lapply(models,function(x) 
> >> causality(x,cause="y1")); print(results)}
> >> Count<-Granger(y1,y2)
> >>
> >> which produces the following output (I have printed only 
> part of it 
> >> (for Granger causality of bs on ml)):
> >>
> >> $ml
> >> $ml$Granger
> >>
> >>         Granger causality H0: y1 do not Granger-cause x
> >>
> >> data:  VAR object x
> >> F-Test = 0.2772, df1 = 1, df2 = 122, p-value = 0.5995
> >>
> >>
> >> $ml$Instant
> >>
> >>         H0: No instantaneous causality between: y1 and x
> >>
> >> data:  VAR object x
> >> Chi-squared = 19.7429, df = 1, p-value = 8.859e-06
> >>
> >> My questions:
> >>
> >> 1)How can I edit the function above so that the output writes: 
> >> Granger causality H0: bs do not Granger-cause ml   rather than  
> >> Granger causality H0: y1 do not Granger-cause x?
> >>
> >> 2) I want to extract the p-values of the tests into a data 
> frame for 
> >> instance. The problem is that the output has a 3 layer structure.
> >> Thus, for the above p-value I need to write 
> count$ml$Granger$p.value.
> >> I thought of a loop of something like for(i in
> >> 1:length(count)) {z=count$[[i]]$Granger$p.value} but it 
> didn't work.
> >>
> >> Thank you very much for your help.
> >>
> >> Best Regards.
> >>
> >> ______________________________________________
> >> R-help at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> >> PLEASE do read the posting guide
> >> http://www.R-project.org/posting-guide.html
> >> and provide commented, minimal, self-contained, reproducible code.
> >>
> > *****************************************************************
> > Confidentiality Note: The information contained in this 
> message, and 
> > any attachments, may contain confidential and/or privileged 
> material. 
> > It is intended solely for the person(s) or entity to which it is 
> > addressed. Any review, retransmission, dissemination, or 
> taking of any 
> > action in reliance upon this information by persons or 
> entities other 
> > than the intended recipient(s) is prohibited. If you 
> received this in 
> > error, please contact the sender and delete the material from any 
> > computer.
> > *****************************************************************
> >
> >
> 



More information about the R-help mailing list