[R] 'breackpoints' (package 'strucchange'): 2 blocking error messages when using for multiple regression model testing

Michel Lutz miclutz at gmail.com
Sat Jul 30 09:59:39 CEST 2011


Thanks a lot for your answer.

You're right, I need to continue reading some papers to define a relevant
testing strategy.

Thanks to your package, I think I've got all what I need to proceed.... on
the exception of using 'breakpoints' with my data !

I've tested all possibilities (dummy or not) and I'm definitely stuck.

You'll find here enclosed my data and a full R code showing the issue... if
you would have a few minutes to take a look into it and tell me what could
go wrong, it would really be fantastic!

I am really sorry for asking you, but I really don't know what to do.

Warm thanks, have a nice week-end.

Michel



On Sat, Jul 30, 2011 at 1:28 AM, Achim Zeileis <Achim.Zeileis at uibk.ac.at>wrote:

> On Fri, 29 Jul 2011, Michel Lutz wrote:
>
>  Achim,
>>
>> Thank you so much for this prompt answer. Really appreciated !
>>
>> Anyway, I am still a bit lost... don't you mind if I ask you somme
>> additional questions?
>>
>> * *one standard approach is to employ a HACcovariance matrix* I did many
>> researches but I never found this recommendation. The only paper I know is
>> Cadsby, Stengos (1985), proposing a transformation to use F-test when AR(1)
>> errors. However as I'm not a statistics expert, for sure I missed something
>> important. Are you aware of any reference paper recommending this standard
>> approach?
>>
>
> The Bai & Perron (2003, JAE) paper for example. And it's also discussed in
> Andres (1993), iirc.
>
>  ** about the use of the F-test (I won't use gefp, because I have not
>> studied
>>
>> this method yet)*
>> Based on the example, I used the below code:
>> D <- data.frame(CPU=pred.cor2$CPU, PREP=PREP, BRG=BIZ$JOBPREPLOTRULE_BRG,
>> CLOG=res.WIP, WE=DUMMY)
>> model.mes <- CPU~PREP+BRG+CLOG+WE
>>
>> stab.model <- Fstats(model.mes, data = D, from = 0.1,
>>        vcov = function(x, ...) vcovHC(x, type = "HC", ...))
>> plot(stab.model)
>>
>> Here enclosed my result.
>> I am a bit scared because I am not knwoledgeable about F-Test with HAC (so
>> far: I need to read), and I've never seen so high F-statistics results.
>> Does
>> this mean my model is poor?
>>
>
> Note that (despite the name), the statistics are typically computed in
> Chi-squared form, i.e., not standardized by the number of parameters. For
> details see vignette("strucchange-intro").
>
>  ** about the function breapoints*
>>
>> I installed strucchange 1.4-5.
>> I used the below code:
>> bp.mes <- breakpoints(model.mes, data = D)
>>
>> Unfortunately, the error occured again:
>> Erreur dans chol2inv(qr.R(fm$qr)) :
>>  l'élément (5, 5) est nul, donc l'inverse ne peut être calculé
>>
>> Why such a chol2inv issue? No missing values in my data, I really don't
>> know what to do.
>>
>
> I guess that this is for the model with the dummy variable, right? And then
> I would guess that there are longer sequences where the dummy is only zero
> or only 1. This makes it impossible to estimate all coefficients on all of
> the subsets. The code tries to address this problem but with the given
> information it's hard to say where.
>
>  * *But the tests need to be adjusted*
>>
>> Are such adjustements implement in breakpoints? (no mention in the "durab"
>> example, basic function settings are used).
>>
>
> breakpoints() is _no_ structural change test! It computes point estimates.
>
> However, if you compute confidence intervals, the same principles can be
> applied. See Bai & Perron (2003) for a discussion and help("RealInt") for a
> replication of their example.
>
>
>
>> In advance, thank you very much, and sorry for the disturbance.
>>
>> Michel
>>
>>
>>
>> On Fri, Jul 29, 2011 at 10:58 AM, Achim Zeileis <Achim.Zeileis at uibk.ac.at
>> >**wrote:
>>
>>  Michel:
>>>
>>>
>>> I am encountering a blocking issue when using the function 'breackpoints'
>>>
>>>> from package 'strucchange'.
>>>>
>>>> *Context:*
>>>>
>>>> I use a data frame, 248 observations of 5 variables, no NA.
>>>> I compute a linear model, as y~x1+...+x4
>>>> x4 is a dummy variable (0 or 1).
>>>>
>>>> I want to check this model for structural changes.
>>>>
>>>>
>>> If you want to _test_ for structural changes, then you should use a test,
>>> i.e., apply sctest() to an Fstats(), efp(), or gefp(). If your errors are
>>> correlated, one standard approach is to employ a HAC (heteroskedasticity
>>> and
>>> autocorrelation consistent) covariance matrix. There is a worked example
>>> with Fstats() using a HC matrix in example("durab"). An example with
>>> gefp()
>>> using a HAC matrix is in example("gefp"). See also the
>>> vignette("sandwich",
>>> package = "sandwich").
>>>
>>> The breakpoints() function is for _estimating_ (aka dating) structural
>>> changes, not for testing.
>>>
>>> *Process & issues:*
>>>
>>>>
>>>>
>>>> *First, I used function Fstats.* It works perfectly. However, this test
>>>> is
>>>> not adapted because regression residuals are not independant.
>>>>
>>>> That is why *I used 'breackpoints', which works for depedant errors*
>>>> (Bai,
>>>> 1997).
>>>>
>>>>
>>> Yes, as for coefficient estimates in a regression model, the breakpoint
>>> estimates are still consistent. But the tests need to be adjusted. Note
>>> also
>>> the in the presence of autocorrelation, the standard information criteria
>>> do
>>> not perform well (Bai & Perron 2003).
>>>
>>>  Syntax:
>>>
>>>>
>>>> struc.test <- breakpoints(y~x1+x2+x3+x3+x4, data=D)
>>>>
>>>> *I get an error message:*
>>>>  Erreur dans chol2inv(qr.R(fm$qr)) :
>>>>  l'?l?ment (5, 5) est nul, donc l'inverse ne peut ?tre calcul?
>>>>
>>>> (sorry for the french version, I don't know how to get the message
>>>> english translation in R).
>>>>
>>>> My first assumption was this has *something to do with the dummy
>>>> variable,
>>>> so I skipped it*:
>>>> struc.test <- breakpoints(y~x1+x2+x3+x3, data=D)
>>>>
>>>> *New error message:*
>>>> Erreur dans if (max(abs((betar - fm$coefficients)/fm$****coefficients))
>>>> <
>>>> tol)
>>>> check <- FALSE :
>>>>  valeur manquante l? o? TRUE / FALSE est requis
>>>>
>>>>
>>>> I really can't understand what is going wrong. What 'tol' stands for?
>>>> Seems
>>>> it is not a 'breackpoints' attributes.
>>>>
>>>>
>>> The breakpoints() function needs to estimate the model on all possible
>>> subsets to determine the optimal breakpoints. This can be done via
>>> computation of recursive residuals and "tol" is an argument of the
>>> recresid() function. However, I recently enhanced the code trying to fix
>>> exactly this problem. Please try strucchange 1.4-5.
>>>
>>> Best,
>>> Z
>>>
>>>  Any help would greatly appreciated.
>>>
>>>>
>>>> Many thanks in advance,
>>>>
>>>> Regards,
>>>>
>>>> Michel
>>>>
>>>>       [[alternative HTML version deleted]]
>>>>
>>>>
>>>>
>>>>


More information about the R-help mailing list