Bookmark and Share

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: Mata and do files


From   Nick Cox <[email protected]>
To   [email protected]
Subject   Re: st: Mata and do files
Date   Thu, 11 Aug 2011 01:06:36 +0100

Quite so, and I didn't say otherwise. I am replying to Alex's question
addressed to me of why I recommended that Alex use -tokens()-, which
is explicit below.

I am pointing out that doing without -tokens()- does not work with
10.1, but without experiment I can not be absolutely sure that
-st_view()- is not more indulgent in 11 or 12.

Nick

On Thu, Aug 11, 2011 at 12:57 AM, Tirthankar Chakravarty
<[email protected]> wrote:
> Nick,
>
> That does not appear to be the code I sent to the list in my (Wed, Aug
> 10, 2011 at 2:22 PM) posting. Here it is again:
>
> /******************************/
> sysuse auto, clear
> capture mata mata drop theta()
> mata
> // mata set matastrict on
> mata set matastrict off
>
> // define theta() function
> real scalar theta()
> {
> st_view(a = ., ., tokens("price length weight"))
> a_cov = variance(a)
> a_eigen = symeigensystem(a_cov, X = ., L = .)
> return(L[1]/sum(L))
> }
> theta()
> end
> /******************************/
>
> T
>
> On Wed, Aug 10, 2011 at 4:36 PM, Nick Cox <[email protected]> wrote:
>> I have 12, but it's at my workplace, and I'm not.
>>
>> . sysuse auto
>> (1978 Automobile Data)
>>
>> . mata
>> ------------------------------------------------- mata (type end to exit) -----
>> : st_view(a = ., ., "price length weight")
>> variable price length weight not found
>>               st_view():  3500  invalid Stata variable name
>>                 <istmt>:     -  function returned error
>> r(3500);
>>
>> : end
>> -------------------------------------------------------------------------------
>>
>> . about
>>
>> Stata/SE 10.1 for Windows
>> Born 10 Jun 2010
>>
>>
>> On Thu, Aug 11, 2011 at 12:30 AM, Tirthankar Chakravarty
>> <[email protected]> wrote:
>>> Nick,
>>>
>>> I don't have 12 either. That code was from a fully-updated 11.2.
>>>
>>> However, I have just checked with my 10.1 and it seems to go through
>>> without problems.
>>>
>>> T
>>>
>>> On Wed, Aug 10, 2011 at 3:57 PM, Nick Cox <[email protected]> wrote:
>>>> It didn't work for me in Stata 10.1. (My machine with Stata 12 is a mile away.)
>>>>
>>>> Nick
>>>>
>>>> On Wed, Aug 10, 2011 at 11:46 PM, Alex Olssen <[email protected]> wrote:
>>>>> Thanks for the help!
>>>>>
>>>>> Tirthankar your solution works perfectly - the code works
>>>>> interactively and from a do file.
>>>>>
>>>>> One question though, could you explain to me why I need to turn matastrict off?
>>>>>
>>>>> Nick, you said "price length weight" is not an acceptable argument for
>>>>> -st_view()- however typing the following interactively in a new Stata
>>>>> session suggests otherwise.
>>>>>
>>>>> sysuse auto, clear
>>>>> mata
>>>>> st_view(a=., ., "price length weight")
>>>>> a
>>>>>
>>>>> Am I missing something?
>>>>>
>>>>> Cheers,
>>>>> Alex
>>>>>
>>>>> On 11 August 2011 09:23, Nick Cox <[email protected]> wrote:
>>>>>> "price length weight" is not an acceptable argument for -st_view()-.
>>>>>> You need to tokenize it.
>>>>>>
>>>>>> I imagine that the do-file approach requires you to leave Mata with an
>>>>>> -end- statement.
>>>>>>
>>>>>> Nick
>>>>>>
>>>>>> On Wed, Aug 10, 2011 at 10:14 PM, Alex Olssen <[email protected]> wrote:
>>>>>>> Dear Nick,
>>>>>>>
>>>>>>> You are absolutely correct - it was Statalist.
>>>>>>>
>>>>>>> I am not sure what you mean by "try tokens("price length weight")."
>>>>>>>
>>>>>>> I looked at the help file and then tried the following, which again
>>>>>>> works interactively but not from a do file...
>>>>>>>
>>>>>>> sysuse auto, clear
>>>>>>> mata
>>>>>>> real scalar theta()
>>>>>>> {
>>>>>>> st_view(a = ., ., tokens("price length weight"))
>>>>>>> a_cov = variance(a)
>>>>>>> a_eigen = symeigensystem(a_cov, X = ., L = .)
>>>>>>> return(L[1]/sum(L))
>>>>>>> }
>>>>>>> theta()
>>>>>>>
>>>>>>> Any ideas?
>>>>>>>
>>>>>>> On 10 August 2011 23:54, Nick Cox <[email protected]> wrote:
>>>>>>>> It's not Stata that bounces your emails; it's Statalist!
>>>>>>>>
>>>>>>>> Try
>>>>>>>>
>>>>>>>>  tokens("price length weight")
>>>>>>>>
>>>>>>>> Nick
>>>>>>>>
>>>>>>>> On Wed, Aug 10, 2011 at 12:39 PM, Alex Olssen <[email protected]> wrote:
>>>>>>>>> Hi everyone,
>>>>>>>>>
>>>>>>>>> Apologies to anybody who gets this message twice - I just got an email
>>>>>>>>> from Stata telling me my first message was bounced.  I checked the
>>>>>>>>> archive and it doesn't appear to have arrived correctly.  In any
>>>>>>>>> case...
>>>>>>>>>
>>>>>>>>> I am trying to learn some Mata and am having difficult running Mata
>>>>>>>>> code from a do file.
>>>>>>>>>
>>>>>>>>> For example I can use the following code interactively, but if I try
>>>>>>>>> run it from the do-file editor I get error r(3000).  I have looked
>>>>>>>>> around for an answer in [M] and the Statalist archives to no avail.
>>>>>>>>>
>>>>>>>>> sysuse auto, clear
>>>>>>>>> mata
>>>>>>>>> real scalar theta()
>>>>>>>>> {
>>>>>>>>> st_view(a = ., ., "price length weight")
>>>>>>>>> a_cov = variance(a)
>>>>>>>>> a_eigen = symeigensystem(a_cov, X = ., L = .)
>>>>>>>>> return(L[1]/sum(L))
>>>>>>>>> }
>>>>>>>>> theta()
>>>>>>>>>
>>>>>>>>> Any help would be greatly appreciated.

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


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index