【问题标题】:Ploting Confidence interval from only mean and standard deviation仅根据均值和标准差绘制置信区间
【发布时间】:2017-04-01 03:50:32
【问题描述】:

我正在尝试根据数据的均值和标准差 (std) 绘制置信区间。这是我写的一段代码:

 MeanA=1.876; %mean of A
 STDA=0.018; % std of A
MeanB=1.821;
STDB=0.039;

MeanC=1.735;
 STDC=0.023;
 MeanD=1.667;
STDD=0.039;
 Y = [MeanA MeanB ;
       MeanC MeanD ];     
errY= [STDA STDB;
         STDC   STDC ];

如果我绘制正态分布,那么它们的置信区间似乎重叠

 alpha = 0.05;          % significance level


for tt=1:length(Y)
figure
mu = Y(tt,1);               % mean
 sigma = errY(tt,1);  
cutoff1n = norminv(alpha, mu, sigma);
cutoff2n = norminv(1-alpha, mu, sigma);
 xn = [linspace(mu-4*sigma,cutoff1n), ...
linspace(cutoff1n,cutoff2n), ...
linspace(cutoff2n,mu+4*sigma)];
yn = normpdf(xn, mu, sigma);
plot(xn,yn)
mu = Y(tt,2);               % mean
sigma = errY(tt,2);  
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);
hold on, plot(x,y)
plot(x,y,'r-',xn,yn,'g-' , 'LineWidth',3) 
set(gca,'Fontsize', 32)
if tt==1
hleg1=legend('A', 'B');
title('study1')
elseif tt==2
hleg1=legend('C', 'D');
title('Study2') 
end
 set(hleg1,'Location','NorthEastoutside')
 set(gca,'Fontsize',22)
 xlo = [x(x<=cutoff1) cutoff1];
 ylo = [y(x<=cutoff1) 0];
 patch(xlo, ylo, 'r')
 xhi = [cutoff2 x(x>=cutoff2)];
 yhi = [0 y(x>=cutoff2)];
 patch(xhi, yhi, 'r')
 xlon = [xn(xn<=cutoff1n) cutoff1n];
 ylon = [yn(xn<=cutoff1n) 0];
  patch(xlon, ylon, 'g') 
  xhin = [cutoff2n xn(xn>=cutoff2n)];
  yhin = [0 yn(xn>=cutoff2n)];
  patch(xhin, yhin, 'g')
end

我获得了置信区间 (CI) 重叠的图。

现在我需要以 ; 的形式绘制 CI

有人可以帮助围绕均值绘制 CI

%%

我正在按以下方式计算 Ci:

    SE2=errY/sqrt(10);
    CI2n=Y-1.96*(SE2);
    CI2p=Y+1.96*(SE2);

请告诉它是否正确,如果是,我该如何绘制它们。谢谢

【问题讨论】:

    标签: matlab statistics confidence-interval


    【解决方案1】:

    当标准差sigma 已知且样本大小为n 时,均值mu 的95% 置信区间由下式给出

    CI = mu +/- 1.96*sigma/sqrt(n)
    

    因此对于mu = Ysigma = errY,您计算的95% 置信区间对于n = 10 的样本大小是正确的。

    要使用误差线绘制这些值,请使用 MATLAB 的 errorbar 函数 (documentation) 尝试以下操作:

    n = 10;
    SE2=errY/sqrt(n);
    for i = 1:size(SE2,1)
        figure
        y = Y(i,:);
        x = 1:length(y);
        e = 1.96*SE2(i,:);
        errorbar(1:length(y),y,e,e,'k.','markersize',18);
        if i == 1
            c = ['A';'B'];
        elseif i == 2
            c = ['C';'D'];
        end
        set(gca,'xtick',x,'xticklabels',c)
    end
    

    产生this image(我想将图像内联,但缺乏足够的代表)。

    您可能会注意到置信区间似乎没有重叠。但是,我们可以通过设置n = 1 来获得密度图中的结果,即CI = mu +/- 1.96*sigma。我会发布第二张图片,但我需要更多代表!

    【讨论】: