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]

st: RE: RE: generate rolling proportions with foreach using an MI dataset


From   Tim Evans <[email protected]>
To   "'[email protected]'" <[email protected]>
Subject   st: RE: RE: generate rolling proportions with foreach using an MI dataset
Date   Wed, 2 Nov 2011 14:06:26 +0000

Hi Nick, Maarten,

Thanks for your comments, I was just about to post back saying I had a solution. The problem I have with the inrange() and removing over() options is that when the results are returned, they are poorly labelled so its hard to know which is which (OK you can guess that first table relates to the first period, but its not clear). So when I removed the over() option I inserted text for each rolling proportion to allow me to see which was which:

forvalues startyear=1985(1)2005 {
di as text "`startyear'" "-" "`startyear'+4"
mim: proportion grade if _mj>0 & inrange(yydx,`startyear',`startyear'+4):
}

Best wishes

Tim


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Nick Cox
Sent: 02 November 2011 13:27
To: '[email protected]'
Subject: st: RE: generate rolling proportions with foreach using an MI dataset

The -over()- option of -proportion- expects a varlist, namely variable name(s). 1985 is not a variable name. This is nothing to do with imputation, looping or rolling. The error message points directly to the error. 

But I don't see that you need to specify -over()- at all. Your -inrange()- option is designed to give you rolling. 

Nick 
[email protected] 

Tim Evans

I am trying to obtain proportions of a variable over time using an MI dataset in Stata 11.2, this I achieve using:


mim: proportion stage if _mj>0, over(year)

However, each single year does not contain as many cases as I would like, so I would like to combine 5 years of data for eahc data point like:

1985-1989
1986-1990
1987-1991
1988-1992

and so on. I've tried to do this with a foreach loop but cant seem to get it to work, I'd appreciate any advice.

Current code:

forvalues startyear=1985(1)2005 {
mim: proportion stage if _mj>0 & inrange(year,`startyear',`startyear'+4), over(`startyear')

}

This is the output:

. forvalues startyear=1985(1)2005 {
  2. mim: proportion stage if _mj>0 & inrange(year,`startyear',`startyear'+4), over(`startyear')
  3. 
. }
[note: using ice-style format variables _mi and _mj]
-> _mj==1
-> proportion stage if _mj>0 & inrange(year,1985,1985+4), over(1985)
1985 invalid name
invalid over() option
r(198);

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

_DISCLAIMER:
This email and any attachments hereto contains proprietary information, some or all of which may be confidential or legally privileged. It is for the exclusive use of the intended recipient(s) only. If an addressing or transmission error has misdirected this e-mail and you are not the intended recipient(s), please notify the author by replying to this e-mail. If you are not the intended recipient you must not use, disclose, distribute, copy, print, or rely on this e-mail or any attachments, as this may be unlawful.


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