<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="pandoc" /> <meta name="author" content="Lei Sun" /> <meta name="date" content="2018-04-13" /> <title>The Distribution of W_j</title> <script src="site_libs/jquery-1.11.3/jquery.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link href="site_libs/bootstrap-3.3.5/css/cosmo.min.css" rel="stylesheet" /> <script src="site_libs/bootstrap-3.3.5/js/bootstrap.min.js"></script> <script src="site_libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script> <script src="site_libs/bootstrap-3.3.5/shim/respond.min.js"></script> <script src="site_libs/jqueryui-1.11.4/jquery-ui.min.js"></script> <link href="site_libs/tocify-1.9.1/jquery.tocify.css" rel="stylesheet" /> <script src="site_libs/tocify-1.9.1/jquery.tocify.js"></script> <script src="site_libs/navigation-1.1/tabsets.js"></script> <script src="site_libs/navigation-1.1/codefolding.js"></script> <link href="site_libs/highlightjs-9.12.0/textmate.css" rel="stylesheet" /> <script src="site_libs/highlightjs-9.12.0/highlight.js"></script> <link href="site_libs/font-awesome-4.5.0/css/font-awesome.min.css" rel="stylesheet" /> <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> pre:not([class]) { background-color: white; } </style> <script type="text/javascript"> if (window.hljs) { hljs.configure({languages: []}); hljs.initHighlightingOnLoad(); if (document.readyState && document.readyState === "complete") { window.setTimeout(function() { hljs.initHighlighting(); }, 0); } } </script> <style type="text/css"> h1 { font-size: 34px; } h1.title { font-size: 38px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 16px; } h6 { font-size: 12px; } .table th:not([align]) { text-align: left; } </style> </head> <body> <style type = "text/css"> .main-container { max-width: 940px; margin-left: auto; margin-right: auto; } code { color: inherit; background-color: rgba(0, 0, 0, 0.04); } img { max-width:100%; height: auto; } .tabbed-pane { padding-top: 12px; } button.code-folding-btn:focus { outline: none; } </style> <style type="text/css"> /* padding for bootstrap navbar */ body { padding-top: 51px; padding-bottom: 40px; } /* offset scroll position for anchor links (for fixed navbar) */ .section h1 { padding-top: 56px; margin-top: -56px; } .section h2 { padding-top: 56px; margin-top: -56px; } .section h3 { padding-top: 56px; margin-top: -56px; } .section h4 { padding-top: 56px; margin-top: -56px; } .section h5 { padding-top: 56px; margin-top: -56px; } .section h6 { padding-top: 56px; margin-top: -56px; } </style> <script> // manage active state of menu based on current page $(document).ready(function () { // active menu anchor href = window.location.pathname href = href.substr(href.lastIndexOf('/') + 1) if (href === "") href = "index.html"; var menuAnchor = $('a[href="' + href + '"]'); // mark it active menuAnchor.parent().addClass('active'); // if it's got a parent navbar menu mark it active as well menuAnchor.closest('li.dropdown').addClass('active'); }); </script> <div class="container-fluid main-container"> <!-- tabsets --> <script> $(document).ready(function () { window.buildTabsets("TOC"); }); </script> <!-- code folding --> <style type="text/css"> .code-folding-btn { margin-bottom: 4px; } </style> <script> $(document).ready(function () { window.initializeCodeFolding("hide" === "show"); }); </script> <script> $(document).ready(function () { // move toc-ignore selectors from section div to header $('div.section.toc-ignore') .removeClass('toc-ignore') .children('h1,h2,h3,h4,h5').addClass('toc-ignore'); // establish options var options = { selectors: "h1,h2,h3", theme: "bootstrap3", context: '.toc-content', hashGenerator: function (text) { return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_').toLowerCase(); }, ignoreSelector: ".toc-ignore", scrollTo: 0 }; options.showAndHide = true; options.smoothScroll = true; // tocify var toc = $("#TOC").tocify(options).data("toc-tocify"); }); </script> <style type="text/css"> #TOC { margin: 25px 0px 20px 0px; } @media (max-width: 768px) { #TOC { position: relative; width: 100%; } } .toc-content { padding-left: 30px; padding-right: 40px; } div.main-container { max-width: 1200px; } div.tocify { width: 20%; max-width: 260px; max-height: 85%; } @media (min-width: 768px) and (max-width: 991px) { div.tocify { width: 25%; } } @media (max-width: 767px) { div.tocify { width: 100%; max-width: none; } } .tocify ul, .tocify li { line-height: 20px; } .tocify-subheader .tocify-item { font-size: 0.90em; padding-left: 25px; text-indent: 0; } .tocify .list-group-item { border-radius: 0px; } </style> <!-- setup 3col/9col grid for toc_float and main content --> <div class="row-fluid"> <div class="col-xs-12 col-sm-4 col-md-3"> <div id="TOC" class="tocify"> </div> </div> <div class="toc-content col-xs-12 col-sm-8 col-md-9"> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.html">truncash</a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li> <a href="index.html">Home</a> </li> <li> <a href="about.html">About</a> </li> <li> <a href="license.html">License</a> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li> <a href="https://github.com/LSun/truncash"> <span class="fa fa-github"></span> </a> </li> </ul> </div><!--/.nav-collapse --> </div><!--/.container --> </div><!--/.navbar --> <div class="fluid-row" id="header"> <div class="btn-group pull-right"> <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span>Code</span> <span class="caret"></span></button> <ul class="dropdown-menu" style="min-width: 50px;"> <li><a id="rmd-show-all-code" href="#">Show All Code</a></li> <li><a id="rmd-hide-all-code" href="#">Hide All Code</a></li> </ul> </div> <h1 class="title toc-ignore">The Distribution of <span class="math inline">\(W_j\)</span></h1> <h4 class="author"><em>Lei Sun</em></h4> <h4 class="date"><em>2018-04-13</em></h4> </div> <!-- The file analysis/chunks.R contains chunks that define default settings shared across the workflowr files. --> <!-- Update knitr chunk options --> <!-- Insert the date the file was last updated --> <p><strong>Last updated:</strong> 2018-05-06</p> <!-- Insert the code version (Git commit SHA1) if Git repository exists and R package git2r is installed --> <p><strong>Code version:</strong> 0b0a394</p> <!-- Add your analysis here --> <pre class="r"><code>source("../code/gdash_lik.R") source("../code/gdfit.R") source("../code/count_to_summary.R") library(limma) library(edgeR) library(ashr) library(plyr) library(ggplot2) library(reshape2)</code></pre> <div id="introduction" class="section level2"> <h2>Introduction</h2> </div> <div id="simulated-data" class="section level2"> <h2>Simulated Data</h2> <pre class="r"><code>set.seed(777) d <- 10 n <- 1e4 B <- matrix(rnorm(n * d), n, d) Sigma <- B %*% t(B) + diag(n) sigma <- diag(Sigma) Rho <- cov2cor(Sigma) rhobar <- c() for (l in 1 : 10) { rhobar[l] <- (sum(Rho^l) - n) / (n * (n - 1)) }</code></pre> <pre class="r"><code>par(mar = c(5.1, 4.1, 1, 2.1)) hist(Rho[lower.tri(Rho)], xlab = expression(rho[ij]), main = "")</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-3-1.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>set.seed(20) z <- rnorm(d) Z <- B %*% z + rnorm(n) Z <- Z / sqrt(sigma) cat("sd(Z) =", sd(Z))</code></pre> <pre><code>sd(Z) = 1.262205</code></pre> <pre class="r"><code>hist(Z, breaks = 20, prob = TRUE, ylim = c(0, dnorm(0))) lines(seq(-5, 5, by = 0.1), dnorm(seq(-5, 5, by = 0.1)), col = "blue")</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-4-1.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>p <- pnorm(-abs(Z)) * 2 par(mfcol = c(2, 2)) par(mar = c(5.1, 4.1, 3, 2.1)) hist(p, breaks = 100, main = "Correlated", xlab = "p-value") par(mar = c(5.1, 4.1, 1, 2.1)) plot(-log(p), ylim = range(-log(p), -log(pnorm(-sqrt(2 * log(n))) * 2), -log(0.05 / n))) abline(h = -log(pnorm(-sqrt(2 * log(n))) * 2), col = "maroon") abline(h = -log(0.05 / n), col = "red") abline(h = -log(0.001), col = "green") abline(h = -log(0.05), col = "blue") Z <- rnorm(n) p <- pnorm(-abs(Z)) * 2 par(mar = c(5.1, 4.1, 3, 2.1)) hist(p, breaks = 100, main = "Independent", xlab = "p-value") par(mar = c(5.1, 4.1, 1, 2.1)) plot(-log(p), ylim = range(-log(p), -log(pnorm(-sqrt(2 * log(n))) * 2), -log(0.05 / n))) abline(h = -log(pnorm(-sqrt(2 * log(n))) * 2), col = "maroon") abline(h = -log(0.05 / n), col = "red") abline(h = -log(0.001), col = "green") abline(h = -log(0.05), col = "blue")</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-4-2.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>set.seed(777) nsim <- 1e4 Z.list <- W <- list() for (i in 1 : nsim) { z <- rnorm(d) Z <- B %*% z + rnorm(n) Z <- Z / sqrt(sigma) Z.list[[i]] <- Z Z.GD <- gdfit.mom(Z, 100) W[[i]] <- Z.GD$w } Z.sim <- Z.list W.sim <- W</code></pre> </div> <div id="real-data-from-gtex" class="section level2"> <h2>Real Data from GTEx</h2> <pre class="r"><code>r <- readRDS("../data/liver.rds")</code></pre> <pre class="r"><code>top_genes_index = function (g, X) { return(order(rowSums(X), decreasing = TRUE)[1 : g]) } lcpm = function (r) { R = colSums(r) t(log2(((t(r) + 0.5) / (R + 1)) * 10^6)) }</code></pre> <pre class="r"><code>nsamp <- 5 ngene <- 1e4</code></pre> <pre class="r"><code>Y = lcpm(r) subset = top_genes_index(ngene, Y) r = r[subset,]</code></pre> <pre class="r"><code>set.seed(7) nsim <- 1e4 Z.list <- W <- list() for (i in 1 : nsim) { ## generate data counts <- r[, sample(ncol(r), 2 * nsamp)] design <- model.matrix(~c(rep(0, nsamp), rep(1, nsamp))) summary <- count_to_summary(counts, design) Z <- summary$z Z.list[[i]] <- Z Z.GD <- gdfit.mom(Z, 100) W[[i]] <- Z.GD$w } Z.gtex <- Z.list W.gtex <- W</code></pre> <pre class="r"><code>quantile.vec1 <- exp(seq(-21, -5, by = 0.01)) quantile.vec2 <- seq(0.007, 0.993, by = 0.001) quantile.vec3 <- exp(seq(-5, -21, by = -0.01)) emp.cdf.Z1 <- sapply(quantile.vec1, function(x) {sapply(Z.gtex, function(y) mean(y <= qnorm(x)))}) emp.cdf.Z2 <- sapply(quantile.vec2, function(x) {sapply(Z.gtex, function(y) mean(y <= qnorm(x)))}) emp.cdf.Z3 <- sapply(quantile.vec3, function(x) {sapply(Z.gtex, function(y) mean(y <= -qnorm(x)))}) emp.cdf.Z4 <- sapply(quantile.vec3, function(x) {sapply(Z.gtex, function(y) mean(y > -qnorm(x)))})</code></pre> <pre class="r"><code>ecdf.avg1 <- colMeans(emp.cdf.Z1) ecdf.avg2 <- colMeans(emp.cdf.Z2) ecdf.avg3 <- colMeans(emp.cdf.Z3) ecdf.avg4 <- colMeans(emp.cdf.Z4) ecdf.avg <- c(ecdf.avg1, ecdf.avg2, ecdf.avg3) ecdf.tail.avg.conf.int1 <- apply(emp.cdf.Z1, 2, function(x) {t.test(x)$conf.int}) ecdf.tail.avg.conf.int4 <- apply(emp.cdf.Z4, 2, function(x) {t.test(x)$conf.int})</code></pre> <pre class="r"><code>plot(c(qnorm(quantile.vec1), qnorm(quantile.vec2), -qnorm(quantile.vec3)), ecdf.avg, type = "l", col = "red", xlab = "z", ylab = "Cumulative Distribution Function (CDF)") lines(c(qnorm(quantile.vec1), qnorm(quantile.vec2), -qnorm(quantile.vec3)), c(quantile.vec1, quantile.vec2, pnorm(-qnorm(quantile.vec3))), lty = 2) legend("bottomright", lty = c(1, 2), col = c(1, 2), legend = c(expression(bar("F")(z)), expression(Phi(z))))</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-13-1.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>plot(qnorm(quantile.vec1), log(ecdf.avg1), type = "l", ylim = range(log(quantile.vec1), log(ecdf.avg1)), xlab = "z", ylab = "log (CDF)") lines(qnorm(quantile.vec1), log(quantile.vec1), lty = 2, col = "red") lines(qnorm(quantile.vec1), log(pnorm(qnorm(quantile.vec1), 0, 1.1)), lty = 2, col = "green") lines(qnorm(quantile.vec1), log(pnorm(qnorm(quantile.vec1), 0, 1.05)), lty = 2, col = "blue") polygon(x = c(qnorm(quantile.vec1), rev(qnorm(quantile.vec1))), y = c(log(ecdf.tail.avg.conf.int1[1, ]), rev(log(ecdf.tail.avg.conf.int1[2, ]))), border = NA, col = grDevices::adjustcolor("grey75", alpha.f = 0.5))</code></pre> <pre><code>Warning in log(ecdf.tail.avg.conf.int1[1, ]): NaNs produced</code></pre> <pre class="r"><code>legend("bottomright", lty = c(1, 2, 2, 2), col = c(1, 2, 4, 3), legend = c( expression(log(bar("F")(z))), expression(log(Phi(z))), expression(log(Phi(z / 1.05))), expression(log(Phi(z / 1.1))) ))</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-13-2.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>plot(-qnorm(quantile.vec3), log(ecdf.avg4), type = "l", ylim = range(log(quantile.vec3), log(ecdf.avg4)), xlab = "z", ylab = "log (1 - CDF)") lines(-qnorm(quantile.vec3), log(quantile.vec3), lty = 2, col = "red") lines(-qnorm(quantile.vec3), log(pnorm(qnorm(quantile.vec3), 0, 1.1)), lty = 2, col = "green") lines(-qnorm(quantile.vec3), log(pnorm(qnorm(quantile.vec3), 0, 1.05)), lty = 2, col = "blue") polygon(x = c(-qnorm(quantile.vec3), rev(-qnorm(quantile.vec3))), y = c(log(ecdf.tail.avg.conf.int4[1, ]), rev(log(ecdf.tail.avg.conf.int4[2, ]))), border = NA, col = grDevices::adjustcolor("grey75", alpha.f = 0.5)) legend("bottomleft", lty = c(1, 2, 2, 2), col = c(1, 2, 4, 3), legend = c( expression(log(1 - bar("F")(z))), expression(log(1 - Phi(z))), expression(log(1 - Phi(z / 1.05))), expression(log(1 - Phi(z / 1.1))) ))</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-13-3.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>set.seed(777) nsamp <- 50 nsim <- 1e3 z <- sebetahat <- list() for (i in 1 : nsim) { ## generate data counts <- r[, sample(ncol(r), 2 * nsamp)] design <- model.matrix(~c(rep(0, nsamp), rep(1, nsamp))) summary <- count_to_summary(counts, design) z[[i]] <- summary$z sebetahat[[i]] <- summary$sebetahat }</code></pre> <pre class="r"><code>sd.vec <- sapply(z, sd) median.vec <- sapply(z, median) fd.vec <- sapply(z, function(x) { p <- pnorm(-abs(x)) * 2 sum(p <= 0.005) }) sel <- c(834, 211, 397, 748) par(mfrow = c(2, 2)) for (i in seq(sel)) { fit <- gdfit(z[[sel[i]]], 10) plot.gdfit(z[[sel[i]]], fit$w, fit$L, legend = FALSE) }</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-15-1.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>set.seed(6) par(mfrow = c(2, 3)) par(mar = c(4.5, 4.5, 2, 2)) hist(pnorm(-abs(z[[834]])) * 2, prob = TRUE, xlab = "", breaks = 100, main = "(a): Histogram of two-sided p-values") lines(c(0, 1), c(1, 1), col = "red") hist(z[[834]], prob = TRUE, breaks = 100, xlab = "", xlim = c(-4.5, -2), main = "(b): Left tail of correlated z-scores") lines(seq(-6, 6, by = 0.01), dnorm(seq(-6, 6, by = 0.01), 0, sd(z[[834]])), col = "blue") lines(seq(-6, 6, by = 0.01), dnorm(seq(-6, 6, by = 0.01)), col = "red") hist(z[[834]], prob = TRUE, breaks = 100, xlab = "", xlim = c(2, 4.5), main = "(c): Right tail of correlated z-scores") lines(seq(-6, 6, by = 0.01), dnorm(seq(-6, 6, by = 0.01)), col = "red") p <- pnorm(-abs(z[[834]])) * 2 plot(sample(-log(pnorm(-abs(z[[834]])) * 2)), ylim = c(0, 20), ylab = "-log(p)", main = expression(paste("(d): Correlated ", N(0, 1)))) abline(h = -log(0.005), col = "red") abline(h = -log(pnorm(-sqrt(2 * log(1e4))) * 2), col = "blue") abline(h = -log(0.05 / 1e4), col = "green") plot(-log(pnorm(-abs(rnorm(1e4))) * 2), ylim = c(0, 20), ylab = "-log(p)", main = expression(paste("(e): Independent ", N(0, 1)))) abline(h = -log(0.005), col = "red") abline(h = -log(pnorm(-sqrt(2 * log(1e4))) * 2), col = "blue") abline(h = -log(0.05 / 1e4), col = "green") plot(-log(pnorm(-abs(rnorm(1e4, 0, 1.6))) * 2), ylim = c(0, 20), ylab = "-log(p)", main = expression(paste("(f): Independent ", N(0, 1.6^2)))) abline(h = -log(0.005), col = "red") abline(h = -log(pnorm(-sqrt(2 * log(1e4))) * 2), col = "blue") abline(h = -log(0.05 / 1e4), col = "green")</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-16-1.png" width="672" style="display: block; margin: auto;" /></p> <pre class="r"><code>p.bh <- p.adjust(p, method = "BH") sum(p.bh <= 0.05)</code></pre> <pre><code>[1] 575</code></pre> <pre class="r"><code>plot(sort(log(p)), cex = 0.25, pch = 19, ylim = c(-19, 0), xlab = "Order", ylab = "log(p)") set.seed(6) z.indep <- rnorm(1e4) points(sort(log(pnorm(-abs(z.indep)) * 2)), cex = 0.25, pch = 19, col = "blue") z.indep <- rnorm(1e4, 0, 1.6) points(sort(log(pnorm(-abs(z.indep)) * 2)), cex = 0.25, pch = 19, col = "green") plot(sort(log(p)), cex = 0.25, pch = 19, ylim = c(-19, -2.5), xlim = c(1, 850), xlab = "Order", ylab = "log(p)") set.seed(6) z.indep <- rnorm(1e4) points(sort(log(pnorm(-abs(z.indep)) * 2)), cex = 0.25, pch = 19, col = "blue") z.indep <- rnorm(1e4, 0, 1.6) points(sort(log(pnorm(-abs(z.indep)) * 2)), cex = 0.25, pch = 19, col = "green") abline(h = log(0.005), col = "red", lty = 2) abline(h = log(pnorm(-sqrt(2 * log(1e4))) * 2), col = "red", lty = 2) abline(h = log(0.05 / 1e4), col = "red", lty = 2)</code></pre> <p><img src="figure/gd_w.rmd/unnamed-chunk-16-2.png" width="672" style="display: block; margin: auto;" /></p> </div> <div id="session-information" class="section level2"> <h2>Session information</h2> <!-- Insert the session information into the document --> <pre class="r"><code>sessionInfo()</code></pre> <pre><code>R version 3.4.3 (2017-11-30) Platform: x86_64-apple-darwin15.6.0 (64-bit) Running under: macOS High Sierra 10.13.4 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] reshape2_1.4.3 ggplot2_2.2.1 plyr_1.8.4 [4] edgeR_3.20.2 limma_3.34.4 ashr_2.2-2 [7] Rmosek_8.0.69 PolynomF_1.0-1 CVXR_0.95 [10] REBayes_1.2 Matrix_1.2-12 SQUAREM_2017.10-1 [13] EQL_1.0-0 ttutils_1.0-1 loaded via a namespace (and not attached): [1] gmp_0.5-13.1 Rcpp_0.12.16 pillar_1.0.1 [4] compiler_3.4.3 git2r_0.21.0 R.methodsS3_1.7.1 [7] R.utils_2.6.0 iterators_1.0.9 tools_3.4.3 [10] digest_0.6.15 bit_1.1-12 tibble_1.4.1 [13] gtable_0.2.0 evaluate_0.10.1 lattice_0.20-35 [16] rlang_0.1.6 foreach_1.4.4 yaml_2.1.18 [19] parallel_3.4.3 Rmpfr_0.6-1 ECOSolveR_0.4 [22] stringr_1.3.0 knitr_1.20 locfit_1.5-9.1 [25] rprojroot_1.3-2 bit64_0.9-7 grid_3.4.3 [28] R6_2.2.2 rmarkdown_1.9 magrittr_1.5 [31] scales_0.5.0 MASS_7.3-47 backports_1.1.2 [34] codetools_0.2-15 htmltools_0.3.6 scs_1.1-1 [37] colorspace_1.3-2 stringi_1.1.6 lazyeval_0.2.1 [40] munsell_0.4.3 doParallel_1.0.11 pscl_1.5.2 [43] truncnorm_1.0-7 R.oo_1.21.0 </code></pre> </div> <hr> <p> This <a href="http://rmarkdown.rstudio.com">R Markdown</a> site was created with <a href="https://github.com/jdblischak/workflowr">workflowr</a> </p> <hr> <!-- To enable disqus, uncomment the section below and provide your disqus_shortname --> <!-- disqus <div id="disqus_thread"></div> <script type="text/javascript"> /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ var disqus_shortname = 'rmarkdown'; // required: replace example with your forum shortname /* * * DON'T EDIT BELOW THIS LINE * * */ (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a> --> </div> </div> </div> <script> // add bootstrap table styles to pandoc tables function bootstrapStylePandocTables() { $('tr.header').parent('thead').parent('table').addClass('table table-condensed'); } $(document).ready(function () { bootstrapStylePandocTables(); }); </script> <!-- dynamically load mathjax for compatibility with self-contained --> <script> (function () { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"; document.getElementsByTagName("head")[0].appendChild(script); })(); </script> </body> </html>