cashr
Last updated: 2018-10-21
workflowr checks: (Click a bullet for more information) ✔ R Markdown file: up-to-date
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
✔ Environment: empty
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
✔ Seed:
set.seed(12345)
The command set.seed(12345)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
✔ Session information: recorded
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
✔ Repository version: 7b6b664
wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .DS_Store
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: analysis/.DS_Store
Ignored: code/.Rapp.history
Ignored: data/LSI/
Ignored: docs/.DS_Store
Ignored: docs/figure/.DS_Store
Ignored: output/fig/
Ignored: output/paper/
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
File | Version | Author | Date | Message |
---|---|---|---|---|
html | 39b2b84 | LSun | 2018-10-12 | Build site. |
rmd | f20502c | LSun | 2018-10-12 | wflow_publish(c(“analysis/cash_plots_2.rmd”, “analysis/cash_plots_4.rmd”, “analysis/cash_plots_5.rmd”, |
rmd | f950d06 | Lei Sun | 2018-10-11 | leukemia diagnostic plots |
html | f7bde81 | Lei Sun | 2018-10-06 | Build site. |
rmd | 3b81007 | Lei Sun | 2018-10-06 | wflow_publish(c(“analysis/cash_paper_fig_g1sep.rmd”, |
html | 133541a | LSun | 2018-10-05 | Build site. |
rmd | 49f870a | LSun | 2018-10-05 | wflow_publish(c(“cash_paper_fig_leukemia.rmd”, “cash_paper_fig1.rmd”, |
Document the leukemia figure in the cashr
paper.
source("../code/gdash_lik.R")
source("../code/gdfit.R")
load(url("http://statweb.stanford.edu/~ckirby/brad/LSI/datasets-and-programs/data/leukdata.RData"))
design <- c(rep(0, 47), rep(1, 25))
lim = limma::lmFit(leukdata, model.matrix(~design))
r.ebayes = limma::eBayes(lim)
p = r.ebayes$p.value[, 2]
t = r.ebayes$t[, 2]
z = -sign(t) * qnorm(p/2)
x = lim$coefficients[, 2]
s = x / z
locfdr
fit.locfdr <- locfdr::locfdr(z)
Version | Author | Date |
---|---|---|
133541a | LSun | 2018-10-05 |
qvalue
fit.qvalue <- qvalue::qvalue(p)
ashr
fit.ash <- ashr::ash(x, s, mixcompdist = "normal", method = "fdr")
lfdr.ash.n <- ashr::get_lfdr(fit.ash)
num.ash.n <- sum(lfdr.ash.n <= 0.2)
pdf("../output/fig/ashr_diag_norm_leukemia.pdf", height = 6, width = 8)
par(mfrow = c(2, 2))
ashr::plot_diagnostic(fit.ash, plot.hist = TRUE, breaks = 50)
Press [enter] to see next plot
Press [enter] to see next plot
Press [enter] to see next plot
dev.off()
quartz_off_screen
2
fit.ash.u <- ashr::ash(x, s, method = "fdr")
lfdr.ash.u <- ashr::get_lfdr(fit.ash.u)
num.ash.u <- sum(lfdr.ash.u <= 0.2)
pdf("../output/fig/ashr_diag_unif_leukemia.pdf", height = 6, width = 8)
par(mfrow = c(2, 2))
ashr::plot_diagnostic(fit.ash.u, plot.hist = TRUE, breaks = 50)
Press [enter] to see next plot
Press [enter] to see next plot
Press [enter] to see next plot
dev.off()
quartz_off_screen
2
fit.ash.hu <- ashr::ash(x, s, method = "fdr", mixcompdist = "halfuniform")
lfdr.ash.hu <- ashr::get_lfdr(fit.ash.hu)
num.ash.hu <- sum(lfdr.ash.hu <= 0.2)
xplot <- seq(-2, 2, length = 1000)
plot(xplot, ashr:::dens(get_fitted_g(fit.ash), xplot), type = "l", xlim = c(-1, 1),
xlab = expression(theta), ylab = expression(pi[1]~g(theta)))
yplot.u <- yplot.hu <- c()
for (i in seq(xplot)) {
yplot.u[i] <- sum(dunif(xplot[i], get_fitted_g(fit.ash.u)$a[-1], get_fitted_g(fit.ash.u)$b[-1]) * get_fitted_g(fit.ash.u)$pi[-1])
yplot.hu[i] <- sum(dunif(xplot[i], get_fitted_g(fit.ash.hu)$a[-1], get_fitted_g(fit.ash.hu)$b[-1]) * get_fitted_g(fit.ash.hu)$pi[-1])
}
lines(xplot, yplot.u, col = "blue", lty = 2)
lines(xplot, yplot.hu, col = "red", lty = 3)
legend("topleft", lty = 1:3, col = c("black", "blue", "red"), c("normal", "uniform", "halfuniform"))
Version | Author | Date |
---|---|---|
39b2b84 | LSun | 2018-10-12 |
cashr
fit.cash <- gdash(x, s, gd.ord = 10)
x.plot <- seq(-10, 10, length = 1000)
gd.ord <- 10
hermite = Hermite(gd.ord)
gd0.std = dnorm(x.plot)
matrix_lik_plot = cbind(gd0.std)
for (i in 1 : gd.ord) {
gd.std = (-1)^i * hermite[[i]](x.plot) * gd0.std / sqrt(factorial(i))
matrix_lik_plot = cbind(matrix_lik_plot, gd.std)
}
y.plot = matrix_lik_plot %*% fit.cash$w * fit.cash$fitted_g$pi[1]
method.col <- scales::hue_pal()(5)
setEPS()
postscript("../output/paper/leukemia.eps", height = 5, width = 12)
#pdf("../output/paper/leukemia.pdf", height = 5, width = 12)
par(mfrow = c(1, 2))
#####
hist(z, prob = TRUE, main = "", xlab = expression(paste(z, "-scores")), cex.lab = 1.25, breaks = 50)
lines(x.plot, y.plot, col = method.col[5], lwd = 2)
lines(x.plot, dnorm(x.plot), col = "orange", lty = 2, lwd = 2)
lines(x.plot, dnorm(x.plot, fit.locfdr$fp0[3, 1], fit.locfdr$fp0[3, 2]) * fit.locfdr$fp0[3, 3], col = method.col[3], lty = 2, lwd = 2)
text(-3.5, 0.188, "N(0,1)", col = "orange")
arrows(-2.2, 0.188, -1.3, 0.183, length = 0.1, angle = 20, col = "orange")
text(-6.5, 0.11, bquote(atop(" locfdr empirical null:", .(round(fit.locfdr$fp0[3, 3], 2)) %*% N(.(round(fit.locfdr$fp0[3, 1], 2)), .(round(fit.locfdr$fp0[3, 2], 2))^2))), col = method.col[3])
arrows(-2.8, 0.1115, -1.9, 0.1065, length = 0.1, angle = 20, col = method.col[3])
text(5.6, 0.105,
bquote(paste("cashr: ", .(round(fit.cash$fitted_g$pi[1], 2)) %*% hat(f))),
col = method.col[5])
arrows(2.9, 0.10, 2, 0.095, length = 0.1, angle = 20, col = method.col[5])
####
plot(z, z, type = "n", ylim = c(0, 1), ylab = "Local FDR", xlab = expression(paste(z, "-scores")), cex.lab = 1.25)
points(z, fit.cash$lfdr, pch = 15, cex = 0.5, col = method.col[5])
points(z, fit.locfdr$fdr, pch = 16, cex = 0.5, col = method.col[3])
points(z, fit.qvalue$lfdr, pch = 17, cex = 0.5, col = method.col[2])
points(z, ashr::get_lfdr(fit.ash), pch = 18, cex = 0.5, col = method.col[4])
#abline(h = 0.2, lty = 2)
legend("topright", bty = "n", pch = 15 : 18, col = method.col[c(5, 3, 2, 4)], c("cashr", "locfdr", "qvalue", "ashr"))
dev.off()
quartz_off_screen
2
fit.BH <- p.adjust(p, method = "BH")
sum(fit.cash$qvalue <= 0.1)
[1] 385
sum(fit.BH <= 0.1)
[1] 1579
sum(fit.qvalue$qvalues <= 0.1)
[1] 1972
sum(ashr::get_qvalue(fit.ash) <= 0.1)
[1] 3346
sum(ashr::qval.from.lfdr(fit.locfdr$fdr) <= 0.1)
[1] 282
sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ashr_2.2-3 Rmosek_8.0.69 PolynomF_1.0-2 CVXR_0.99
[5] REBayes_1.2 Matrix_1.2-12 SQUAREM_2017.10-1 EQL_1.0-0
[9] ttutils_1.0-1
loaded via a namespace (and not attached):
[1] gmp_0.5-13.2 Rcpp_0.12.18 pillar_1.1.0
[4] plyr_1.8.4 compiler_3.4.3 git2r_0.21.0
[7] workflowr_1.1.1 R.methodsS3_1.7.1 R.utils_2.7.0
[10] iterators_1.0.9 tools_3.4.3 digest_0.6.15
[13] bit_1.1-12 tibble_1.4.2 gtable_0.2.0
[16] evaluate_0.10.1 lattice_0.20-35 rlang_0.1.6
[19] foreach_1.4.4 yaml_2.1.18 parallel_3.4.3
[22] Rmpfr_0.7-1 ECOSolveR_0.4 stringr_1.3.0
[25] knitr_1.20 rprojroot_1.3-2 bit64_0.9-7
[28] grid_3.4.3 qvalue_2.10.0 R6_2.2.2
[31] rmarkdown_1.9 limma_3.34.7 reshape2_1.4.3
[34] ggplot2_2.2.1 locfdr_1.1-8 magrittr_1.5
[37] whisker_0.3-2 scales_0.5.0 splines_3.4.3
[40] MASS_7.3-50 backports_1.1.2 codetools_0.2-15
[43] htmltools_0.3.6 scs_1.1-1 assertthat_0.2.0
[46] colorspace_1.3-2 stringi_1.1.6 lazyeval_0.2.1
[49] munsell_0.4.3 pscl_1.5.2 doParallel_1.0.11
[52] truncnorm_1.0-7 R.oo_1.22.0
This reproducible R Markdown analysis was created with workflowr 1.1.1