[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