Transcript 1249-Law-_b
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
[email protected]
@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;