加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用MATLAB绘制置信区域

(2017-06-04 17:44:49)
分类: matlab研究

统计中经常会遇到求置信区间、置信区域(如置信椭圆、置信椭球)等,有时候需要把置信区域画出来,这样看起看更为直观,下面结合具体案例介绍调用自编函数ConfidenceRegion绘制置信区域。

 

【例1】绘制置信区间。产生一元正态分布随机数向量,绘制样本数据的95%置信区间。

 
x = normrnd(10,4,100,1);
subplot(1,2,1)
ConfidenceRegion(x)
subplot(1,2,2)
ConfidenceRegion(x,'exp')

效果图如下图所示: 
http://attach.matlabsky.com/data/attachment/forum/201104/14/1621046cuwc2b669m6e9j4.jpg.thumb.jpg  

【例2】绘制置信椭圆。产生二元正态分布随机数矩阵,绘制样本数据的95%置信椭圆区域。

 x = mvnrnd([1;2],[1 4;4 25],100);
subplot(1,2,1)
ConfidenceRegion(x)
subplot(1,2,2)
ConfidenceRegion(x,'exp')

果图如下图所示: 
http://attach.matlabsky.com/data/attachment/forum/201104/14/162103keph6eo040heploi.jpg.thumb.jpg  

【例3】绘制置信椭球。产生三元正态分布随机数矩阵,绘制样本数据的95%置信椭球区域。 
x = mvnrnd([1;2;3],[3 0 0;0 5 -1;0 -1 1],100);
subplot(1,2,1)
ConfidenceRegion(x)
subplot(1,2,2)
ConfidenceRegion(x,'exp')

效果图如下图所示: 
http://attach.matlabsky.com/data/attachment/forum/201104/14/1621079p0w12epep0j0js9.jpg.thumb.jpg   

自编函数ConfidenceRegion程序代码如下:

 
function ConfidenceRegion(xdat,alpha,distribution)
  绘制置信区域(区间、椭圆区域或椭球区域)
  ConfidenceRegion(xdat,alpha,distribution)
  xdat:样本观测值矩阵,p*N 或 N*p的矩阵,p = 1,2 或 3
  alpha:显著性水平,标量,取值介于[0,1],默认值为0.05
  distribution:字符串('norm'或'experience'),用来指明求置信区域用到的分布类型,
  distribution的取值只能为字符串'norm'或'experience',分别对应正态分布和经验分布
  CopyRight:xiezhh(谢中华)
  date:2011.4.14
%
  example1:x = normrnd(10,4,100,1);
            ConfidenceRegion(x)
            ConfidenceRegion(x,'exp')
  example2:x = mvnrnd([1;2],[1 4;4 25],100);
            ConfidenceRegion(x)
            ConfidenceRegion(x,'exp')
  example3:x = mvnrnd([1;2;3],[3 0 0;0 5 -1;0 -1 1],100);
            ConfidenceRegion(x)
            ConfidenceRegion(x,'exp')
% 设定参数默认值
if nargin == 1
    distribution = 'norm';
    alpha = 0.05;
elseif nargin == 2
    if ischar(alpha)
        distribution = alpha;
        alpha = 0.05;
    else
        distribution = 'norm';
    end
end
% 判断参数取值是否合适
if ~isscalar(alpha) || alpha>=1 || alpha<=0
    error('alpha的取值介于0和1之间')
end
if ~strncmpi(distribution,'norm',3) && ~strncmpi(distribution,'experience',3)
    error('分布类型只能是正态分布(''norm'')或经验分布(''experience'')')
end
% 检查数据维数是否正确
[m,n] = size(xdat);
p = min(m,n);  % 维数
if ~ismember(p,[1,2,3])
    error('应输入一维、二维或三维样本数据,并且样本容量应大于3')
end
% 把样本观测值矩阵转置,使得行对应观测,列对应变量
if m < n
    xdat = xdat';
end
xm = mean(xdat); % 均值
n = max(m,n);  % 观测组数
% 分情况绘制置信区域
switch p
    case 1    % 一维情形(置信区间)
        xstd = std(xdat); % 标准差
        if strncmpi(distribution,'norm',3)
            lo = xm - xstd*norminv(1-alpha/2,0,1); % 正态分布情形置信下限
            up = xm + xstd*

...

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有