From 9dba536c436c0a131ded8e02281d99d7af0544d8 Mon Sep 17 00:00:00 2001 From: Nick Paavola Date: Mon, 28 Sep 2020 15:57:26 -0500 Subject: [PATCH 1/2] add more Excel RV formulas --- statplots/static/compare.js | 26 +++++++++++------------ statplots/static/single.js | 26 +++++++++++------------ statplots/templates/compare.html | 36 ++++++++++++++++---------------- statplots/templates/single.html | 18 ++++++++-------- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/statplots/static/compare.js b/statplots/static/compare.js index 64d13bf..8f634b1 100644 --- a/statplots/static/compare.js +++ b/statplots/static/compare.js @@ -742,43 +742,43 @@ function displayXlFormula(d) { rButton.classList.remove('btn-selected'); xlButton.classList.add('btn-selected'); document.getElementById('syntax').textContent = "Excel"; - document.getElementById('pctDescription').textContent = 'Percentile (evaluated at alpha)' + document.getElementById('pctDescription').textContent = 'Percentile (evaluated at p)' document.getElementById('rvDescription').textContent = 'Draw one random variable'; if (d.whichDist === 'beta') { - let alpha = -d.mean * (d.mean * d.mean - d.mean + d._var) / d._var; - let beta = (d.mean - 1) * (d.mean * d.mean - d.mean + d._var) / d._var; + let alpha = -d.mean * (d.mean ** 2 - d.mean + d._var) / d._var; + let beta = (d.mean - 1) * (d.mean ** 2 - d.mean + d._var) / d._var; d.pdfFormula.textContent = "beta.dist(x, " + alpha + ", " + beta + ", false)"; d.cdfFormula.textContent = "beta.dist(x, " + alpha + ", " + beta + ", true)"; - d.pctFormula.textContent = "beta.inv(" + alpha + ", " + beta + ", alpha)"; - d.rvFormula.textContent = ""; + d.rvFormula.textContent = `beta.inv(p, ${alpha}, ${beta})`; + d.rvFormula.textContent = `beta.inv(rand(), ${alpha}, ${beta})`; } else if (d.whichDist === 'binomial') { let trials = d.mean * d.mean / (d.mean - d._var); let probability_s = (1 - (d._var / d.mean)); d.pdfFormula.textContent = "binom.dist(x, " + trials + ", " + probability_s + ", false)"; d.cdfFormula.textContent = "binom.dist(x, " + trials + ", " + probability_s + ", true)"; - d.pctFormula.textContent = "binom.inv(" + trials + ", " + probability_s + ", alpha)"; - d.rvFormula.textContent = ""; + d.pctFormula.textContent = `binom.inv(${trials}, ${probability_s}, p`; + d.rvFormula.textContent = `binom.inv(${trials}, ${probability_s}, rand())`; } else if (d.whichDist === 'exponential') { let lambda = 1 / d.mean; d.pdfFormula.textContent = "expon.dist(x, " + lambda + ", false)"; d.cdfFormula.textContent = "expon.dist(x, " + lambda + ", true)"; - d.pctFormula.textContent = ""; - d.rvFormula.textContent = ""; + d.pctFormula.textContent = `-ln(1 - p) / ${lambda}`; + d.rvFormula.textContent = `-ln(1 - rand()) / ${lambda}`; } else if (d.whichDist === 'normal') { d.pdfFormula.textContent = "norm.dist(x, " + d.mean + ", " + d.sd + ", false)"; d.cdfFormula.textContent = "norm.dist(x, " + d.mean + ", " + d.sd + ", true)"; - d.pctFormula.textContent = "norm.inv(" + d.mean + ", " + d.sd + ", alpha)"; - d.rvFormula.textContent = `${d.mean}+${d.sd}*norm.s.inv(rand())`; + d.pctFormula.textContent = `norm.inv(${d.mean}, ${d.sd}, p)` + d.rvFormula.textContent = `norm.inv(${d.mean}, ${d.sd}, rand())` } else if (d.whichDist === 'poisson') { d.pdfFormula.textContent = "poisson.dist(x, " + d.mean + ", false)"; d.cdfFormula.textContent = "poisson.dist(x, " + d.mean + ", true)"; - d.pctFormula.textContent = "poisson.inv(" + d.mean + ", alpha)"; - d.rvFormula.textContent = ""; + d.pctFormula.textContent = "poisson.inv(" + d.mean + ", p)"; + d.rvFormula.textContent = `poisson.inv(${d.mean}, rand())`; } else { diff --git a/statplots/static/single.js b/statplots/static/single.js index 754b491..89250fa 100644 --- a/statplots/static/single.js +++ b/statplots/static/single.js @@ -669,43 +669,43 @@ function displayXlFormula(d) { rButton.classList.remove('btn-selected'); xlButton.classList.add('btn-selected'); document.getElementById('syntax').textContent = "Excel"; - document.getElementById('pctDescription').textContent = 'Percentile (evaluated at alpha)' + document.getElementById('pctDescription').textContent = 'Percentile (evaluated at p)' document.getElementById('rvDescription').textContent = 'Draw one random variable'; if (d.whichDist === 'beta') { - let alpha = -d.mean * (d.mean * d.mean - d.mean + d._var) / d._var; - let beta = (d.mean - 1) * (d.mean * d.mean - d.mean + d._var) / d._var; + let alpha = -d.mean * (d.mean ** 2 - d.mean + d._var) / d._var; + let beta = (d.mean - 1) * (d.mean ** 2 - d.mean + d._var) / d._var; d.pdfFormula.textContent = "beta.dist(x, " + alpha + ", " + beta + ", false)"; d.cdfFormula.textContent = "beta.dist(x, " + alpha + ", " + beta + ", true)"; - d.pctFormula.textContent = "beta.inv(" + alpha + ", " + beta + ", alpha)"; - d.rvFormula.textContent = ""; + d.rvFormula.textContent = `beta.inv(p, ${alpha}, ${beta})`; + d.rvFormula.textContent = `beta.inv(rand(), ${alpha}, ${beta})`; } else if (d.whichDist === 'binomial') { let trials = d.mean * d.mean / (d.mean - d._var); let probability_s = (1 - (d._var / d.mean)); d.pdfFormula.textContent = "binom.dist(x, " + trials + ", " + probability_s + ", false)"; d.cdfFormula.textContent = "binom.dist(x, " + trials + ", " + probability_s + ", true)"; - d.pctFormula.textContent = "binom.inv(" + trials + ", " + probability_s + ", alpha)"; - d.rvFormula.textContent = ""; + d.pctFormula.textContent = `binom.inv(${trials}, ${probability_s}, p`; + d.rvFormula.textContent = `binom.inv(${trials}, ${probability_s}, rand())`; } else if (d.whichDist === 'exponential') { let lambda = 1 / d.mean; d.pdfFormula.textContent = "expon.dist(x, " + lambda + ", false)"; d.cdfFormula.textContent = "expon.dist(x, " + lambda + ", true)"; - d.pctFormula.textContent = ""; - d.rvFormula.textContent = ""; + d.pctFormula.textContent = `-ln(1 - p) / ${lambda}`; + d.rvFormula.textContent = `-ln(1 - rand()) / ${lambda}`; } else if (d.whichDist === 'normal') { d.pdfFormula.textContent = "norm.dist(x, " + d.mean + ", " + d.sd + ", false)"; d.cdfFormula.textContent = "norm.dist(x, " + d.mean + ", " + d.sd + ", true)"; - d.pctFormula.textContent = "norm.inv(" + d.mean + ", " + d.sd + ", alpha)"; - d.rvFormula.textContent = `${d.mean}+${d.sd}*norm.s.inv(rand())`; + d.pctFormula.textContent = `norm.inv(${d.mean}, ${d.sd}, p)` + d.rvFormula.textContent = `norm.inv(${d.mean}, ${d.sd}, rand())` } else if (d.whichDist === 'poisson') { d.pdfFormula.textContent = "poisson.dist(x, " + d.mean + ", false)"; d.cdfFormula.textContent = "poisson.dist(x, " + d.mean + ", true)"; - d.pctFormula.textContent = "poisson.inv(" + d.mean + ", alpha)"; - d.rvFormula.textContent = ""; + d.pctFormula.textContent = "poisson.inv(" + d.mean + ", p)"; + d.rvFormula.textContent = `poisson.inv(${d.mean}, rand())`; } else { diff --git a/statplots/templates/compare.html b/statplots/templates/compare.html index 5a80109..494714c 100644 --- a/statplots/templates/compare.html +++ b/statplots/templates/compare.html @@ -20,15 +20,15 @@
@@ -65,15 +65,15 @@
diff --git a/statplots/templates/single.html b/statplots/templates/single.html index e441e50..8cc9242 100644 --- a/statplots/templates/single.html +++ b/statplots/templates/single.html @@ -19,15 +19,15 @@
From 105a8369968015216d06a7a17d6d5703ac15be26 Mon Sep 17 00:00:00 2001 From: Nick Paavola Date: Fri, 2 Oct 2020 22:17:17 -0500 Subject: [PATCH 2/2] update CSP --- statplots/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/statplots/__init__.py b/statplots/__init__.py index a2d3bf5..a98dd8c 100644 --- a/statplots/__init__.py +++ b/statplots/__init__.py @@ -13,7 +13,7 @@ 'fonts.gstatic.com', 'cdnjs.cloudflare.com' ], - 'img-src': '\'self\'' + 'img-src': '\'self\' data:' } talisman = Talisman(app, content_security_policy=csp)