squiggle/packages/website/docs/Internal/ProcessingConfidenceIntervals.md
2022-04-14 16:38:12 -04:00

1.2 KiB

Processing confidence intervals

This page explains what we are doing when we take a 95% confidence interval, and we get a mean and a standard deviation from it

For normals

module Normal = {
  //...
  let from90PercentCI = (low, high) => {
    let mean = E.A.Floats.mean([low, high])
    let stdev = (high -. low) /. (2. *. 1.6448536269514722)
    #Normal({mean: mean, stdev: stdev})
  }
  //...
}

We know that for a normal with mean \mu and standard deviation \sigma,



a \cdot Normal(\mu, \sigma) = Normal(a\cdot \mu, |a|\cdot \sigma)


We can now look at the inverse cdf of a Normal(0,1). We find that the 95% point is reached at 1.6448536269514722. (source) This means that the 90% confidence interval is [-1.6448536269514722, 1.6448536269514722], which has a width of 2 \cdot 1.6448536269514722.

So then, if we take a Normal(0,1) and we multiply it by \frac{(high -. low)}{(2. *. 1.6448536269514722)}, it's 90% confidence interval will be multiplied by the same amount. Then we just have to shift it by the mean to get our target normal.

For lognormals