Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

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

From |
Nick Cox <[email protected]> |

To |
"[email protected]" <[email protected]> |

Subject |
Re: st: Re: How to determine if a variable is a dummy in mata |

Date |
Sun, 17 Nov 2013 17:16:44 +0000 |

Compared with your original question, being able to check Stata variables for being dummy (indicator) within Stata appears to be of interest here. Given -findname- (SJ) findname, all(inlist(@, 0, 1)) finds all dummy variables and leaves their names in r(varlist). Without -findname-, this would work: local dummies foreach v of var * { capture assert `v' == 0 | `v' == 1 if _rc == 0 local dummies `dummies' `v' } If missings are possible, logical tests should be modified appropriately You appear to add an extra condition, that both values of 0 and 1 occur at least once. That's not part of the definition and wasn't part of your original question. There are various ways of tackling that. Here is one: local dummies foreach v of var * { capture assert `v' == 0 | `v' == 1 if _rc == 0 { su `v', meanonly if r(mean) > 0 & r(mean) < 1 local dummies `dummies' `v' } Nick [email protected] On 17 November 2013 16:34, Paul Corral <[email protected]> wrote: > Thank you for the help. I ended up doing the following: > > local words=wordcount("`vars'") > matrix dummy=J(1,`words',0) > > tokenize `vars' > > forvalues x= 1/`words'{ > > capture assert ``x''==1 | ``x''==0 > if _rc==0 { > qui: tab ``x'' > if r(r)==2{ > matrix dummy[1,`x']=1 > } > } > } > Then once in mata I just imported that matrix using st_matrix. > On Sun, Nov 17, 2013 at 6:01 AM, Nick Cox <[email protected]> wrote: >> (2) better as >> >> : all((x :== 0) :| (x :== 1)) >> Nick >> [email protected] >> >> >> On 17 November 2013 10:09, Nick Cox <[email protected]> wrote: >>> Here are some other solutions. >>> >>> (1) >>> >>> Only for 0 and 1 is a number equal to its own square. Hence >>> >>> : x = (0,0,0,0,1,1,1) >>> >>> : x == x:^2 >>> 1 >>> >>> A graph such as >>> >>> twoway function x^2, ra(-3 3) || function x, ra(-3 3) >>> >>> may help make this vivid. >>> >>> (2) >>> >>> sum((x :== 0) :| (x :== 1)) == length(x) >>> >>> Nick >>> [email protected] >>> >>> On 17 November 2013 05:30, Joseph Coveney <[email protected]> wrote: >>>> Paul Corral wrote: >>>> >>>> I'm been trying to determine if a variable is a dummy or not within mata. >>>> >>>> Is there an easy way to do this without iterating over each row of a >>>> matrix's column and check if it is either 0 or 1. I was trying to use >>>> the allof() command, however it can only check if all are a scalar. >>>> So, while I may check if all are ones, it won't allow me to check if >>>> all are 0 or 1. >>>> >>>> -------------------------------------------------------------------------------- >>>> >>>> Something like that below should work. If you don't like the verbosity, you can >>>> condense it all to a single line of code, although it might make it difficult to >>>> follow. >>>> >>>> Other ways come to mind to accomplish the same thing, for example, to covert the >>>> column to text and then use a string search (glance through Mata's string >>>> functions for guidance) for characters other than "0" and "1". Some of them >>>> might be more efficient, too. >>>> >>>> Joseph Coveney >>>> >>>> : mata set matastrict on >>>> >>>> : >>>> : real scalar function indicator( >>>>> real matrix TestedMatrix, >>>>> real scalar tested_column_index) { >>>>> >>>>> real colvector TestedColumn >>>>> TestedColumn = TestedMatrix[., tested_column_index] >>>>> >>>>> TestedColumn = uniqrows(TestedColumn) >>>>> >>>>> real scalar result >>>>> result = ( >>>>> (TestedColumn[1] == 0) && >>>>> (TestedColumn[2] == 1) && >>>>> (rows(TestedColumn) == 2) >>>>> ) >>>>> >>>>> return(result) >>>>> } >>>> >>>> : >>>> : A = (0, 1, 2, 3 \ 1, 4, 5, 6 \ 0, 7, 8, 9) >>>> >>>> : >>>> : indicator(A, 1) >>>> 1 >>>> >>>> : indicator(A, 2) >>>> 0 >>>> >>>> : >>>> : A = A \ (10, 11, 12, 13) >>>> >>>> : >>>> : indicator(A, 1) >>>> 0 >>>> >>>> : >>>> : end * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/

**References**:**st: How to determine if a variable is a dummy in mata***From:*Paul Corral <[email protected]>

**st: Re: How to determine if a variable is a dummy in mata***From:*"Joseph Coveney" <[email protected]>

**Re: st: Re: How to determine if a variable is a dummy in mata***From:*Nick Cox <[email protected]>

**Re: st: Re: How to determine if a variable is a dummy in mata***From:*Nick Cox <[email protected]>

**Re: st: Re: How to determine if a variable is a dummy in mata***From:*Paul Corral <[email protected]>

- Prev by Date:
**Re: st: Re: How to determine if a variable is a dummy in mata** - Next by Date:
**re: re: st: How to test for heteroscedasticity with mediation model** - Previous by thread:
**Re: st: Re: How to determine if a variable is a dummy in mata** - Next by thread:
**st: Need help using global macros** - Index(es):