Longitudinal Methods for Pharmaceutical Policy Evaluation Common Analytic Approaches Michael Law The Centre for Health Services and Policy Research The University of British Columbia Vancouver, Canada Objectives Discuss two longitudinal methods – Interrupted Time Series – Survival analysis For each, I will briefly cover – The data required – Modeling techniques and software The key messages • If you plan in advance, you can collect the right data • There are multiple data sources that work – includes sales data, insurance claims data, hospital data and sample-based data • Statistical methods are more sophisticated, but not impossible Percetnage of Patients Using Medicine 90% 80% Higher Drug Co-payment 70% 60% 50% 40% 30% 20% 10% 0% 2010 2011 Percentage of Patients Using Medicine 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% Higher Drug Co-payment Percentage of Patients Using Medicine 90% 80% 70% 60% 50% 40% 30% 20% Higher Drug Co-payment 10% 0% 2010 2011 Region 1 Region 2 Percentage of Patients Using Medicine 90% 80% 70% 60% 50% 40% 30% 20% Higher Drug Co-payment 10% 0% 2010 2011 Region 1 Region 2 Interrupted Time Series Basic Design – Compare longitudinal trends before and after the policy change – Good for sharply-defined interventions Major Assumption – The trend in the outcome among those exposed to the policy would have been the same absent the policy Outcome of Interest Intervention Slope Change Level Change Observed Pre-intervention Adapted from Schneeweiss et al, Health Policy 2001 Post-intervention Time Source: Tamblyn et al. JAMA 2001;285:421-429. ITS with Control Series • Estimate of counterfactual becomes the observation of what happened in the control group • Control group adds further legitimacy by limiting effect of possible history threats • Can be an unaffected group, another jurisdiction, etc. 20 01 , 20 2 01 ,3 20 01 , 20 4 02 , 20 1 02 , 20 2 02 , 20 3 02 ,4 20 03 , 20 1 03 , 20 2 03 , 20 3 03 , 20 4 04 ,1 20 04 , 20 2 04 , 20 3 04 , 20 4 05 , 20 1 05 ,2 20 05 , 20 3 05 ,4 Market Share of Non-Preferred Agents 20% 10% Policy Implementation 60% 50% 40% 30% 0% Quarter West Virginia Control States (n=38) Source: Law et al. Psychiatric Services. 2008 Strengths of Time Series • Easy to show results graphically • More robust to secular trends • Less difficult to estimate and communicate than other methods – E.g. propensity score matching, instrumental variables estimates • Null results are more convincing Problems with Time Series • • • • Requires reasonably stable data Can be biased by co-interventions Need longer-term data Linear trend might not be realistic Data setup for ITS • Need: Time, population-level outcomes Observation Time Outcome Post Post_Time 1 1 45.3 0 0 2 2 54.2 0 0 3 3 47.5 0 0 4 4 56.3 0 0 5 5 52.3 1 1 6 6 48.6 1 2 7 7 50.2 1 3 8 8 46.2 1 4 Statistical Modeling • Statistical Model: segmented regression Outcomet=β1+β1timet+β1policyt+β1timetpolicyt+ε • Should Account for autocorrelation – The tendency for subsequent values to be related Individual-level ITS • You can use data at the individual level – Means collecting each outcome for each person at each time • Requires using more sophisticated mixed model (e.g. logistic or poisson type GEE) • Provides more power, requires more statistical skill Survival Analysis • Method of studying longitudinal data on the occurrence of events • Also known as “time to event” studies • For example: – time until discontinuation – time until drug dispensing When to use SA • Time to event outcomes • Data at the patient-level • Time to anything (death, expenditure threshold, etc.) Who to compare to? • Two basic options: – Pre-post analysis of the same population • For example, people who initiate a particular class of medication – Concurrent analysis of those subject to and not subject to a policy • For example, individuals in another jurisdiction • Be wary of potential biases Data setup • You need the following variables to perform a survival analysis: – Censoring: 0 if event did not occur, 1 if the event did occur – Time to event: the number of time periods (e.g. days) before the event or censoring took place – Any control variables 4 X O 3 X 2 1 X 0 1 2 3 4 5 Person Survival Time Event 4 3 1 3 5 0 2 4 1 1 6 1 6 7 8 Kaplan-Meier Analysis • Non-parametric estimate of survival function • Commonly used as descriptive statistic and for figures in manuscripts • Requires categorical variables for including other variables Cox Proportional Hazards • Method for fitting a survival model • Compares hazard rates (the instantaneous probability of failure) between different groups • Assumes hazard functions are proportional to one another Key Points • Longitudinal designs make your study – More convincing – More publishable – You can do this based on your data • However, you need to plan for data collection from the start to ensure you get the necessary data Thank you Questions? Michael R. Law mlaw@chspr.ubc.ca @Michael_R_Law Further Reading • Interrupted Time Series – A.K. Wagner et al., “Segmented regression analysis of interrupted time series studies in medication use research,” Journal of Clinical Pharmacy and Therapeutics 27, no. 4 (2002): 299-309. • Survival Analysis – Paul Alison. Survival Analysis Using SAS: A Practical Guide. 2010. Cary, NC: The SAS Institute. – John Fox. Introduction to Survival Analysis. http://socserv.mcmaster.ca/jfox/Courses/soc761/survi val-analysis.pdf Time Series Example Code R library (nlme) itsmodel <- gls(model=outcome ~ trend + post + post_time, data=timeseries, correlation=corARMA(p=1, form=~trend), method=“ML”) SAS proc autoreg data=timeseries; model outcome = time post post_time / method=ml nlag=(1 2 3) backstep; run; Example code: Kaplan-Meier R fit<-survfit(formula = Surv(time, censor)~variable, data = survivaldata) plot(fit, xlab="Time", ylab="Survival Probability", col = c("blue","red")) SAS Proc lifetest data=survivaldata plots=(s); time time*censor; strata variable; run; Example code: Cox P-H R library(survival) survmodel <- coxph(Surv(time,censor) ~ variable, data=survivaldata) summary(survmodel) SAS Proc phreg data=survivaldata; model time*censor(0) = variable /rl ties=exact; run;