teff
is a software package to estimate the expected difference in the outcome of an individual between two treatments, given the individual's profile in some feature data. The package focuses on transcriptomic features for which surrogate covariates need to be estimated. The estimation of individual treatment effects is based on inferences using Random Causal Forest as implemented in the package
Here, we show how to use the package to estimate transcriptomic profiles of psoriasis patients that at baseline are expected to have a higher response to brodalumab than placebo. Publicly available data has been downloaded from GEO for accession number GSE117468. This is data from a clinical trial of brodalumab treatment of psoriasis patients.
library(teff)
We first obtained clinical data relating to age, BMI, psoriasis area-and-severity-index (PASI) at baseline and week 12 after treatment, and brodalumab or placebo treatment.
The
names(psoriasis) head(psoriasis$teffdata[,1:10])
The transcriptomic feature data contains the expression levels of 87 genes in non-lesional skin at baseline that were found significant in the differential expression analysis of the interaction between PASI improvement and treatment (more details in Caceres et al. 2021).
dim(psoriasis$features) head(psoriasis$features[,1:10])
We then use predictteff
to estimate the effect of treatment on PASI improvement on a subsample of test individuals. The function randomly selects 80\% of individuals to grow the forest using the feature data, adjusted by covariates. The predictor is applied on the \20% of left-out individuals, who are used to estimate the effect of treatment on each of them, given their gene expression levels across all the genes. We have implemented the dup
option for handling data sets with few individuals. The parameter resplevel
sets the null hypothesis for testing the significance of $\tau(p)$
pso <- predicteff(psoriasis, dup=TRUE, resplevel = 0.2) pso
We can plot the prediction of treatment effect with confidence intervals.
plotPredict(pso, lb=expression(tau(p)), ctrl.plot = list(lb=c("Placebo", "Brodalumab"), wht="topleft", whs = "bottomright"))
This is a prediction of the benefit of treating with brodalumab over placebo for each individual at baseline, based on the individual's gene transcription of non-lesional skin. Not treated refers to patients who ended up receiving placebo, and treated to those that took brodalumab. We can compare the estimated benefit with the observed improvement after week 12.
plotPredict(pso, rk =pasiw12, xlab="Observed PASI week 12")
The relationship between estimated individual treatment effect and observed PASI reduction levels is better analyzed with a logistic relationship using the drc
package
library(drc) response <- pasiw12[pso$subsids] predictions <- pso$predictions treatment <- factor(pso$treatment, labels = c("placebo", "brodalumab")) mod <- drm(response*100~predictions, treatment, fct=LL.3()) plot(mod, pch=16, col=c("orange", "blue"), legendPos=c(0.36,-0.25), ylab="PASI improvement week12", xlab="Predicted treatment effect")
We see that while individuals receiving a placebo did not improve PASI, some would have strongly benefited from treatment. For individuals who ended up in brodalumab treatment, we can see a strong relationship between predicted treatment effect at baseline and the finally observed PASI improvement at week 12.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.