diff --git a/docs/distributions.md b/docs/distributions.md new file mode 100644 index 00000000..27668d4b --- /dev/null +++ b/docs/distributions.md @@ -0,0 +1,1322 @@ +# L-moments of common probability distributions + +This page lists L-moment statistics +(L -location, scale, skewness, and kurtosis) of common univariate +probability distributions, most of them continuous. + +Each of the listed expressions have been validated, both numerically and +symbolically (with either Wolfram Alpha, SymPy, or pen and paper). + +Most of the closed-form expressions that are listed here, have been +previously reported in the literature. But for the sake of interpretability, +several have been algebraically rearranged. + +Due to the exploratory use of symbolic computation software, this listing is +likely to include some novel solutions. This is also the reason for the lack +of references. But this should pose no problems in practise, since Lmo makes +it trivial to check if they aren't incorrect. + + +!!! tip + + Numerical calculation of these L-statistics using `scipy.stats` + distributions, refer to + [`rv_continuous.l_stats`][lmo.contrib.scipy_stats.l_rv_generic.l_stats]. + + For direct calculation of the L-stats from a CDF or PPF (quantile function, + inverse CDF), see [`l_stats_from_cdf`][lmo.theoretical.l_stats_from_cdf] or + [`l_stats_from_ppf`][lmo.theoretical.l_stats_from_ppf], respectively. + + +## L-stats + +An overview of the untrimmed L-location, L-scale, L-skewness and L-kurtosis, +of a bunch of popular univariate probability distributions, for which they +exist (in closed form). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name /
scipy.stats
Params\( \lmoment{1} \)\( \lmoment{2} \)\( \lratio{3} = \lmoment{3}/\lmoment{2} \)\( \lratio{4} = \lmoment{4}/\lmoment{2} \)
+ + Uniform + +
+ uniform +
\( a < b \)\[ \frac{a + b}{2} \]\[ \frac{b - a}{6} \]\( 0 \)\( 0 \)
+ + Normal + +
+ norm +
+ \( \mu \)
+ \( \sigma>0 \) +
\( \mu \) + \[ \frac{\sigma}{\sqrt \pi} \] + \( \approx 0.5642 \ \sigma \) + \( 0 \) + \[ 30 \ \frac{\arctan{\sqrt 2}}{\pi} - 9 \] + \( \approx 0.1226 \) +
+ + Logistic + +
+ logistic(μ, s) +
+ \( \mu \)
+ \( s>0 \) +
\( \mu \)\( s \)\( 0 \) + \[ 1 / 6 \] + \( = 0.16\overline{6}\dots \) +
+ + Laplace + +
+ laplace +
+ \( \mu \)
+ \( b > 0 \) +
\( \mu \) + \[ \frac 3 4 b \] + \( = 0.75 \ b\) + \( 0 \) + \[ \frac{17}{72} \] + \( \approx 0.2361 \) +
+ + Student's t + + (2 d.f.) +
+ t(2) +
\( \nu = 2 \)\( 0 \) + \[ \frac{\pi}{2 \sqrt{2}} \] + \( \approx 1.1107 \) + \( 0 \) + \[ \frac 3 8 \] + \( = 0.375 \) +
+ + Student's t + + (3 d.f.) +
+ t(3) +
\( \nu = 3 \)\( 0 \) + \[ \frac{3 \sqrt 3}{\vphantom{\pi^2}2 \pi} \] + \( \approx 0.8270 \) + \( 0 \) + \[ 1 - \frac{\vphantom{\sqrt 3}175}{24 \pi^2} \] + \( \approx 0.2612 \) +
+ + Student's t + + (4 d.f.) +
+ t(4) +
\( \nu = 4 \)\( 0 \) + \[ \frac{15}{64} \pi \] + \( \approx 0.7363 \) + \( 0 \) + \[ \frac{111}{512} \] + \( \approx 0.2168 \) +
+ + Exponential + +
+ expon +
\( \lambda>0 \)\[ \frac 1 \lambda \]\[ \frac{1}{2 \lambda} \] + \[ \frac 1 3 \] + \( = 0.3\overline{3}\dots \) + + \[ \frac 1 6 \] + \( = 0.16\overline{6}\dots \) +
+ + Rayleigh + +
+ rayleigh +
\( \sigma > 0 \) + \[ + \frac 1 2 + \sqrt{2 \pi} \ + \sigma + \] + \( \approx 1.253 \ \sigma \) + + \[ + \frac {\sqrt 2 - 1}{2} + \sqrt{\pi} \ + \sigma + \] + \( \approx 0.3671 \ \sigma \) + + \[ 2 \frac{2 + \sqrt 2}{\sqrt 3} - \frac{4 + \sqrt{2}}{\sqrt 2} \] + \( \approx 0.1140 \) + + \[ 10 \frac{2 + \sqrt 2}{\sqrt 3} - 3 \frac{5 + 3 \sqrt 2}{\sqrt 2} \] + \( \approx 0.1054 \) +
+ + Gumbel + +
+ gumbel_l +
+ \( \mu \)
+ \( \beta > 0 \) +
+ \[ \mu - \gamma_e \beta \] + \( \approx \mu - 0.5772 \ \beta \) + + \[ \ln{2} \ \beta \] + \( \approx 0.6931 \ \beta \) + + \[ 2 \log_2(3) - 3 \] + \( \approx -0.1699 \) + + \[ 16 - 10 \log_2(3) \] + \( \approx 0.1504 \) +
+ + Weibull + +
+ invweibull +
+ \( \alpha > 0 \)
+ \( \beta > 0 \)
+ \( \kappa := 1 / \alpha \) +
\[ \Gamma(1 + \kappa) \ \beta \] + \[ \Gamma(1 + \kappa) \ \boxcox{2}{-\kappa} \ \kappa \beta \] + + \[ + \hphantom{-}3 + - 2 \frac + {\boxcox{3}{-\kappa}} + {\boxcox{2}{-\kappa}} + \] + + \[ + 6 + - 10 \frac + {\boxcox{3}{-\kappa}} + {\boxcox{2}{-\kappa}} + + 5 \frac + {\boxcox{4}{-\kappa}} + {\boxcox{2}{-\kappa}} + \] +
+ + GEV + +
+ genextreme +
+ \( \kappa > -1 \)
+ \( \beta > 0 \) +
+ \[ \frac{1 - \Gamma(1 + \kappa)}{\kappa} \ \beta \] + + \[\Gamma(1 + \kappa) \ \boxcox{2}{-\kappa} \ \beta \] + + \[ + - 3 + + 2 \frac + {\boxcox{3}{-\kappa}} + {\boxcox{2}{-\kappa}} + \] + + \[ + 6 + - 10 \frac + {\boxcox{3}{-\kappa}} + {\boxcox{2}{-\kappa}} + + 5 \frac + {\boxcox{4}{-\kappa}} + {\boxcox{2}{-\kappa}} + \] +
+ + Pareto I + +
+ pareto +
+ \( b \)
+ \( \sigma > 1 \) +
+ \[ \frac{b}{b - 1} \ \sigma \] + + \[ \frac{b}{b - 1} \frac{1}{2b - 1} \ \sigma \] + + \[ \frac{b + 1}{3b - 1} \] + + \[ \frac{b + 1}{3b - 1} \frac{2b + 1}{4b - 1} \] +
+ + Pareto II + +
+ lomax +
+ \( b, \ \mu \)
+ \( \sigma > 1 \) +
+ \[ \frac{1}{b - 1} \ \sigma + \mu \] + + \[ \frac{b}{b - 1} \frac{1}{2b - 1} \ \sigma \] + + \[ \frac{b + 1}{3b - 1} \] + + \[ \frac{b + 1}{3b - 1} \frac{2b + 1}{4b - 1} \] +
+ + Pareto III + +
+
+ \( c, \ \mu \)
+ \( \sigma > 1 \) +
+ \[ c \ \Gamma(c) \ \Gamma(1 - c) \ \sigma + \mu \] + + \[ c^2 \ \Gamma(c) \ \Gamma(1 - c) \ \sigma \] + + \[ c \vphantom{c^2 \Gamma(c)} \] + + \[ \frac{1 + 5 c^2}{6} \] +
+ + +## TL-stats + +Collection of TL-location, -scale, -skewness, -kurtosis coefficients, with +symmetric trimming of order 1, i.e. `trim=(1, 1)`. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name /
scipy.stats
Params\( \tlmoment{1}{1} \)\( \tlmoment{1}{2} \)\( \tlratio{1}{3} \)\( \tlratio{1}{4} \)
+ + Uniform + +
+ uniform +
\( a < b \)\[ (a + b) / 2 \]\[ (a - b) / 10 \]\( 0 \)\( 0 \)
+ + Normal + +
+ norm +
+ \( \mu \)
+ \( \sigma>0 \) +
\( \mu \) + \[ + \left( 6 - 18 \ \frac{\arctan{\sqrt 2}}{\pi} \right) + \frac{\sigma}{\sqrt \pi} + \] + \( \approx 0.2970 \ \sigma \) + \( 0 \) + \( \approx 0.06248 \) +
+ + Logistic + +
+ logistic(μ, s) +
\( \mu \)
\( s>0 \)
\( \mu \)\( s / 2 \)\( 0 \) + \[ 1 / 12 \] + \( = 0.083\overline{3} \dots \) +
+ + Laplace + +
+ laplace +
+ \( \mu \)
+ \( b > 0 \) +
\( \mu \) + \[ 11b / 32 \] + \( = 0.34375 \ b\) + \( 0 \) + \[ 3 / 22 \] + \( = 0.136\overline{36} \dots \) +
+ + Cauchy + + / +
+ + Student's t + + (1 d.f.) +
+ cauchy + / + t(2) +
\( \nu = 1 \)\( 0 \) + \[ \frac{18 \vphantom{)}}{\pi^3 \vphantom{)}} \ \zeta(3) \] + \( \approx 0.6978 \ b \) + \( 0 \) + \[ \frac{25}{6} - \frac{175}{4 \pi^2} \frac{\zeta(5)}{\zeta(3)} \] + \( \approx 0.3428 \) +
+ + Student's t + + (2 d.f.) +
+ t(2) +
\( \nu = 2 \)\( 0 \) + \[ \frac{3 \pi}{16 \sqrt{2}} \] + \( \approx 0.4165 \) + \( 0 \) + \[ \frac{5}{32} \] + \( = 0.15625 \) +
+ + Student's t + + (3 d.f.) +
+ t(3) +
\( \nu = 3 \)\( 0 \) + \[ \frac{105 \sqrt 3}{16 \pi^3} \] + \( \approx 0.3666 \) + \( 0 \) + \[ \frac{25}{6} - \frac{23 \ 023}{(24 \pi)^2} \] + \( \approx 0.1168 \) +
+ + Student's t + + (4 d.f.) +
+ t(4) +
\( \nu = 4 \)\( 0 \) + \[ \frac{3 \ 609 \ \pi}{32 \ 768} \] + \( \approx 0.3460 \) + \( 0 \) + \[ \frac{164 \ 975}{1 \ 642 \ 496} \] + \( \approx 0.1004 \) +
+ + Exponential + +
+ expon +
\( \lambda>0 \)\[ \frac{5}{6 \lambda} \]\[ \frac{1}{4 \lambda} \] + \[ \frac 2 9 \] + \( = 0.2\overline{2}\dots \) + + \[ \frac{1}{12} \] + \( = 0.083\overline{3}\dots \) +
+ + Rayleigh + +
+ rayleigh +
\( \sigma > 0 \) + + \[ + \frac 1 6 + \bigl( 9 - 2 \sqrt 6 \bigr) + \sqrt \pi \ + \sigma + \] + \( \approx 1.211 \sigma \) + + \[ + \frac 1 4 + \bigl( 6 - 4 \sqrt 6 + 3 \sqrt 2 \bigr) + \sqrt \pi \ + \sigma + \] + \( \approx 0.1970 \sigma \) + + + \[ + \frac{10}{9} + - \frac{8}{9} + \frac + {3 \sqrt{10} + 5 \sqrt 6 - 15 \sqrt 2} + {6 - 4 \sqrt 6 + 3 \sqrt 2} + \] + \( \approx 0.06951 \) + + \[ + \frac 5 4 + - \frac 7 6 + \frac + {18 \sqrt{10} + 10 \sqrt 6 - 10 \sqrt 3 - 45 \sqrt 2} + {6 - 4 \sqrt 6 + 3 \sqrt 2} + \] + \( \approx 0.05422 \) +
+ + Gumbel + +
+ gumbel_l +
\( \beta > 0 \) + \[ \mu - \left( \gamma_e - 2 \ln{3} + 3 \ln{2} \right) \ \beta \] + \( \approx \mu -0.4594 \ \beta \) + + \[ \left( 6 \ln{3} - 9 \ln{2} \right) \ \beta \] + \( \approx 0.3533 \ \beta \) + + \[ + \frac{10}{9} + \frac{2 \ln{5} + 4 \ln{3} - 11 \ln{2}}{2 \ln{3} - 3 \ln{2}} + \] + \( \approx -0.1065 \) + + \[ + \frac{5}{12} + \frac{42 \ln{5} + 6 \ln{3} - 107 \ln{2}}{2 \ln{3} - 3 \ln{2}} + \] + \( \approx 0.07541 \) +
+ + Weibull + +
+ weibull_min +
+ \( \alpha > 0 \)
+ \( \beta > 0 \)
+ \( \kappa := 1 / \alpha \) +
+ \[ + \left( + \frac{3}{2^\kappa} + - \frac{2}{3^\kappa} + \right) \ + \Gamma(\kappa) \ \kappa \beta + \] + + \[ + \left( + \frac{3}{2^\kappa} + - \frac{6}{3^\kappa} + + \frac{3}{4^\kappa} + \right) \ + \Gamma(\kappa) \ \kappa \beta + \] + + \[ + \frac{10}{9} + - \frac{20}{9} \frac + {2^{-\kappa} - 2 \cdot 4^{-\kappa} + 5^{-\kappa}} + {2^{-\kappa} - 2 \cdot 3^{-\kappa} + 4^{-\kappa}} + \] + + \[ + \frac{5}{4} + - \frac{35}{6} \frac + {3^{-\kappa} - 3 \cdot 4^{-\kappa} + 3 \cdot 5^{-\kappa} - 6^{-\kappa}} + {2^{-\kappa} - 2 \cdot 3^{-\kappa} + 4^{-\kappa}} + \] +
+ + +## General L-moments + +Lmo derived a bunch of closed-form solutions for L-moments of several +distributions. The proofs are not published, but it isn't difficult +to validate their correctness, e.g. numerically, or symbolically with sympy or +wolfram alpha / mathematica. + +### Kumaraswamy + +For [Kumaraswamy's distribution +](https://wikipedia.org/wiki/Kumaraswamy_distribution) with parameters +\( \alpha \in \mathbb{R}_{>0} \) and \( \beta \in \mathbb{R}_{>0} \), +the general solution for the \( r \)th L-moment has been derived by +[Jones (2009)](https://doi.org/10.1016/j.stamet.2008.04.001). This can be +extended for the general trimmed L-moments. + +The distribution functions are for \( 0 \le x \le 1 \) defined as: + +\[ +\begin{align} +f(x) &= \alpha \beta x^{\alpha-1}\left(1-x^\alpha\right)^{\beta-1} \\ +F(x) &= 1 - (1 - x^\alpha)^\beta \\ +x(F) &= \bigl(1 - (1 - F)^{1/\beta} \bigr)^{1/\alpha} +\end{align} +\] + +Its general \( r \)-th trimmed L-moment are: + +\[ + \begin{equation} + \tlmoment{s,t}{r} = + \beta \ + \frac{r + s + t}{r} + \sum_{k = t}^{r + s + t - 1} + (-1)^k + \binom{k + r - 1}{k - t} + \binom{r + s + t - 1}{k} + \B\bigl(1 + 1 / \alpha,\ \beta + k \beta \bigr) + \label{eq:lr_kum} + \end{equation} +\] + +### Burr Type XII + +Just like Kumaraswamy's distribution, the +[Burr distribution](https://wikipedia.org/wiki/Burr_distribution) has two +shape parameters \( \alpha \) and \( \beta \), both restricted to the +positive reals. + +The distribution functions are for \( x > 0 \) defined as: + +\[ +\begin{align} + f(x) &= \alpha \beta x^{\alpha-1} \left(1 + x^\alpha\right)^{-\beta-1} \\ + F(x) &= 1 - (1 - x^\alpha)^{-\beta} \\ + x(F) &= \bigl(1 - (1 - F)^{-1/\beta} \bigr)^{1/\alpha} +\end{align} +\] + +When \( \beta > 1 / \alpha \), the general \( r \)-th trimmed L-moment is: + +\[ +\begin{equation} + \tlmoment{s,t}{r} = + \beta \ + \frac{r + s + t}{r} + \sum_{k = t}^{r + s + t - 1} + (-1)^k + \binom{k + r - 1}{k - t} + \binom{r + s + t - 1}{k} + \B\bigl(1 + 1 / \alpha,\ \beta + k \beta - 1 / \alpha \bigr) + \label{eq:lr_burr} +\end{equation} +\] + +Interestingly, this barely differs from that of Kumaraswamy's distribution +\( \eqref{eq:lr_kum} \), even though the bounds of the distribution functions +differ greatly. + +### Wakeby + +The [Wakeby distribution](https://wikipedia.org/wiki/Wakeby_distribution) +is quantile-based, without closed-form expressions for the PDF and CDF, whose +quantile function (PPF) is defined to be + +\[ +\begin{equation} + x(F) = + \frac \alpha \beta \bigl(1 - (1 - F)^\beta\bigr) + - \frac \gamma \delta \bigl(1 - (1 - F)^{-\delta}\bigr) + + \mu +\end{equation} +\] + +Each of the scale- \( \alpha, \gamma \) and shape parameters +\( \beta, \delta \), are assumed to be positive real numbers. + +Lmo figured out that the L-moments with any order \( r \in \mathbb{N}_{\ge 1} \) +and trim \( s, t \in \mathbb{N}^2_{\ge 1} \) can be expressed as + + +\[ +\begin{equation} + \tlmoment{s,t}{r} + = \frac{\rfact{r + t}{s + 1}}{r} \left[ + \alpha \frac + {\rfact{1 - \beta}{r - 2}} + {\rfact{1 + \beta + t}{r + s}} + + \gamma \frac + {\rfact{1 + \delta}{r - 2}} + {\rfact{1 - \delta + t}{r + s}} + \right] + + \underbrace{ + \ffact{1}{r} \left( + \frac \alpha \beta - \frac \gamma \delta + \right) + }_{\text{will be } 0 \text{ if } r>1} +\end{equation} +\] + +### Generalized Lambda + +The [Tukey lambda distribution +](https://wikipedia.org/wiki/Tukey_lambda_distribution) can be generalized +to two scale parameters \( \alpha, \gamma \), and two shape parameters +\( \beta, \delta \). + +Like the Wakeby distribution, the generalized lambda has no closed-form PDF +or CDF. Instead, it is defined through its PPF: + +\[ +\begin{equation} + x(F) + = \alpha \boxcox{F}{\beta} + - \gamma \boxcox{-F}{\delta} +\end{equation} +\] + +Although its central product moments have no closed-form expression, the +general trimmed L-moments can be compactly expressed as: + +\[ +\begin{equation} + \tlmoment{s,t}{r} + = \alpha + \frac + {\rfact{r + s}{t + 1} \ \ffact{\beta + s}{r + s - 1}} + {r \ \rfact{\beta}{r + s + t + 1}} + + (-1)^r \gamma \ + \frac + {\rfact{r + t}{s + t} \ \ffact{\delta + t}{r + t - 1}} + {r \ \rfact{\delta}{r + s + t + 1}} + - \underbrace{ + \ffact{1}{r} \left( + \frac \alpha \beta - \frac \gamma \delta + \right) + }_{\text{will be } 0 \text{ if } r>1} +\end{equation} +\] + + + + + +## Constants and special functions + +An overview of the (non-obvious) mathematical notation of special functions +and constants. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameNotationDefinitionPython
+ + Euler–Mascheroni constant + + \[ \gamma_e \] + \[ + \begin{align*} + &= \int_1^\infty + \left( + \frac{1}{\lfloor x \rfloor} - \frac 1 x + \right) \ + \mathrm{d} x \\ + &\approx 0.5772 \vphantom{\frac 1 1} + \end{align*} + \] + + + numpy.euler_gamma + +
+ + Factorial + + \[ n! \vphantom{\prod_{k=1}^n k} \] + \[ + \begin{align*} + &= \prod_{k=1}^n k \\ + &= \underbrace + {1 \times 2 \times \ldots \times n} + _{n{\text{ factors}}} + \end{align*} + \] + + + scipy.special.factorial + +
+ + Falling factorial + + \[ \ffact{x}{n} \] + \[ + \begin{align*} + &= \prod_{k=0}^{n-1} (x - k) \\ + &= \underbrace + {x \ (x - 1) \ldots (x - n + 1)} + _{n{\text{ factors}}} + \end{align*} + \] +
+ + Rising factorial + + \[ \rfact{x}{n} \] + \[ + \begin{align*} + &= \prod_{k=0}^{n-1} (x + k) \\ + &= \underbrace + {x \ (x + 1) \ldots (x + n - 1)} + _{n{\text{ factors}}} + \end{align*} + \] + + + scipy.special.poch + +
+ + Binomial coefficient + + \[ \binom{n}{k} \] + \[ + \begin{align*} + &= \frac{n!}{k! \ (n - k)!} \\ + &= \frac{\ffact{n}{k}}{k!} + \end{align*} + \] + + + scipy.special.comb + +
+ + Gamma function + + \[ \Gamma(z) \]\[ = \int_0^\infty t^{z-1} e^{-t} \, \mathrm{d} t \] + + scipy.special.gamma + +
+ + Beta function + + \[ \B(z_1,\ z_2) \]\[ = \frac{\Gamma(z_1) \Gamma(z_2)}{\Gamma(z_1 + z_2)} \] + + scipy.special.beta + +
+ + Riemann zeta function + + \[ \zeta(z) \vphantom{\sum_{n = 1}^{\infty}} \]\[ = \sum_{n = 1}^{\infty} n^{-z} \] + + scipy.special.zeta + +
+ + Box–Cox transform + + \[ \boxcox{z}{\lambda} \] + \[ + = + \begin{cases} + (z^\lambda - 1) / \lambda & \text{if } \lambda \neq 0 \\ + \ln(z) & \text{if } \lambda = 0 + \end{cases} + \] + + + scipy.special.boxcox + +
diff --git a/docs/scripts/mathjax.js b/docs/scripts/mathjax.js index fd764a73..e68f5ee9 100644 --- a/docs/scripts/mathjax.js +++ b/docs/scripts/mathjax.js @@ -3,11 +3,34 @@ window.MathJax = { inlineMath: [["\\(", "\\)"]], displayMath: [["\\[", "\\]"]], processEscapes: true, - processEnvironments: true + processEnvironments: true, + tags: "ams", + macros: { + // Expectation operator + E: "\\mathop{\\mathbb{E}}", + // Beta function + B: "\\mathop{\\mathrm{B}}", + // Box-Cox transformation + boxcox: ["\\rm \\mathcal{T}_{#2}\\left( #1 \\right)", 2], + // Falling and rising factorials + ffact: ["\\left( #1 \\right)^{-}_{#2}", 2], + rfact: ["\\left( #1 \\right)^{+}_{#2}", 2], + // L-moment (untrimmed) + lmoment: ["\\lambda_{#1}", 1], + // L-moment (trimmed) + tlmoment: ["\\lambda^{(#1)}_{#2}", 2], + // L-moment ratio (untrimmed) + lratio: ["\\tau_{#1}", 1], + // L-moment ratio (trimmed) + tlratio: ["\\tau^{(#1)}_{#2}", 2] + } }, options: { - ignoreHtmlClass: ".*|", + // ignoreHtmlClass: ".*", processHtmlClass: "arithmatex" + }, + chtml: { + displayAlign: "left" } }; diff --git a/docs/styles/theme.css b/docs/styles/theme.css index a155cc13..48996855 100644 --- a/docs/styles/theme.css +++ b/docs/styles/theme.css @@ -42,4 +42,13 @@ a.autorefs-external::after { } a.autorefs-external:hover::after { background-color: var(--md-accent-fg-color); -} \ No newline at end of file +} + +td, +th { + white-space: nowrap; +} + +tr.row-double-top > td { + border-top: 0.15rem double var(--md-typeset-table-color) !important; +} diff --git a/mkdocs.yml b/mkdocs.yml index a56073d6..76b2cdd1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,6 +10,7 @@ strict: true nav: - Overview: index.md + - Distribution L-moments: distributions.md - API Docs: api.md - Contributing: contributing.md @@ -17,6 +18,9 @@ theme: name: material logo: img/logo.png favicon: img/favicon.ico + features: + - toc.follow + - toc.integrate palette: scheme: slate primary: nose @@ -61,6 +65,7 @@ markdown_extensions: # https://python-markdown.github.io/extensions/ - admonition - extra + - md_in_html - sane_lists - smarty