[R] ARCH LM test for univariant time series

Pfaff, Bernhard Dr. Bernhard_Pfaff at fra.invesco.com
Mon Feb 4 10:05:35 CET 2008


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 ...{{dropped:10}}



More information about the R-help mailing list