This code does more work than is necessary.
A better version is below. (Still not tested.)
tokenize "a b c d e"
qui forval i = 1/4 {
local I = `i' + 1
forval j = `I'/5 {
forval y = 1988/2003 {
forval m = 1/12 {
corr ``i'' ``j'' if year == `y' & month == `m'
replace ``i''``j'' = r(rho) if year == `y' & month == `m'
}
}
}
}
Nick
[email protected]
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]]On Behalf Of Nick Cox
> Sent: 18 October 2004 23:30
> To: [email protected]
> Subject: st: RE: Re: RE: loop within loop
>
>
> I am less clear now on what your real problem is.
>
> But being interested in several variables doesn't
> make the issues any different. If you
> want to put correlations into variables, you
> must still operate with one correlation from
> each pair of variables. -matrix accum- looks to me
> like a poor choice of method. You end up
> putting stuff into a matrix and then need
> to get it out again, a bit like going to Houston
> from Dallas via San Antonio, perhaps instructive
> but nevertheless indirect. As you are cycling
> over years and months, you need to work with
> several matrices, which makes the problem yet
> more complicated.
>
> If I had a varlist a b c d e, there are
> ten distinct correlations which we can denote
> ab ac ad ae bc bd be cd ce de.
>
> So I can go
>
> foreach v in ab ac ad ae bc bd be cd ce de {
> gen `v' = .
> }
>
> and then some code to get all the correlations
> from all pairs of variables, all years and months
> might look like this, but this isn't tested:
>
> tokenize "a b c d e"
> qui forval i = 1/4 {
> forval j = 2/5 {
> forval y = 1988/2003 {
> forval m = 1/12 {
> corr ``i'' ``j'' if year == `y'
> & month == `m'
> replace ``i''``j'' = r(rho) if
> year == `y' & month == `m'
> }
> }
> }
> }
>
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/