Comment tracer des intervalles de confiance dans MATLAB?
-
05-07-2019 - |
Question
Je souhaite tracer des graphiques d'intervalle de confiance dans MATLAB, mais je ne sais pas du tout comment le faire. J'ai les données dans un fichier .xls.
Quelqu'un peut-il me donner un indice ou connaît-il les commandes permettant de tracer des CI?
La solution
Je ne suis pas sûr de comprendre ce que vous entendez par graphique d'intervalles de confiance, mais voici un exemple de tracé d'un IC à deux côtés à 95% d'une distribution normale:
alpha = 0.05; % significance level
mu = 10; % mean
sigma = 2; % std
cutoff1 = norminv(alpha, mu, sigma);
cutoff2 = norminv(1-alpha, mu, sigma);
x = [linspace(mu-4*sigma,cutoff1), ...
linspace(cutoff1,cutoff2), ...
linspace(cutoff2,mu+4*sigma)];
y = normpdf(x, mu, sigma);
plot(x,y)
xlo = [x(x<=cutoff1) cutoff1];
ylo = [y(x<=cutoff1) 0];
patch(xlo, ylo, 'b')
xhi = [cutoff2 x(x>=cutoff2)];
yhi = [0 y(x>=cutoff2)];
patch(xhi, yhi, 'b')
Autres conseils
Après avoir lu de nombreux sujets, voici ma tentative.
% Get some random data
x = linspace(0.3, pi-0.3, 10);
Data = sin(x) + randn(1, 10)/10;
Data_sd = 0.1+randn(1,10)/30;
% prepare it for the fill function
x_ax = 1:10;
X_plot = [x_ax, fliplr(x_ax)];
Y_plot = [Data-1.96.*Data_sd, fliplr(Data+1.96.*Data_sd)];
% plot a line + confidence bands
hold on
plot(x_ax, Data, 'blue', 'LineWidth', 1.2)
fill(X_plot, Y_plot , 1,....
'facecolor','blue', ...
'edgecolor','none', ...
'facealpha', 0.3);
hold off
Généralement basé sur cette question: Traçage avec transparence
Voir par exemple ces fichiers m sur l’échange de fichiers Matlab:
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow