Width of a Confidence Interval

Width of a Confidence Interval

In the class, we have seen that a \(100(1-\alpha)\%\) confidence interval for \(\mu\), when the population is \(N(\mu, \sigma^2)\) with known \(\sigma^2\), is:

\((\bar{X} - z_{1-\alpha/2}*\frac{\sigma}{\sqrt n}, \bar{X} + z_{1-\alpha/2}*\frac{\sigma}{\sqrt n})\).

The confidence interval length is: \(2 * z_{1-\alpha/2}*\frac{\sigma}{\sqrt n}\).

#import required libraries
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import math
import ipywidgets as widgets
from IPython.display import display
def ci_width(conf_level, sigma, n):

    mu = 10
    sd = sigma
    two_tail_prob = (1-conf_level)/2  
    upper_bound = stats.norm.ppf(q = (1-two_tail_prob), loc = mu, scale = sd/math.sqrt(n))  
    lower_bound = stats.norm.ppf(q = (two_tail_prob), loc = mu, scale = sd/math.sqrt(n))
    
    #start off plotting 
    fig, ax = plt.subplots(figsize = (6, 6))

    #for pdf curve
    #generate synthetic data to plot the pdf
    xbar = stats.norm.rvs(loc = mu, scale = sd/math.sqrt(n), size = 10000)
    xbar1 = np.sort(xbar)

    plt.plot(xbar1, stats.norm.pdf(xbar1, loc = mu, scale = sd/math.sqrt(n)))

    x2 = np.arange(lower_bound, upper_bound, 0.01)

    plt.fill_between(x2,stats.norm.pdf(x2, loc = mu, scale = sd/math.sqrt(n)), color='blue')
    
    plt.text(int(np.min(xbar1))+1,np.max(stats.norm.pdf(xbar1, loc = mu, scale = sd/math.sqrt(n)))-0.05,
         "CI Length = $%.4f$" % (2*(upper_bound-lower_bound)), fontsize=14)
       
    plt.show()
con_level_wid = widgets.FloatSlider(min = 0.9, max = 0.99, step=0.01, value=0.95, description = "Clevel")
sigma_wid = widgets.FloatSlider(min = 0.1, max = 10, step=0.1, value=1, description = "Sigma")
size_wid = widgets.IntSlider(min = 1, max = 200, step=1, value=50, description = "Size")
widgets.interact(ci_width, conf_level = con_level_wid, sigma = sigma_wid, n = size_wid);
#ci_width(conf_level = 0.99, sigma = 4, n = 100)