[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"Jiang, Tao" <TJiang@air.org> |

To |
"'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: matrix programming problem |

Date |
Fri, 22 Nov 2002 16:10:23 -0500 |

if you expand your matrix production, you can see that: M[i] = A[i]*Sigma*A[i]'=(a,b\c,d), where for example, a=(a11x1[i]+a12x2[i])x1[i]+(a12x1[i]+a22x2[i])x2[i] so the determinant is ad-bc so I'd do: gen double a = (a11*x1+a12*x2)*x1+(a12*x1+a22*x2)*x2 do similar for b, c, and d and then gen double y = a*d-b*c -----Original Message----- From: Hung-Jen Wang [mailto:hjwang@econ.sinica.edu.tw] Sent: Friday, November 22, 2002 12:49 PM To: statalist@hsphsun2.harvard.edu Subject: st: matrix programming problem Hi, Suppose I have a dataset of m observations and three variables x1, x2, and x3. I need to create a new variable y in such a way that, for each of the ith observation of y, i=1,2,..m, the value of y[i] is the determinant of the following 2x2 matrix M[i]: M[i] = A[i]*Sigma*A[i]' where A[i] is a 2x2 symmetric matrix taking values from x1 to x3: A[i]= x1[i], x2[i] x2[i], x3[i] and Sigma is a 2x2 symmetric matrix of constant elements: Sigma = a11, a12 a12, a22 My question: What is the most efficient way (fast code) to do the calculation. I looked at -mat accum-, -mat glsaccm-, and -mat vecaccum-, but do not see how they can be applied here. Currently, I loop over the observations to create the matrix and the determinant. It is, however, quit slow. Any suggestion that help speed up the computation will be appreciated! HJW ps. matsize or computer memory will not be a constraint for me. -------------- slow code begin ------ mat Sigma = (2, 1 \ 1, 3) /* an arbitrary example */ quie gen double y = . forvalues k = 1/n { /* n is the total number of observations */ mat Amat = (x1[`k'], x2[`k'] \ x2[`k'], x3[`k']) mat Mmat = Amat*Sigma*Amat /* a 2x2 matrix */ quie replace y = det(Mmat) in `k'/`k' } -------------- slow code end ------- * * 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/ * * 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/

- Prev by Date:
**st: Typo in integral discussion** - Next by Date:
**st: RE: integrals - correction!** - Previous by thread:
**st: Typo in integral discussion** - Next by thread:
**st: RE: matrix programming problem** - Index(es):

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