[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
"Austin Nichols" <austinnichols@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: re: matrix manipulation |

Date |
Fri, 12 Dec 2008 10:42:19 -0500 |

Or in one line: sysuse auto,clear qui reg price trunk weight length turn mata:st_matrix("C",(st_matrix("e(V)"):<1000):*(st_matrix("e(V)"):^ -1):*(J(5,5,1)-I(5))) note that each 5 could be replaced with rows(st_matrix("e(V)")) for generality, but then the line would get really long. On Fri, Dec 12, 2008 at 10:35 AM, Kit Baum <baum@bc.edu> wrote: > <> > The following will do these three things. _underbar_ is a Mata function > being defined in the code below. Note that one of the diagonal elements > should fall under the threshold of 10, but it is being zapped within the for > loop. > > --------------------- > mata: mata clear > mata: > void underbar(string scalar mat, > real scalar thresh) > { > real matrix B > real scalar i > B = (st_matrix(mat) :< thresh) :/ st_matrix(mat) > for(i=1; i<=rows(B); i++) { > B[i,i] = 0 > } > st_matrix("B", B) > } > end > > sysuse auto,clear > qui reg price trunk weight length turn > mat list e(V) > mata: underbar("e(V)", 10) > mat list B > ------------------------ > > You might want to see my FNASUG or UKSUG slideshow on Stata programming with > Mata, available from my IDEAS page below, regarding use of the colon > operator (:< or :/ above) or the st_* functions. > > > Kit Baum, Boston College Economics and DIW Berlin > http://ideas.repec.org/e/pba1.html > An Introduction to Modern Econometrics Using Stata: > http://www.stata-press.com/books/imeus.html > > > On Dec 12, 2008, at 09:50 , Susan Olivia wrote: > >> Thanks for the tips, Kit. I would like to use this opportunity to ask 3 >> follow up questions: >> >> 1) For each cell (i,j) of matrix B, I would like to replace its value with >> 1/(A[ij]) instead of dummy [0 1] as in before. In other words, matrix B[i,j] >> = 1/A[i,j] if A[i,j] < THRESHOLD. I seem having problem in doing this. >> >> 2) The syntax you suggested "underbar", I seem couldn't find this entry in >> the STATA manual. Can you please explain what is this doing? Perhaps once I >> know what "underbar" is really doing, I can tackle #1. >> >> 3) Also, when the threshold condition met, the diagonal element of matrix >> B is replaced to 1 or 1/aij. Ideally, I want the diagonal element to be >> zero. Is there an efficient way to do this? What I currently do is transform >> the matrix into variables and use the loop to change the diagonal element >> and then transform the variables into the matrix. I.e. >> >> svmat B >> >> local i=1 >> while `i'<=_N { >> qui recode B`i' 1=0 in `i' >> local i=`i'+1 >> } >> >> mkmat B*, matrix(B) >> >> >> Thanks in advance for any programming tips. >> >> Cheers, >> >> Susan >> >> On Thu, Dec 11, 2008 at 8:00 AM, Kit Baum <baum@bc.edu> wrote: >> <> >> Susan said >> >> I would like to create a binary matrix (say matrix B) using >> the existing information from current matrix A. >> >> Specifically, for each cell (i,j) of matrix B, I want to >> replace its value with 1 if the value of the corresponding >> cell (i,j) of matrix A is less than the specified threshold >> value. In other words, matrix B[i,j] = 1 if A[i,j] < >> THRESHOLD. >> >> >> No subscripting required: >> >> -------------------------------- >> mata: mata clear >> mata: >> void underbar(string scalar mat, >> real scalar thresh) >> { >> st_matrix("B", (st_matrix(mat) :< thresh)) >> } >> end >> >> sysuse auto,clear >> qui reg price trunk weight length turn >> mat list e(V) >> mata: underbar("e(V)",0.0001) >> mat list B >> ----------------------------------- >> >> You could pass the name of the result matrix to Mata as well if you wanted >> this to be a bit more general. >> >> Kit Baum, Boston College Economics and DIW Berlin >> http://ideas.repec.org/e/pba1.html >> An Introduction to Modern Econometrics Using Stata: >> http://www.stata-press.com/books/imeus.html >> >> >> * >> * For searches and help try: >> * http://www.stata.com/help.cgi?search >> * http://www.stata.com/support/statalist/faq >> * http://www.ats.ucla.edu/stat/stata/ >> > > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/statalist/faq > * http://www.ats.ucla.edu/stat/stata/ > * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: re: matrix manipulation***From:*Kit Baum <baum@bc.edu>

**Re: st: re: matrix manipulation***From:*Kit Baum <baum@bc.edu>

- Prev by Date:
**Re: st: re: matrix manipulation** - Next by Date:
**st: re: matrix manipulation** - Previous by thread:
**Re: st: re: matrix manipulation** - Next by thread:
**st: re: matrix manipulation** - Index(es):

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