knitr::opts_chunk$set( collapse = TRUE, message = FALSE, warning = FALSE, dev=c("png", "pdf"), comment = "#>", fig.align = "center" ) if (!require(pacman)) install.packages("pacman") pacman::p_load(ggplot2, dplyr, knitr, latex2exp, tibble, tidyr, dga, cowplot, latex2exp) pacman::p_load_gh("OlivierBinette/pretty")
Prior counts are the expected counts under an independence model with inclusion probability $\kappa$.
L = 5 kappas = seq(0, 0.5, by=0.005) bins = dga:::integer.base.b(0:(2^L - 1), 2) deltas = lapply(kappas, function(kappa) { array(sapply(1:nrow(bins), function(i) { prod(kappa^bins[i,] * (1-kappa)^(1-bins[i,])) }), dim=rep(2, L)) })
library(MSETools) fits = lapply(deltas, function(delta) dga(UK, priorCounts=delta))
p1 = as_tibble(kappas) %>% rename(kappa=value) %>% add_column(ests=estimates(fits)) %>% tidyr::unnest_wider(ests) %>% ggplot() + ylim(c(0, 40000)) + ylab("Population size") + geom_ribbon(aes(x=kappa, ymin=N.lwr, ymax=N.upr), fill="#0072B2", alpha=0.5) + geom_line(aes(x=kappa, y=N.hat)) + expand_limits(y=0) + theme_minimal() p1
"Small world" prior on the decomposable graph with edge probability $\beta$.
library(dga) data(graphs5) betas = c(seq(0, 0.995, by=0.005), 0.9999, 0.999999, 0.99999999, 0.999999999) n_edges = sapply(graphs5, function(graph) { sum(MSETools:::adjMat(graph, L))/2 }) model_priors = lapply(betas, function(beta) { sapply(n_edges, function(n) { lchoose((L*(L-1)/2), n) +n*log(beta) + ((L*(L-1)/2) - n)*log(1-beta) }) })
fits2 = lapply(model_priors, function(prior) dga(UK, logPriorGraphs=prior))
p2 = as_tibble(betas) %>% rename(beta=value) %>% add_column(ests=estimates(fits2)) %>% tidyr::unnest_wider(ests) %>% ggplot() + ylab("") + ylim(c(0, 40000)) + geom_ribbon(aes(x=beta, ymin=N.lwr, ymax=N.upr), fill="#0072B2", alpha=0.5) + geom_line(aes(x=beta, y=N.hat)) + expand_limits(y=0) + theme_minimal() + theme(axis.text.y = element_blank())+ annotate("text", x=0.75, y=37500, label="(kappa = 0.5)", size=3) p2
Now with prior counts corresponding with a choice of $\kappa = 0.1$.
kappa=0.1 delta = array(sapply(1:nrow(bins), function(i) { prod(kappa^bins[i,] * (1-kappa)^(1-bins[i,])) }), dim=rep(2, L)) fits3 = lapply(model_priors, function(prior) dga(UK, logPriorGraphs=prior, priorCounts=delta))
p3 = as_tibble(betas) %>% rename(beta=value) %>% add_column(ests=estimates(fits3)) %>% tidyr::unnest_wider(ests) %>% ggplot() + ylab("") + ylim(c(0, 40000)) + geom_ribbon(aes(x=beta, ymin=N.lwr, ymax=N.upr), fill="#0072B2", alpha=0.5) + geom_line(aes(x=beta, y=N.hat)) + expand_limits(y=0) + theme_minimal() + theme(axis.text.y=element_blank()) + annotate("text", x=0.75, y=37500, label="(kappa = 0.1)", size=3) p3
plot_grid(p1, p2, p3, nrow=1, ncol=3, labels="AUTO")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.