\newcommand{\simplex}[1]{\text{Simplex}{(#1)}} \newcommand{\dirichlet}[1]{\text{Dirichlet}{(#1)}} \renewcommand{\vec}[1]{\boldsymbol{#1}} \newcommand{\EE}{\mathop{\mathbb{E}}} \newcommand{\Var}{\mathop{\mathrm{Var}}}
knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) library(rsamplestudy) library(magrittr)
This package contains functions to sample from a Dirichlet distribution.
We call $\simplex{p-1}$ the set of vectors in $\mathbb{R}^p$ whose components form a distribution on $p$ items.
In other words, $\vec{X} \in \simplex{p-1}$ iff $X_i \in [0,1]$ and $\sum_{i=1}^p X_i = 1$.
Let $\vec{X}$ be a vector in $\simplex{p-1}$, let $\vec{\alpha}$ be a vector in $\mathbb{R}^p$ with positive components.
Then, $X$ can have the Dirichlet distribution: $X \mid \vec{\alpha} \sim \dirichlet{\vec{\alpha}}$.
We can write $\vec{\alpha} = \alpha_0 \, \vec{\nu}$, where:
If $\vec{\nu}$ is constant, $\vec{\nu} = 1/p$. The Dirichlet distribution is called symmetric Dirichlet, and is only parametrised by the concentration parameter $\alpha_0$.
Sample from a $p=4$ Dirichlet:
n <- 100 # The parameter alpha <- c(0.5, 0.1, 5, 0.1) p <- length(alpha) # Concentration and base measure alpha0 <- sum(alpha) nu <- alpha / alpha0
$\alpha_0 = r alpha0
$
$\vec{\nu} = \left( r nu
\right)$
$\vec{\alpha} = \left( r alpha
\right)$
df_diri <- fun_rdirichlet(n, alpha) head(df_diri)
source('scatter_matrix_simplex.R') scatter_matrix_simplex(df_diri)
Uniform base measure, unitary Dirichlet parameters: $\vec{\alpha} = \vec{1}$.
nu <- rep(1, p)/p alpha0 <- p alpha <- nu * alpha0
$\alpha_0 = r alpha0
$
$\vec{\nu} = \left( r nu
\right)$
$\vec{\alpha} = \left( r alpha
\right)$
df_diri <- fun_rdirichlet(n, alpha) head(df_diri)
scatter_matrix_simplex(df_diri)
Concentration parameter $\gg p$, Dirichlet parameters $\gg 1$
nu <- rep(1, p)/p alpha0 <- 100 alpha <- nu * alpha0
$\alpha_0 = r alpha0
$
$\vec{\nu} = \left( r nu
\right)$
$\vec{\alpha} = \left( r alpha
\right)$
df_diri <- fun_rdirichlet(n, alpha) head(df_diri)
scatter_matrix_simplex(df_diri)
Concentration parameter $\ p$, Dirichlet parameters $\ 1$
nu <- rep(1, p)/p alpha0 <- 0.01 alpha <- nu * alpha0
$\alpha_0 = r alpha0
$
$\vec{\nu} = \left( r nu
\right)$
$\vec{\alpha} = \left( r alpha
\right)$
df_diri <- fun_rdirichlet(n, alpha) head(df_diri)
scatter_matrix_simplex(df_diri)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.