Thanks Bernhard for the beautiful code!! On 2/4/08, Pfaff, Bernhard Dr. <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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* <[EMAIL PROTECTED] > >> >>> <mailto:[EMAIL PROTECTED]>> 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@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. > ***************************************************************** > >
-- Tom [[alternative HTML version deleted]] ______________________________________________ R-help@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.