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]
Re: st: Re: Mata programming questions; STATA 12 (referencing to columns using stringnames)
From
"J. J. W." <[email protected]>
To
[email protected]
Subject
Re: st: Re: Mata programming questions; STATA 12 (referencing to columns using stringnames)
Date
Thu, 26 Sep 2013 08:11:20 +0200
Dear Joseph,
wow, thank you for the explanation! I guess I was looking at the wrong
help files. I indeed want to replicate that effect using variable
names. I would like to have a matrix A like: [[1,2,3], /* group A
*/
[4,5,6]] /* group B
and that I refer to the first row as A[groupA] = [1,2,3]
is this also possible?
Thanks in advance!
Yours sinerely,
Wen Jun Jie
2013/9/26 Joseph Coveney <[email protected]>:
> Wen Jun Jie wrote:
>
> I have a few questions regarding Mata programming in Stata 12. The
> questions are as follows:
>
> - Is it possible to create a matrix that automatically increases in
> size? (i.e. suppose I define a matrix of size 5 x 5, but after a while
> I want a larger matrix, can I increase the size of my current matrix
> without defining a new one or redefining the old one? Can I "just add"
> something?)
>
> - How should I update a value inside a matrix? Suppose the following code:
> matrix define test = J(2,2,.)
> matrix define test[1,1] = 5
>
> This is how I update my matrix, but is this also the "correct" way to do this?
>
> - Last, I would like to ask how the regress function can create
> _beta["varname"] to refer to the coefficients. I would like that too!
> How can I create that?
>
> --------------------------------------------------------------------------------
>
> 1. You can append rows and columns to a matrix in Mata:
>
> : A = 1, 2, 3
>
> : A
> 1 2 3
> +-------------+
> 1 | 1 2 3 |
> +-------------+
>
> : A = A \ 4, 5, 6
>
> : A
> 1 2 3
> +-------------+
> 1 | 1 2 3 |
> 2 | 4 5 6 |
> +-------------+
>
> :
>
> You can also do this noninteractively, say:
>
> void function test() {
> : void function test() {
>> real matrix A
>> A = J(2, 2, 1)
>> A = A \ J(1, cols(A), 2)
>> A
>> }
>
> : test()
> 1 2
> +---------+
> 1 | 1 1 |
> 2 | 1 1 |
> 3 | 2 2 |
> +---------+
>
> :
>
> 2. You can refer to cells on the left-hand side of expressions in Mata:
>
> : A = J(2, 2, .)
>
> : A[1, 1] = 5
>
> : A
> [symmetric]
> 1 2
> +---------+
> 1 | 5 |
> 2 | . . |
> +---------+
>
> :
>
> All of this above is documented in Mata's help files and user manual entries.
> Also, with an easily accessed interactive mode, you can try out various things
> on your own to see whether they work as expected.
>
> 3. Mata doesn't have a -regress()- function. See
> http://www.stata.com/help.cgi?m5_intro
> I assume that you mean the -regress- command in Stata. Given that, I don't
> really understand what you're asking to do. You can refer to the regression
> coefficients as either _b[] or _coef[], where the square brackets contain the
> name of the regression coefficient, which is not necessarily the same as a
> variable name.
>
> . sysuse auto
> (1978 Automobile Data)
>
> . regress gear_ratio c.headroom i.foreign
>
> [regression output omitted]
>
> . display in smcl as text _b[headroom]
> -.10046036
>
> . display in smcl as text _coef[1.foreign]
> .64646458
>
> . display in smcl as text _b[_cons]
> 3.123375
>
> Joseph Coveney
>
> *
> * 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/
*
* 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/