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]
Re: st: Calculating confidence intervals for the ratio of stratified standardised mortality rates
From
Steve Samuels <[email protected]>
To
[email protected]
Subject
Re: st: Calculating confidence intervals for the ratio of stratified standardised mortality rates
Date
Fri, 8 Nov 2013 20:32:47 -0500
Here's the Mata version after all. It requires only two
-dstdize- calls and will produce the rate
ratio and CI for any number of categories.
************************************
forvalues i = 1/2 {
dstdize ... by(all_data) using(), ///
if time==`i'
mata: a`i' = st_matrix("r(adj)")
mata: s`i' = st_matrix("r(se)")
}
mata:
ratio = a1:/a2
lr = log(ratio)
slr = ///
sqrt((s1:/a1):*(s1:/a1) +(s2:/a2):*(s2:/a2))
z = ///
-invnormal((100 -st_numscalar("c(level)"))/200)
lower = exp(lr - z:*slr)
upper = exp(lr + z:*slr)
d=(ratio \ lower \ upper)'
end
clear
getmata (ratio lower upper) = d
gen nstate=_n
do nlabel // redo label define
label values nstate nstate
format ratio lower upper %8.3f
list nstate ratio lower upper
save results, replace
*********************************.
> The proper term for your rates are "directly standardized rates"
> "Stratified" is implied and also applies to indirect standardization.
>
> Your question isn't quite clear, but I assume that you mean that you
> want a comparison of the two time periods for each category of
> "all_data". Here is code for a single category of all_data. You can
> get results for all categories with a -foreach- or -forvalues- loop.
>
> ******************************************
> dstdize ... if all_data==1, by(time) using...
>
> matrix a = r(adj)
> matrix s = r(se)
> scalar ratio = a[1,1]/a[1,2]
> scalar slr =
> sqrt((s[1,1]/a[1,1])^2 + (s[1,2]/a[1,2])^2)
> scalar bound =
> -slr*invnorm((1 -c(level)/100)/2)
> scalar upper = exp(log(ratio) + bound)
> scalar lower = exp(log(ratio) -bound)
> scalar list ratio lower upper
> ******************************************
>
> The formula for the log scale SE (slr) is based on the large sample
> result that for an estimate R the delta method estimate of variance is:
>
> var (log W)≈ var(W)/W
>
> The formula applies to each component of the log ratio, since they are
> independent.
>
> log ratio = log(adj rate 1) - log(adj rate 2)
>
> I also have a Mata-based solution that is likely faster if you have a
> lot of all_data categories and that puts the results into a data set.
> It's a bit too long to list here. If you'd like to see it, join
> stackoverflow.com and ask your question in the Stata area
> http://stackoverflow.com/questions/tagged/stata.
>
> Steve
>
On Nov 7, 2013, at 9:08 AM, Paul Mee wrote:
>
> All
>
> Apologies if this is a rather naive question but I hope someone can help me.
>
> I have been calculating age/sex standardised mortality rates stratified by geographical areas I used dstdize for this in stata and it worked fine and gave me the standardised rates and importantly confidence intervals which I extracted from the relevant macros/matrices . For reference this is the command I used
>
> dstdize total_hiv_tb_death population adj_cat, by(all_data) ///
> using("C:\work\Research\Analysis\Paper1_mortality\stata\rates\std_pop_09_10.dta") level(90)
>
> No I need to calculate the ratio between the standardised mortality rates in two time periods (i.e. from different separate dstdize commands ) and calculate confidence intervals for these mortality rate ratios .
>
> Any help with how to do this in stata would be very much appreciated.
>
> Paul
>
> [email protected]
>
>
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/