library("cdata")
library("ggplot2")
# https://en.wikipedia.org/wiki/Unbiased_estimation_of_standard_deviation
c4 <- function(n) {
sqrt(2/(n-1))*gamma(n/2)/gamma((n-1)/2)
}
d <- data.frame(n = 2:10)
d$correct <- sqrt(d$n/(d$n-1))*c4(d$n)
d$naive_ratio <- 1/d$correct
d$Bessel_ratio <- sqrt(d$n/(d$n-1))/d$correct
d$arithmetic_mean <- (d$naive_ratio + d$Bessel_ratio)/2
d$geometric_mean <- sqrt(d$naive_ratio * d$Bessel_ratio)
dplot <- unpivot_to_blocks(
d,
nameForNewKeyColumn = "estimate_type",
nameForNewValueColumn = "estimate",
columnsToTakeFrom = qc(naive_ratio, Bessel_ratio,
arithmetic_mean, geometric_mean))
ggplot(
data = dplot[dplot$estimate_type %in% qc(naive_ratio, Bessel_ratio), , drop = FALSE],
aes(x = n, y = estimate,
color = estimate_type, shape = estimate_type)) +
geom_point() +
geom_line() +
geom_hline(yintercept = 1, linetype = 2) +
ggtitle("ratio of estimation type over unbiased expected value")
ggplot(
data = dplot[dplot$estimate_type %in% qc(arithmetic_mean, geometric_mean), , drop = FALSE],
aes(x = n, y = estimate,
color = estimate_type, shape = estimate_type)) +
geom_point() +
geom_line() +
geom_hline(yintercept = 1, linetype = 2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.