I recently discovered a nice feature of the user contributed -rangestat-: one can use it as a wrapper/executer/(executioner?) of Mata functions. I was wondering whether there is any other wrapper that can do this? Stata's native -statsby- cannot do it.
Example of what I have in mind is the following code:
Code:
. webuse nlswork, clear
(National Longitudinal Survey. Young Women 14-26 years of age in 1968)
. mata:
------------------------------------------------- mata (type end to exit) --------------------------------
: mata clear
: real rowvector mymean(real colvector X) {
> return(mean(X))
> }
: end
----------------------------------------------------------------------------------------------------------
. rangestat (mymean) ln_wage, interval(ln_wage . .) by(id)
.
. egen mean = mean(ln_wage), by(id)
.
. summ mymean mean
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
mymean1 | 28,534 1.674907 .3780522 0 3.912023
mean | 28,534 1.674907 .3780522 0 3.912023
.1. I seem to be misusing the command a bit, it does not seem to be intended for this purpose, as it requires the -, interval()- option, and I am sort of overriding this.
2. In other tests unreported here, I found this solution involving -rangestat- to be substantially slower than an explicit loop in which the Mata function is embedded, of the sort that Daniel Klein shows in #3, or Leonardo Guizzetti shows in #2 on this thread here: https://www.statalist.org/forums/for...d-of-a-command
In short, is there no any other wrapper apart from -rangestat- that can run a Mata function by groups? And is there anything that I can do to speed up the execution above using -rangestat-?
0 Response to Is there any other wrapper/executer/(executioner?) apart from -rangestat- that can run Mata functions?
Post a Comment