You may get a reply here, but this post belongs on a statistics list
like stats.stackexchange.com, not r-help, which is concerned about R
programming issues rather than statistical methodology.

Cheers,
Bert


Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Mon, Oct 31, 2016 at 5:54 AM, Luke Gaylor <luke.gay...@live.com.au> wrote:
> Friends,
>
>
> Matched pairs studies are well documented, but what happens if we were to 
> alter the manner in which events were paired to one another. Say we change 
> the order of our data and pair without replacement, so that event 1 may pair 
> with event 23 in one instance, but also event 36 or 102 in other instances.
>
> Matched pair study can then be used to determine the effectiveness of, for 
> example a treatment program, on a given outcome. The outcome may be 
> continuous or variable. Therefore, a conditional logistic regression model 
> can output an odds ratio (and confidence intervals for the treatment 
> coefficient). Or we may use a paired t-test to assess if the difference in 
> means between the pairs differ.
>
> I am more favored to the logistic regression and output of the odds ratio, 
> however it changes for each permutation. As too does its confidence interval. 
> So my question is how can we report on a string of given odds ratios - how 
> can be arrive at a statistical sound conclusion? Or accounting for the study 
> design, where we achieve different combinations of matched pairs, how can be 
> comment on the effectiveness of a given treatment program?
>
> Below I have attached a code, which simulates a 100-fold permutation.
>
>
> Any advice would be greatly appreciated,
> Luke
>
>
> Set.seed(123)
> # prepare the data for the simulation
> #1.
> library(Matching)
> library(survival)
> library(dplyr)
> #2.
> require(doParallel)
> cl<-makeCluster(2)
> registerDoParallel(cl)
> #3.
> clusterEvalQ(cl,library(Matching))
> clusterEvalQ(cl,library(survival))
> clusterEvalQ(cl,library(dplyr))
>
> # number of permutations
> m <- 100
>
>
> Result = foreach(i=1:m,.combine=cbind) %do%{
>
>   # taking from the example from the Matching package
>   #attach the data
>   data(lalonde)
>
>   # we want to assess if treatment shows an influence on a given outcome of 
> interest
>   # lets create our hypothetical example
>   lalonde$success <- with(lalonde, ifelse(re78 > 8125, 1, 0))
>
>   # adjust the order of the data
>   lalonde <- lalonde[sample(1:nrow(lalonde)), ]
>   head(lalonde$age)
>
>
>   # Define the covariates we want to match on
>   Xmat = cbind(lalonde$age, lalonde$educ, lalonde$married, lalonde$nodegr)
>
>   # define crude matching
>   mgen1 <- Match(Y=NULL, Tr=lalonde$treat,
>                  X=Xmat,
>                  exact=c(0,1,1,1),
>                  replace=FALSE, ties=F)
>
>   summary(mgen1)
>
>   # obtain initial pair-combinations
>   matched <- rbind(lalonde[mgen1$index.treated,], 
> lalonde[mgen1$index.control,])
>
>   # generate a dummy variable for our each pair of people
>   matched$Pair_ID <- rep(1:length(mgen1$index.treated),2)
>
>   # crude filtering
>   # set hard limits of age
>   # must be within +-2 years
>   Matched2 <- matched %>%
>     group_by(Pair_ID) %>%
>     filter(abs( age[treat == 1] - age[treat == 0]) <= 2)
>
>   # summary table
>   table(Matched2$treat, Matched2$success)
>
>   # so now we have a cohort of similar events
>   # each pair contains one treat and one non-treat event
>
>
>   #######################################################
>   #                                                     #
>   #     H E R E   W E   A R E   T R Y I N G    T O      #
>   #  A S S E S S   T H E    E F F E C T I V E N E S S   #
>   #   O F   T R E A T M E N T   T O    A C H I E V E    #
>   #               s U C C E S S                         #
>   #                                                     #
>   #######################################################
>
>
>   # One could implement a parametric difference of means test
>   # t-test - (as the outcome of interest is binary)
>   # to assess if differences between pairs change
>
>   diff_means<- t.test(Matched2$success[Matched2$treat==1], 
> Matched2$success[Matched2$treat==0],
>          paired = T, alternative = "two.sided", conf.level = 0.95)
>   diff_means$p.value
>
>   # output the series of p-values for each permutation
>
>   # ===========================================
>   # Or
>   # ===========================================
>
>   # obtain an estimated effectiveness value from a conditional logistic 
> regression
>   # namely, the Odds Ratio coefficient for 'treat'
>   model_1 <- clogit(success ~ treat + strata(Pair_ID), matched)
>   summary(model_1)
>
>   OR_M1 <- exp(model_1$coefficients[1])
>
>   # we can save the confidence intervals for the 'treat' effectiveness
>   CI_U1 <- exp(confint(model_1))[1,2]
>   CI_L1 <- exp(confint(model_1))[1,1]
>
>   # then we could output any of the following
>   #Result <- diff_means$p.value
>   #Result <- OR_M1
>   #Result <- rbind(OR_M1, CI_U1, CI_L1)
>
>   Result <- OR_M1
>
> }
>
> summary(Result[1,])
>
>
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to