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 μ and standard deviation σ,
a⋅Normal(μ,σ)=Normal(a⋅μ,∣a∣⋅σ)
We can now look at the quantile 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⋅1.6448536269514722.
So then, if we take a Normal(0,1) and we multiply it by (2.∗.1.6448536269514722)(high−.low), 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.