Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: Re: RE: matrix algebra


From   "Michael Blasnik" <[email protected]>
To   <[email protected]>
Subject   st: Re: RE: matrix algebra
Date   Wed, 2 Oct 2002 16:02:05 -0400

Unless I'm misreading what you want, why don't you just use:

 mat accum a1 a2 a3 [aw=e]

or some variant (aw=1/e?) that employs mat accum's weight option.

I think, for your problem's size (n=20,000), Nick's suggested solution
exceeds the limits of even Stata SE (which I think is 11,000 x 11,000 on
matrices).

Michael Blasnik

----- Original Message -----
From: "Nick Cox" <[email protected]>
To: <[email protected]>
Sent: Wednesday, October 02, 2002 2:38 PM
Subject: st: RE: matrix algebra


> Alfonso Miranda
> >
> > I need to calculate a matrix product that has the following form
> >
> > B = G'YG
> >
> > where G is a n x k matrix and Y is a n x n diagonal matrix.
> > My problem is:
> >
> > (a) G should be formed with information for some variables,
> > say, a1 a2 a3. I
> > have n observations for each variable.
> >
> > (a) I have the information of the diagonal of Y in variable
> > called e. So I
> > need to use e to create matrix Y.
> >
> > (b) n is very large (more than 20,000 observations) so it
> > is imposible to
> > create a nxn diagonal matrix  with elements in the diagonal
> > entries in e.
> >
> > I guess I need to use something like:
> >
> > matrix glsaccum B = a1 a2 a3, glsmat(Y)
> >
> > But first I must define Y. Can anyone help me in this one?
>
> One way to do it
>
> . local n = _N
> . matrix Y = J(`n',`n',0)
> . forval i = 1 / `n' {
> . matrix Y[`i',`i'] = myvar[`i']
> . }
>
> Nick
> [email protected]
> *

*
*   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/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index