I am working with adminstrative data to compare hospital admission rates across 177 hospitals using hierarchical logistic regression. I have calculated predicted and expected probabilities of hospital admission which gives me the risk-adjusted admission ratio for each of the hospitals. I am now trying to bootstrap 95% confidence intervals for each of the PE ratios, but am encountering some problems.
In the code below, the program I have created for the -bootstrap- comamnd does create 95%CI for each hospital; however it is using information from the entire dataset instead of only information from each hospital individually. I would like that each loop only used the data available from each hospital, instead of the entire dataset. I believe this is the right way to generate the confidence intervals for this type of analysis that I'm running (if anybody has a different view on this, please feel free to comment here as well)
Any help/advice is greatly appreciated.
Code:
quietly { * Synthetic dataset that is similar to the actual data webuse bangladesh, clear rename (c_use age urban child3 district) (sex age_c language_english ATS_urgent hospital_encoded) drop child1 child2 children generate type_LBP = round(runiform() * 2) generate arrival_ambulance = round(runiform() * 2) generate afterhours = round(runiform() * 2) generate admitted = round(runiform() * 2) summarize } quietly { * Make a program that runs the analysis for a single hospital. cls capture program drop bsprog program define bsprog, rclass syntax [, hospNum(integer 1)] *Hierarchical regression melogit admitted i.sex age_c i.language_english i.ATS_urgent ib(last).type_LBP i.arrival_ambulance ib(last).afterhours || hospital_encoded:, or capture drop predicted p_admission expected e_admission ratioPtoE *Predicted predict predicted, mu bysort hospital_encoded: egen p_admission = total(predicted) *Expected predict expected, mu conditional(fixedonly) bysort hospital_encoded: egen e_admission = total(expected) *Ratio generate ratioPtoE = p_admission / e_admission if hospital_encoded == `hospNum' sum ratioPtoE return scalar PEratio = r(mean) end } quietly { ** Set up variables to obtain bootstrap CIs for the estimate from each hospital. generate hospNum = . generate ratio = . generate paramLCL = . generate paramUCL = . generate percentLCL = . generate percentUCL = . local row = 1 } ** Obtain bootstrap CIs for the estimate from each hospital. foreach hospNum of numlist 1/5 { replace hospNum = `hospNum' in `row' display as text _n "For hospital number " `hospNum' " ..." bootstrap r(PEratio), reps(10) seed(448864) cluster(hospital_encoded) idcluster(hospitals) nodots: bsprog, hospNum(`hospNum') replace ratio = r(table)[1,1] in `row' replace paramLCL = r(table)[5,1] in `row' replace paramUCL = r(table)[6,1] in `row' matrix list e(ci_percentile) replace percentLCL = e(ci_percentile)[1,1] in `row' replace percentUCL = e(ci_percentile)[2,1] in `row' local row = `row' + 1 } local row = `row' - 1 order hospNum ratio param* percent*, last list hospNum ratio param* percent* in 1/`row'
0 Response to Dropping data during while bootstrapping 95%CI using foreach loops
Post a Comment