Hello all, I looking at package dse or vars or mAr I know how to simulate a VAR(p) process, my problem is that most of those processes are unstable (not weakly stationary). Do anybody know how to generate a random VAR (or VARMA even better) process that is weakly stationary? Thanks -- View this message in context: http://r.789695.n4.nabble.com/simulating-stable-VAR-process-tp4261177p4261177.html Sent from the R help mailing list archive at Nabble.com.
More specifically. I know that a condition for a VAR(p) process to be stable (weakly stationary) is that the companion form of the equation (see AWESOME Pfaff book analysis of integrated and cointegrated time series in R) as eigenvalues of modulus <1. My problem is that I want to generate such processes... When I try to generate random VAR(p) processes they seems to explode (clearly they are not weakly stationary...) Is there a way somebody know? -- View this message in context: http://r.789695.n4.nabble.com/simulating-stable-VAR-process-tp4261177p4261210.html Sent from the R help mailing list archive at Nabble.com.
The simulate function in dse lets you specify the model and the distribution of the noise term (or even their values so you can get any distribution you like). So, you should be able to do what you want, with either a VAR(p) or a vector ARMA process. If you are getting a process that explodes then your model is probably not stable. If it is a dse TSmodel you can check it with stability(), see ?stability in dse. Beware that the condition Modulus <1 depends on whether your lagged parameters are specified on the left or right side of the equation. This changes the sign of the lag parameters and inverts the condition. Dse assumes lagged terms are specified on the left side, which is a bit unusual compared to introductory text books. However, when you get to hard problems it has advantages because the AR term is a matrix polynomial ring and so it is easier to apply some useful mathematics. Paul Date: Wed, 4 Jan 2012 05:17:05 -0800 (PST) From: statquant2<statquant at gmail.com> To:r-help at r-project.org Subject: Re: [R] simulating stable VAR process Message-ID:<1325683025141-4261210.post at n4.nabble.com> Content-Type: text/plain; charset=us-ascii More specifically. I know that a condition for a VAR(p) process to be stable (weakly stationary) is that the companion form of the equation (see AWESOME Pfaff book analysis of integrated and cointegrated time series in R) as eigenvalues of modulus<1. My problem is that I want to generate such processes... When I try to generate random VAR(p) processes they seems to explode (clearly they are not weakly stationary...) Is there a way somebody know?
Hello Paul Thanks for the answer but my point is not how to simulate a VAR(p) process and check that it is stable. My question is more how can I generate a VAR(p) such that I already know that it is stable. We know a condition that assure that it is stable (see first message) but this is not a condition on coefficients etc... What I want is generate say a 1000 random VAR(3) processes over say 500 time periods that will be STABLE (meaning If I run stability() all will pass the test) When I try to do that it seems that none of the VAR I am generating pass this test, so I assume that the class of stable VAR(p) is very small compared to the whole VAR(p) process. -- View this message in context: http://r.789695.n4.nabble.com/simulating-stable-VAR-process-tp4261177p4291835.html Sent from the R help mailing list archive at Nabble.com.
Mark, statquant2 As I understand the question it is not to test if a VAR is stable but how to construct a VAR that is stable and automatically satisfies the condition Mark has taken from Lutkohl. The algorithm that I have set out will automatically satisfy that condition.The matrix that should be "estimated by the algorithm is A on the last line of page 15 of Lutkepohl. Incidentally the corresponding matrix for the example on page 15 is singular. The algorithm that I have set out will only lead to systems with a non-singular matrix. I still don't see how a matrix generated in this way corresponds to a real economic system. Of course you may have some other constraints in mind that would make the generated system correspond to something more real. John On Saturday, 14 January 2012, Mark Leeds <markleeds2@gmail.com> wrote:> Hi statquant2 and john: In the first chapter of Lutkepohl, it is shownthat stability f> a VAR(p) is the same as > > det(I_k - A1z - .... Ap Z^p ) does not equal zero for z < 1. > > where I_k - A1z - ... Ap z^p is referred to as the reverse characteristicpolynomial.> > So, statquant2, given your A's, one way to do it but be would be tocheck the roots of the> polynomial implied by taking the determinant of the your polynomial. > > There's an example on pg 17 of lutkepohl if you have it. If you don't, Ican fax it to you> over the weekend if you want it. > > > > On Fri, Jan 13, 2012 at 8:34 PM, John C Frain <frainj@gmail.com> wrote: >> >> I think that you must approach this in a different way. >> >> 1 Draw a set of random eigenvalues with modulus < 1 >> 2 Draw a set of random eigenvalues vectors. >> 3 From these you can, with some matrix manipulations, derive the >> corresponding Var coefficients. >> >> If your original coefficients were drawn at random I suspect that the VAR >> would not be stable. I am curious about what you are trying to do. >> >> John >> >> On Friday, 13 January 2012, statquant2 <statquant@gmail.com> wrote: >> > Hello Paul >> > Thanks for the answer but my point is not how to simulate a VAR(p)process>> > and check that it is stable. >> > My question is more how can I generate a VAR(p) such that I alreadyknow>> > that it is stable. >> > >> > We know a condition that assure that it is stable (see first message)but>> > this is not a condition on coefficients etc... >> > What I want is >> > generate say a 1000 random VAR(3) processes over say 500 time periodsthat>> > will be STABLE (meaning If I run stability() all will pass the test) >> > >> > When I try to do that it seems that none of the VAR I am generatingpass>> > this test, so I assume that the class of stable VAR(p) is very small >> > compared to the whole VAR(p) process. >> > >> > >> > >> > -- >> > View this message in context: >>http://r.789695.n4.nabble.com/simulating-stable-VAR-process-tp4261177p4291835.html>> > Sent from the R help mailing list archive at Nabble.com. >> > >> > ______________________________________________ >> > 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. >> > >> >> -- >> John C Frain >> Economics Department >> Trinity College Dublin >> Dublin 2 >> Ireland >> www.tcd.ie/Economics/staff/frainj/home.html >> mailto:frainj@tcd.ie >> mailto:frainj@gmail.com >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html>> and provide commented, minimal, self-contained, reproducible code. > >-- John C Frain Economics Department Trinity College Dublin Dublin 2 Ireland www.tcd.ie/Economics/staff/frainj/home.html mailto:frainj@tcd.ie mailto:frainj@gmail.com [[alternative HTML version deleted]]
Mark This should be reasonably straightforward. In the simplest case you wih to draw a random complex number in the unit circle. This is best done in polar coordinates. If r is a random mumber on (0,1) and theta a random number on (0, 2 Pi) then if x=r cos(theta) and y= r sin(theta), x + i y is inside the unit circle. As such roots come in conjugate pairs a second is x-iy. If you then need an odd number of roots the final can simply be a random number on (0,1). You do not need to use a uniform distribution but can use any distribution on the required intervals or restrain more or the eigenvalues to be real. John On Sunday, 15 January 2012, Mark Leeds <markleeds2@gmail.com> wrote:> hi john. I think I follow you. but , in your algorithm, it isstraightforward to> generate a set of eigenvalues with modulus less than 1 ? thanks. > > > On Sat, Jan 14, 2012 at 5:31 PM, John C Frain <frainj@gmail.com> wrote: > > Mark, statquant2 > > As I understand the question it is not to test if a VAR is stable but howto construct a VAR that is stable and automatically satisfies the condition Mark has taken from Lutkohl. The algorithm that I have set out will automatically satisfy that condition.The matrix that should be "estimated by the algorithm is A on the last line of page 15 of Lutkepohl. Incidentally the corresponding matrix for the example on page 15 is singular. The algorithm that I have set out will only lead to systems with a non-singular matrix.> > I still don't see how a matrix generated in this way corresponds to areal economic system. Of course you may have some other constraints in mind that would make the generated system correspond to something more real.> > John > > On Saturday, 14 January 2012, Mark Leeds <markleeds2@gmail.com> wrote: >> Hi statquant2 and john: In the first chapter of Lutkepohl, it is shownthat stability f>> a VAR(p) is the same as >> >> det(I_k - A1z - .... Ap Z^p ) does not equal zero for z < 1. >> >> where I_k - A1z - ... Ap z^p is referred to as the reversecharacteristic polynomial.>> >> So, statquant2, given your A's, one way to do it but be would be tocheck the roots of the>> polynomial implied by taking the determinant of the your polynomial. >> >> There's an example on pg 17 of lutkepohl if you have it. If you don't, Ican fax it to you>> over the weekend if you want it. >> >> >> >> On Fri, Jan 13, 2012 at 8:34 PM, John C Frain <frainj@gmail.com> wrote: >>> >>> I think that you must approach this in a different way. >>> >>> 1 Draw a set of random eigenvalues with modulus < 1 >>> 2 Draw a set of random eigenvalues vectors. >>> 3 From these you can, with some matrix manipulations, derive the >>> corresponding Var coefficients. >>> >>> If your original coefficients were drawn at random I suspect that theVAR>>> would not be stable. I am curious about what you are trying to do. >>> >>> John >>> >>> On Friday, 13 January 2012, statquant2 <statquant@gmail.com> wrote: >>> > Hello Paul >>> > Thanks for the answer but my point is not how to simulate a VAR(p)process>>> > and check that it is stable. >>> > My question is more how can I generate a VAR(p) such that I alreadyknow>>> > that it is stable. >>> > >>> > We know a condition that assure that it is stable (see first message)but>>> > this is not a condition on coefficients etc... >>> > What I want is >>> > generate say a 1000 random VAR(3) processes over say 500 time periodsthat>>> > will be STABLE (meaning If I run stability() all will pass the test) >>> > >>> > When I try to do that it seems that none of the VAR I am generatingpass>>> > this test, so I assume that the class of stable VAR(p) is very small >>> > compared to the whole VAR(p) process. >>> > >>> > >>> > >>> > -- >>> > View this message in context: >>>http://r.789695.n4.nabble.com/simulating-stable-VAR-process-tp4261177p4291835.html>>> > Sent from the R help mailing list archive at Nabble.com. >>> > >>> > ______________________________________________ >>> > 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. >>> > >>> >>> -- >>> John C Frain >>> Economics Department >>> Trinity College Dublin >>> Dublin 2 >>> Ireland >>>-- John C Frain Economics Department Trinity College Dublin Dublin 2 Ireland www.tcd.ie/Economics/staff/frainj/home.html mailto:frainj@tcd.ie mailto:frainj@gmail.com [[alternative HTML version deleted]]