Skip to main content

Section D.6 Difference in IQR / Median

Here’s one more robust measure of variability.
Listing D.6.1. Python Code
def diff_relative_iqr(sample):
    """Difference in IQR / median (M minus female)

    sample: DataFrame with `_SEX` and `HTM4` columns

    returns: float
    """
    sample["HTM4"] += np.random.normal(0, 1, size=len(sample))
    grouped_heights = sample.groupby("_SEX")["HTM4"]
    medians = grouped_heights.median()

    # the results depend on which quantiles we use
    iqrs = grouped_heights.quantile(0.75) - grouped_heights.quantile(0.25)

    return -diff(iqrs / medians)
Listing D.6.2. Python Code
diff_relative_iqr(sample)
Listing D.6.3. Python Code
t5 = sampling_dist(brfss, diff_relative_iqr)
np.mean(t5)
Listing D.6.4. Python Code
plot_sampling_distribution(t5, format_str="0.4f")
plt.title("Difference in IQR / median", fontsize=14)
Listing D.6.5. Python Code
p_value(t5)