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]

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


From   Nick Cox <n.j.cox@durham.ac.uk>
To   "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu>
Subject   st: RE: How to pass scalar argument to a function's options (-prvalue- in this case)
Date   Mon, 19 Dec 2011 17:23:20 +0000

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/


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