[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