[R] ARCH LM test for univariant time series

Spencer Graves spencer.graves at pdf.com
Wed Feb 6 05:01:30 CET 2008


Dear Bernhard: 

      Thanks very much.  Unless you object, I shall add it to the 
'FinTS' library as "ArchTest" (comparable to the S-PLUS Finmetrics 
'archTest' function) -- with a worked example in '\scripts\ch03.R'. 

      Best Wishes,
      Spencer

Pfaff, Bernhard Dr. wrote:
> Dear All,
>
>
> one can visually inspect ARCH-effects by plotting acf/pacf of the
> squared residuals from an OLS-estimation. This can be as simple as a
> demeaned series. Further one can run an auxiliary regression by
> regressing q lagged squared values and a constant on the squared series
> itself. This test statistic (N-q)*R^2 is distributed as chisq with q
> degrees of freedom.  
>
> Something along the lines:
>
> archlmtest <- function (x, lags, demean = FALSE) 
> {
>   x <- as.vector(x)
>   if(demean) x <- scale(x, center = TRUE, scale = FALSE)
>     lags <- lags + 1
>     mat <- embed(x^2, lags)
>     arch.lm <- summary(lm(mat[, 1] ~ mat[, -1]))
>     STATISTIC <- arch.lm$r.squared * length(resid(arch.lm))
>     names(STATISTIC) <- "Chi-squared"
>     PARAMETER <- lags - 1
>     names(PARAMETER) <- "df"
>     PVAL <- 1 - pchisq(STATISTIC, df = PARAMETER)
>     METHOD <- "ARCH LM-test"
>     result <- list(statistic = STATISTIC, parameter = PARAMETER, 
>         p.value = PVAL, method = METHOD, data.name =
> deparse(substitute(x)))
>     class(result) <- "htest"
>     return(result)
> }
>
> should work and yield equal results as mentioned earlier in this thread.
>
> Best,
> Bernhard
>
>
>   
>> Spencer,
>>
>> The warning message is sent from VAR, it basically lets you 
>> know that the
>> data it used had no column names and it had to supply them 
>> using y1, y2, y3,
>> etc. It can be suppressed by including options(warn=-1) in the 
>> function.
>>
>> Anyway, it seems that the p value from my function does not match
>> FinMetrics'. I guess the function doesn't work... hmm...
>>
>>
>> On 2/2/08, Spencer Graves <spencer.graves at pdf.com> wrote:
>>     
>>> Dear Tom:
>>>
>>>      Your revised function eliminates the discrepancy in the 
>>>       
>> degrees of
>>     
>>> freedom but is still very different from the numbers reports 
>>>       
>> on Tsay, p.
>>     
>>> 102:
>>>
>>> archTest(log(1+as.numeric(m.intc7303)), lag=12)
>>>
>>>    ARCH test (univariate)
>>>
>>> data:  Residual of y1 equation
>>> Chi-squared = 13.1483, df = 12, p-value = 0.3584
>>>
>>> Warning message:
>>> In VAR(s, p = 1, type = "const") :
>>> No column names supplied in y, using: y1, y2, y3, y4, y5, y6, y7, y8,
>>> y9, y10, y11, y12 , instead.
>>>
>>>
>>>      TOM:  What can you tell me about the warning message?
>>>
>>>      Thanks for your help with this.
>>>      Spencer Graves
>>>
>>> tom soyer wrote:
>>>       
>>>> Spencer,
>>>>
>>>> Sorry, I forgot that the default lag in arch is 16. Here 
>>>>         
>> is the fix. Can
>>     
>>> you
>>>       
>>>> try it again and see if it gives the correct (or at least similar
>>>>         
>>> compared
>>>       
>>>> to a true LM test) result?
>>>>
>>>> archTest=function(x, lags=12){
>>>>  #x is a vector
>>>>  require(vars)
>>>>  s=embed(x,lags)
>>>>  y=VAR(s,p=1,type="const")
>>>>  result=arch(y,lags.single=lags,multi=F)$arch.uni[[1]]
>>>>  return(result)
>>>> }
>>>>
>>>> Thanks and sorry about the bug.
>>>>
>>>>
>>>> On 2/2/08, Spencer Graves <spencer.graves at pdf.com> wrote:
>>>>
>>>>         
>>>>> Dear Tom, Bernhard, Ruey:
>>>>>
>>>>>      I can't get that to match Tsay's example, but I have other
>>>>> questions about that.
>>>>>
>>>>>      1.  I got the following using Tom's 'archTest' 
>>>>>           
>> function (below):
>>     
>>>>>           
>>>>>> archTest(log(1+as.numeric(m.intc7303)), lags=12)
>>>>>>
>>>>>>             
>>>>>    ARCH test (univariate)
>>>>>
>>>>> data:  Residual of y1 equation
>>>>> Chi-squared = 10.8562, df = 16, p-value = 0.8183
>>>>>
>>>>> Warning message:
>>>>> In VAR(s, p = 1, type = "const") :
>>>>> No column names supplied in y, using: y1, y2, y3, y4, y5, 
>>>>>           
>> y6, y7, y8,
>>     
>>>>> y9, y10, y11, y12 , instead.
>>>>>
>>>>>
>>>>>           ** First note that the answer has df = 16, even though I
>>>>> supplied lags = 12.
>>>>>
>>>>>      2.  For (apparently) this example, S-Plus FinMetrics 
>>>>>           
>> 'archTest'
>>     
>>>>> function returned "Test for ARCH Effects:  LM Test.  Null 
>>>>>           
>> Hypothesis:
>>     
>>>>> no ARCH effects.  Test Stat 43.5041, p.value 0.0000.  
>>>>>           
>> Dist. under Null:
>>     
>>>>> chi-square with 12 degrees of freedom".
>>>>>
>>>>>      3.  Starting on p. 101, Ruey mentioned "the Lagrange 
>>>>>           
>> multiplier
>>     
>>>>> test of Engle (1982)", saying "This test is equivalent to 
>>>>>           
>> the usual F
>>     
>>>>> test for" no regression, but refers it to a chi-square, not an F
>>>>> distribution.  Clearly, there is a gap here, because the 
>>>>>           
>> expected value
>>     
>>>>> of the F distribution is close to 1 [d2/(d2-2), where d2 
>>>>>           
>> = denominator
>>     
>>>>> degrees of freedom;  http://en.wikipedia.org/wiki/F-distribution],
>>>>>           
>>> while
>>>       
>>>>> the expected value for a chi-square is the number of 
>>>>>           
>> degrees of freedom
>>     
>>>>>      Unfortunately, I don't feel I can afford the time to 
>>>>>           
>> dig into this
>>     
>>>>> further right now.
>>>>>
>>>>>      Thanks for your help.
>>>>>      Spencer Graves
>>>>>
>>>>> tom soyer wrote:
>>>>>
>>>>>           
>>>>>> Spencer, how about something like this:
>>>>>>
>>>>>> archTest=function (x, lags= 16){
>>>>>>  #x is a vector
>>>>>>  require(vars)
>>>>>>  s=embed(x,lags)
>>>>>>  y=VAR(s,p=1,type="const")
>>>>>>  result=arch(y,multi=F)$arch.uni[[1]]
>>>>>>  return(result)
>>>>>> }
>>>>>>
>>>>>> can you, or maybe Bernhard, check and see whether this 
>>>>>>             
>> function gives
>>     
>>>>>> the correct result?
>>>>>>
>>>>>> thanks,
>>>>>>
>>>>>> On 2/1/08, *Spencer Graves* <spencer.graves at pdf.com
>>>>>> <mailto:spencer.graves at pdf.com>> wrote:
>>>>>>
>>>>>>     Hi, Tom:
>>>>>>
>>>>>>          The 'arch' function in the 'vars' package is 
>>>>>>             
>> supposed to be
>>     
>>>>> able
>>>>>
>>>>>           
>>>>>>     to do that.  Unfortunately, I was unable to make it 
>>>>>>             
>> work for a
>>     
>>>>>>     univariate series.  Bernhard Pfaff, the author of 
>>>>>>             
>> 'vars', said
>>     
>>>>>>     that if I
>>>>>>     read the code for 'arch', I could easily retrieve 
>>>>>>             
>> the necessary
>>     
>>>>> lines
>>>>>
>>>>>           
>>>>>>     and put them in my own function;  I have not so far 
>>>>>>             
>> found the time
>>     
>>>>> to
>>>>>
>>>>>           
>>>>>>     try that.  If you do, or if you get a better answer 
>>>>>>             
>> than this,
>>     
>>>>>>     would you
>>>>>>     please let me know?  I would like to have this 
>>>>>>             
>> capability for the
>>     
>>>>>>     'FinTS' package, and I would happily write a help 
>>>>>>             
>> page if someone
>>     
>>>>>>     would
>>>>>>     contribute the function -- or use a function in another
>>>>>>
>>>>>>             
>>>>> package.  Tsay
>>>>>
>>>>>           
>>>>>>     (2005) Analysis of Financial Time Series, 2nd ed. 
>>>>>>             
>> (Wiley) includes
>>     
>>>>> an
>>>>>
>>>>>           
>>>>>>     example on p. 103 that could be used for a reference.
>>>>>>
>>>>>>          Hope this helps.
>>>>>>          Spencer Graves
>>>>>>
>>>>>>     tom soyer wrote:
>>>>>>     > Hi,
>>>>>>     >
>>>>>>     > Does anyone know if R has a Lagrange multiplier 
>>>>>>             
>> (LM) test for
>>     
>>> ARCH
>>>       
>>>>>>     > effects for univariant time series?
>>>>>>     >
>>>>>>     > Thanks!
>>>>>>     >
>>>>>>     >
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Tom
>>>>>>
>>>>>>             
>>>>
>>>>
>>>>         
>>
>> -- 
>> Tom
>>
>> 	[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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