Hello Spencer, splendid. Please go ahead. I am wondering if one should return the lm-object too and not only the htest-object. The benefit would be, that summary(lm-object) would return the mentioned F-test in the R-Help thread too, or one can return just the F-test result as a separate list element. If so, a more appropriate function name would be archtest().
What do you think? Best, Bernhard Dr. Bernhard Pfaff International Structured Products Group Director Invesco Asset Management Deutschland GmbH Bleichstrasse 60-62 D-60313 Frankfurt am Main Tel: +49(0)69 29807 230 Fax: +49(0)69 29807 178 Email: [EMAIL PROTECTED] Geschäftsführer: Karl Georg Bayer, Bernhard Langer, Dr. Jens Langewand, Alexander Lehmann, Christian Puschmann Handelsregister: Frankfurt am Main, HRB 28469 Sitz der Gesellschaft: Frankfurt am Main >-----Ursprüngliche Nachricht----- >Von: Spencer Graves [mailto:[EMAIL PROTECTED] >Gesendet: Mittwoch, 6. Februar 2008 05:02 >An: Pfaff, Bernhard Dr. >Cc: tom soyer; r-help@r-project.org >Betreff: Re: AW: [R] ARCH LM test for univariant time series > >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 <[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. >> ***************************************************************** >> >> >> > ______________________________________________ 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.