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: Replace with returned results in svy loop


From   Richard Williams <richardwilliams.ndu@gmail.com>
To   statalist@hsphsun2.harvard.edu, statalist@hsphsun2.harvard.edu
Subject   Re: st: Replace with returned results in svy loop
Date   Sun, 29 May 2011 19:42:42 -0500

First off, you may not have e(mean), but you do have the matrix e(b), which contains the mean of your variable. Sometimes you have to do something like

mat list e(b)

to see where values are stored. ereturn list doesn't show you what values are stored in the matrices.

As for how to handle missing data, I suggest taking a look at Paul Allison's small book, "Missing Data," and reading through the Stata 11 documentation on multiple imputation. Others who are more familiar with these methods can perhaps advise you further.


At 06:27 PM 5/29/2011, Kate Schneider wrote:
Thanks so much Richard,

We are trying to monetize own consumption of food items, so the mean
we are calculating is the average price reported by households who
bought the food and we want to apply this to the missing data.
Observations are missing where households ate food they produced
themselves or did not report the price they paid for the item if they
bought it.

Is there a better way you recommend attributing these prices to the
cases where we don't have a value? We were previously manually keeping
track of the mean prices and then manually telling stata to replace
(for example) price_eggs == $1 if price_eggs==. We are trying to avoid
manually going between excel and stata, thinking that it would be more
valid to have stata do all of this for us.

The other approach we were considering would be to create a new
variable where every observation of eggs get the mean egg price value,
and then when we calculate the total value of egg consumption to
specify drawing from the reported price if not missing, and if missing
use the new value. Does that sound like a more valid approach?
Regardless when we use ereturn list, there isn't a scalar listed for
our mean. We tried e(mean), but it returned an error. Do we have to
tell stata to store e(mean) before our svy: mean calculation?

The other thing we should specify is that our data is hierarchical
with 2 unique identifiers, a household ID and an id for each of the 65
different food items. We are trying to value total consumption per
food item and also per household. We thought about collapsing food
items to their mean price, but thought that probably wouldn't apply
our survey weights (though perhaps stata is smarter than we are?).

Thanks so much for your assistance, we are really grateful!

Kate

On Sun, May 29, 2011 at 5:11 PM, Richard Williams
<richardwilliams.ndu@gmail.com> wrote:
> If in doubt where a value is stored, type -ereturn list- after the
> estimation command. After -mean-, e(b) has the mean of the variable. So, to
> get the mean stored in a scalar, do something like
>
> webuse nhanes2f, clear
> svy: mean houssiz
> mat varmean = e(b)
> scalar vmean = varmean[1,1]
>
> Having said that, substituting the mean for missing data is generally not
> considered the best practice in the world. And, there may be other errors in
> your code (e.g. the == in the replace command looks wrong) but I imagine
> those will become obvious once you tidy other things up.
>
> At 03:11 PM 5/29/2011, Kate Schneider wrote:
>>
>> Hello,
>> Sorr to bug everyone on a holiday weekend, but we're a graduate
>> student research group at the University of Washington working with a
>> large household survey dataset and have come up against some trouble.
>>
>> We're trying to replace missing values of a variable with the results
>> of some other operation we've just performed (basically, a mean).
>> Right now, we're having trouble with the replace component of the
>> below operation. Does anyone know how torecall the previous command's
>> results from the svy calculation and use that data to replace missing
>> in a loop?  Is this possible with survey data?
>>
>> foreach X of varlist $fooditemall {
>> quietly count if `X'==1 & priceperkilo !=.
>>  if `r(N)'>0 {
>>  display "Variable is: " "`X'"
>>  svy, subpop(`X'): mean priceperkilo
>>  }
>> quietly count if `X'==1 & priceperkilo ==.
>>  if `r(N)'>0 {
>>  replace priceperkilo == e(????) if `X'==1 & priceperkilo ==.
>>  }
>> }
>>
>> Thanks for your insight!  If you need more information please let me know.
>> Kate
>>
>> *
>> *   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/
>
> -------------------------------------------
> Richard Williams, Notre Dame Dept of Sociology
> OFFICE: (574)631-6668, (574)631-6463
> HOME:   (574)289-5227
> EMAIL:  Richard.A.Williams.5@ND.Edu
> WWW:    http://www.nd.edu/~rwilliam
>
> *
> *   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/

-------------------------------------------
Richard Williams, Notre Dame Dept of Sociology
OFFICE: (574)631-6668, (574)631-6463
HOME:   (574)289-5227
EMAIL:  Richard.A.Williams.5@ND.Edu
WWW:    http://www.nd.edu/~rwilliam

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