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]

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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index