Error bar with CI 95 on bar graph
40 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi,
Can anyone tell how to apply CI 95% error bars on grouped bar graph.
Thanks
6 comentarios
Respuestas (1)
Adam Danz
el 15 de Nov. de 2019
Editada: Adam Danz
el 9 de Dic. de 2020
Here's an anonymous function that computes the 95% CI based on the tinv method which requires that your data approximately form a normal distirbution. See this link for more information on this function.
% x is a vector, matrix, or any numeric array of data. NaNs are ignored.
% p is a the confident level (ie, 95 for 95% CI)
% The output is 1x2 vector showing the [lower,upper] interval values.
CIFcn = @(x,p)std(x(:),'omitnan')/sqrt(sum(~isnan(x(:)))) * tinv(abs([0,1]-(1-p/100)/2),sum(~isnan(x(:)))-1) + mean(x(:),'omitnan');
% Demo
% x = randn(100,1) + 5;
% p = 95;
% CI = CIFcn(x,p)
Here's a demo using your code
EE = [0.0363 0.0312 0.0274 0.0244 0.0220 0.0200 0.0183 0.0168 0.0155 0.0143];
CIFcn = @(x,p)std(x(:),'omitnan')/sqrt(sum(~isnan(x(:)))) * tinv(abs([0,1]-(1-p/100)/2),sum(~isnan(x(:)))-1) + mean(x(:),'omitnan');
CI = CIFcn(EE,96);
% Compute the distance of the upper and lower bounds
CIdist = abs(CI-mean(EE));
% plot
plot(1, mean(EE), 'bo')
hold on
errorbar(1, mean(EE), CIdist(1), CIdist(2))
ylim([0, .05])
grid on
4 comentarios
Adam Danz
el 15 de Nov. de 2019
Editada: Adam Danz
el 15 de Nov. de 2019
I couldn't possibly answer that without knowing what inputs you're providing.
I have no idea what your data look like. Are you provding the CIFcn() function a matrix? a vector? If you're providing a matrix and you'd like to compute the CIs for each column, you'll need to provide each column as input individually or rewrite the function.
Ver también
Categorías
Más información sobre Data Distribution Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!