Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: RE: How to pass scalar argument to a function's options (-prvalue- in this case)


From   Richard Herron <richard.c.herron@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: RE: How to pass scalar argument to a function's options (-prvalue- in this case)
Date   Mon, 19 Dec 2011 12:44:48 -0500

Thanks, Nick, for several lessons. Both of your suggestions work
(i.e., forcing evaluation with `= ' and skipping the -scalar- step)
and I will paste both versions below.

Re installing -prvalue-, I am still confused. The only way I can
install is -findit prvalue- (i.e., -ssc install st0094-, -ssc install
spost-, -ssc install prvalue-, -net install st0094-, and other
variants fail). Maybe I should give up on resolving blind spots?

* begin working code with two solutions
sysuse auto, clear
generate log_weight = log(weight)
generate price_dummy = (price > 10000)
probit price_dummy log_weight mpg length

* evaluate the scalar with `= '
summarize weight, meanonly
scalar log_mean_weight = log(r(mean))
prvalue, x(log_weight = `=log_mean_weight')

* with `= ' I can skip the scalar altogether
summarize weight, meanonly
prvalue, x(log_weight = `=log(r(mean))')
* end code

On Mon, Dec 19, 2011 at 12:23, Nick Cox <n.j.cox@durham.ac.uk> wrote:
> In addition, -prvalue- is a command (not a function).
>
> Nick
> n.j.cox@durham.ac.uk
>
> -prvalue- is a user-written command from wherever you downloaded it from. Please remember that you are asked to explain this. Giving authors is not what is asked for: the ideal is that people can immediately download from the same place for themselves.
>
> I don't know the insides or even outsides of -prvalue-, but I'd guess what you want is this.
>
> I don't think the issue is whether you understand scalars, but rather that you are expecting -prvalue- to understand that a particular name is a scalar name. I don't think that a typical program will do that amount of work for you in deciphering option arguments. In any case, if -prvalue- wants a value, passing it a name is at best indirect. The error message clearly implies that -prvalue- wants to feed on a number, not a name.
>
> Instead of
>
> summarize weight, meanonly
> scalar log_mean_weight = log(r(mean))
> prvalue, x(log_weight = log_mean_weight)
>
> try
>
> summarize weight, meanonly
> prvalue, x(log_weight = `=log(r(mean))')
>
> The framing `=  ' obliges Stata to evaluate its argument and pass it to -prvalue- as a numeric result.
>
> It's possible that wrapping the argument in -scalar()- would help, but as above using a scalar as intermediary seems unnecessary here.
>
> I've given up hoping that I have no Stata blindspots left.
>
> Nick
> n.j.cox@durham.ac.uk
>
> Richard Herron
>
> I think this is a gross conceptual error I have in how Stata uses
> scalars, but I have an example using Long and Xu's -prvalue-.
>
> I would like to evaluate a -probit- model with a logged right hand
> side variable at the "log of the mean" instead of at the "mean of the
> log." I find the mean with -summarize- then store the log with
> -scalar-, but when I pass -log_mean_weight- as an argument to the
> -x()- option in -prvalue- I get the following error
>
> 'log_mean_weight' found where number expected
>
> Here is some reproducible code
>
> * begin code
> sysuse auto, clear
> generate log_weight = log(weight)
> generate price_dummy = (price > 10000)
> probit price_dummy log_weight mpg length
>
> * I would like to determine probability at the log of mean weight
> summarize weight, meanonly
> scalar log_mean_weight = log(r(mean))
> prvalue, x(log_weight = log_mean_weight)
> * end code
>
> I have also unsuccessfully tried to use a -tempname- instead of
> -scalar-, but in that case -prvalue- returns
>
> '__000000' found where number expected
>
> Thanks! I think (well, hope) that this scalar problem is my last major
> Stata blind spot.
>
> *
> *   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/


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