Why is bootci giving different interval than prctile?

30 views (last 30 days)
I was trying to show confidence interval on a histogram with the following code.
n = 10e3;
data = randn(n,1);
alpha = 0.05;
nboot = 10e3;
mu = mean(data);
[ci,bootstat] = bootci(nboot,{@mean,data},"Alpha",alpha,"Type","percentile");
bootstat = bootstat-mu;
ci = ci-mu;
figure
histogram(bootstat,"Normalization","cdf")
hold on
yline(alpha, "Color","#D95319")
yline(1-alpha, "Color","#D95319")
xline(ci(1), "Color","#D95319")
xline(ci(2), "Color","#D95319")
The computed confidence interval does not aligne with the "cdf" histogram. But when I compute the interval using the following function, then it aligns as expected.
ci = prctile(bootstat, [alpha*100,(1-alpha)*100]);
Does anybody know, why is that the case?

Accepted Answer

Adam Danz
Adam Danz ungefär 3 timmar ago
Edited: Adam Danz ungefär 2 timmar ago
You're using two different alpha values.
When you call bootci, you specify alpha as 0.05 or 5%.
When you call prctile, you're setting the p endpoints to 5% and 95% which is a 10% alpha value.
Instead,
ci = prctile(bootstat, [alpha/2,1-alpha/2]*100);
Remember, when alpha equal 5, that means the interval is the middle 95% of your data. The remaining 5% is split up on each side of the distribution with 2.5% on each side. So, the left bound will be at 2.5% and the right bound at 100-2.5 or 97.5%.
  1 Comment
Jakub
Jakub ungefär 2 timmar ago
Thanks for clarifying! I see that I did not understand the meaning of alpha.

Sign in to comment.

More Answers (1)

the cyclist
the cyclist ungefär 3 timmar ago
Because your prctile calculation should be
ci = prctile(bootstat, [(alpha/2)*100,(1-(alpha/2))*100]);

Products


Release

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!