如何在MATLAB中绘制置信区间?

3

我想在MATLAB中绘制一些置信区间图,但我完全不知道该如何做。我有一个.xls文件中的数据。

有人可以给我一些提示吗?或者有人知道绘制置信区间图的命令吗?


ciplot函数非常方便。 https://www.mathworks.com/matlabcentral/fileexchange/63314-ciplot-lower-upper-x-colour-alpha - SecretAgentMan
3个回答

9

在阅读了许多帖子之后,这是我的尝试。

在此输入图片描述

% 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 

此问题的大部分内容基于:Plotting with transparency


6

我不确定您所说的置信区间图是什么,但这是绘制正态分布双侧95% CI的示例:

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')

plot


谢谢Amro.......但我想知道如何制作像下面链接中显示的图表:http://psycnet.apa.org/journals/bne/115/4/images/bne_115_4_764_fig5a.gif我希望图表中能够显示差异的条形,即如果图表中有很大的差异,则条形应该更长,如果差异较小,则图表应该有较短的条形。你明白我的意思吗?期待您的回复。 - Haqan
1
我认为你所要求的是 errorbar 函数:http://www.mathworks.com/access/helpdesk/help/techdoc/ref/errorbar.html - Amro

4

谢谢rcs!由于我是Matlab的初学者,你能告诉我如何运行这个m文件吗?因为我看到了一个错误。我需要指定一些输入参数或文件来生成一个图形吗? - Haqan
(+1),ciplot https://www.mathworks.com/matlabcentral/fileexchange/63314-ciplot-lower-upper-x-colour-alpha - SecretAgentMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接