利用MATLAB绘制置信区域

2023-05-16

<MATLAB小技巧之二十四:利用MATLAB绘制置信区域>

 

***************************************

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

 

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

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

效果图如下图所示: 
 

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

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

果图如下图所示: 
 

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

效果图如下图所示: 
  

自编函数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*norminv(1-alpha/2,0,1); % 正态分布情形置信上限
            %lo = xm - xstd*tinv(1-alpha/2,n-1); % 正态分布情形置信下限
            %up = xm + xstd*tinv(1-alpha/2,n-1); % 正态分布情形置信上限
            TitleText = '置信区间(基于正态分布)';
        else
            lo = prctile(xdat,100*alpha/2); % 经验分布情形置信下限
            up = prctile(xdat,100*(1-alpha/2)); % 经验分布情形置信上限
            TitleText = '置信区间(基于经验分布)';
        end
        % 对落入区间内外不同点用不同颜色和符号绘图
        xin = xdat(xdat>=lo & xdat<=up);
        xid = find(xdat>=lo & xdat<=up);
        plot(xid,xin,'.')
        hold on
        xout = xdat(xdat<lo | xdat>up);
        xid = find(xdat<lo | xdat>up);
        plot(xid,xout,'r+')
        h = refline([0,lo]);
        set(h,'color','k','linewidth',2)
        h = refline([0,up]);
        set(h,'color','k','linewidth',2)
        xr = xlim;
        yr = ylim;
        text(xr(1)+range(xr)/20,lo-range(yr)/20,'置信下限',...
            'color','g','FontSize',15,'FontWeight','bold')
        text(xr(1)+range(xr)/20,up+range(yr)/20,'置信上限',...
            'color','g','FontSize',15,'FontWeight','bold')
        xlabel('观测序号')
        ylabel('观测值')
        title(TitleText)
        hold off
    case 2    % 二维情形(置信椭圆)
        x = xdat(:,1);
        y = xdat(:,2);
        s = inv(cov(xdat));  % 协方差矩阵
        xd = xdat-repmat(xm,[n,1]);
        rd = sum(xd*s.*xd,2);
        if strncmpi(distribution,'norm',3)
            r = chi2inv(1-alpha,p);
            %r = p*(n-1)*finv(1-alpha,p,n-p)/(n-p)/n;
            TitleText = '置信椭圆(基于正态分布)';
        else
            r = prctile(rd,100*(1-alpha));
            TitleText = '置信椭圆(基于经验分布)';
        end
        plot(x(rd<=r),y(rd<=r),'.','MarkerSize',16)  % 画样本散点
        hold on
        plot(x(rd>r),y(rd>r),'r+','MarkerSize',10)  % 画样本散点
        plot(xm(1),xm(2),'k+');  % 椭圆中心
        h = ellipsefig(xm,s,r,1);  % 绘制置信椭圆
        xlabel('X')
        ylabel('Y')
        title(TitleText)
        hold off;
    case 3    % 三维情形(置信椭球)
        x = xdat(:,1);
        y = xdat(:,2);
        z = xdat(:,3);
        s = inv(cov(xdat));  % 协方差矩阵
        xd = xdat-repmat(xm,[n,1]);
        rd = sum(xd*s.*xd,2);
        if strncmpi(distribution,'norm',3)
            r = chi2inv(1-alpha,p);
            %r = p*(n-1)*finv(1-alpha,p,n-p)/(n-p)/n;
            TitleText = '置信椭球(基于正态分布)';
        else
            r = prctile(rd,100*(1-alpha));
            TitleText = '置信椭球(基于经验分布)';
        end
        plot3(x(rd<=r),y(rd<=r),z(rd<=r),'.','MarkerSize',16)  % 画样本散点
        hold on
        plot3(x(rd>r),y(rd>r),z(rd>r),'r+','MarkerSize',10)  % 画样本散点
        plot3(xm(1),xm(2),xm(3),'k+');  % 椭球中心
        h = ellipsefig(xm,s,r,2);  % 绘制置信椭球
        xlabel('X')
        ylabel('Y')
        zlabel('Z')
        title(TitleText)
        hidden off;
        hold off;
end
%--------------------------------------------------
%   子函数:用来绘制置信区域(椭圆或椭球)
%--------------------------------------------------
function  h = ellipsefig(xc,P,r,tag)
% 画一般椭圆或椭球:(x-xc)'*P*(x-xc) = r
[V, D] = eig(P); 
if tag == 1
    aa = sqrt(r/D(1));
    bb = sqrt(r/D(4));
    t = linspace(0, 2*pi, 60);
    xy = V*[aa*cos(t);bb*sin(t)];  % 坐标旋转
    h = plot(xy(1,:)+xc(1),xy(2,:)+xc(2), 'k', 'linewidth', 2);
else
    aa = sqrt(r/D(1,1));
    bb = sqrt(r/D(2,2));
    cc = sqrt(r/D(3,3));
    [u,v] = meshgrid(linspace(-pi,pi,30),linspace(0,2*pi,30));
    x = aa*cos(u).*cos(v);
    y = bb*cos(u).*sin(v);
    z = cc*sin(u);
    xyz = V*[x(:)';y(:)';z(:)'];  % 坐标旋转
    x = reshape(xyz(1,:),size(x))+xc(1);
    y = reshape(xyz(2,:),size(y))+xc(2);
    z = reshape(xyz(3,:),size(z))+xc(3);
    h = mesh(x,y,z);  % 绘制椭球面网格图
end

 

转载于:https://www.cnblogs.com/caizhao/p/8081604.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用MATLAB绘制置信区域 的相关文章

  • 超宽带(UWB)无线通信技术介绍

    http hi baidu com hieda blog item 1cb9c81122eaed7acb80c42e html 一 超宽带无线通信技术 UWB 简介 二 超宽带无线通信技术概述 作者 李唐 刘亚峰 三 超宽带 UWB 无线通
  • TTGO T-Watch-2020 编程系列(二) 开发环境的搭建Windows

    现阶段只介绍windows下的环境搭建 xff0c Linux和Mac的环境类似 这里只介绍Arduino开发 xff0c 还可以用其他的工具 visual studio code 43 PlatformIO或者micropython等 x
  • Bag-of-words model

    Bag of words model BoW model 最早出现在NLP和IR领域 该模型忽略掉文本的语法和语序 用一组无序的单词 words 来表达一段文字或一个文档 近年来 BoW模型被广泛应用于计算机视觉中 与应用于文本的BoW类比
  • 链式队列小结

    1 队列的特性是先进先出 xff1b 最小单元是一个节点 包含了datatype和next xff0c 其中datatype是可以自定义的结构体 xff0c 包含了多种类型的数据 2 对队列有队尾指针和队头指针进行封装 后面的操作是对他进行
  • linux 学习笔记 我 整理了好久

    printenv 查看环境 hash 查看缓存命令 clock hwclock date 查看时间 help 43 command 获得帮助 command help man command 用户命令 bin usr bin usr loc
  • .net 打开服务器文档,net 网络

    net Socket 类 新增于 v0 3 4 此类是 TCP 套接字或流式 IPC 端点 在 Windows 上使用命名管道 xff0c 否则使用 Unix 域套接字 的抽象 它也是 EventEmitter net Socket 可以由
  • 工控机的io开发_C#调用工控机dll文件,实现对IO的控制

    本文旨在记录 xff0c C 通过调用外部DLL文件实现对Nuvo3120工控机IO口的控制 前期 xff0c 了解了C 43 43 中 c h lib文件的区别 xff0c 以及用这些文件生成DLL的方法 xff0c 后面通过厂家直接找到
  • 姿态估计中的雅可比求导

    问题描述 姿态估计是SLAM中的一个基础问题 基于重投影误差的问题描述一般为求解下列的优化问题 min mathbf T mathbf f quad mathbf f 61 mathbf e T mathbf e 61 parallel p
  • linux安装杀毒软件

    https www cnblogs com bingo1024 p 9018212 html 转载于 https www cnblogs com majianyu p 10490920 html
  • Ubantu下VSCode安装及使用makefile链接调试

    一 安装VSCode 1 通过官方PPA安装Ubuntu make sudo add apt repository ppa ubuntu desktop ubuntu make sudo apt get update sudo apt ge
  • Git和SourceTree配合使用

    Git介绍 git是当今最强大的本地的分布式代码版本管理工具 git的核心概念与操作 xff1a 开发环境 xff0c 本地仓库 xff0c 远程仓库 他们的关系如下图 xff1a 与CVS及SVN的比较 xff1a CVS及SVN都是集中
  • 安装vmware tools 后也不能和主机之间复制、粘贴内容、拖拽文件的解决方案

    1 先尝试重新安装vmware tools 2 换最新版本的vmware player 3 运行以下命令 sudo apt get autoremove open vm tools sudo apt get install open vm
  • linux 应用网络连接失败的原因,PuTTY网络错误:软件导致连接中止

    解决PuTTY网络错误 Software caused connection abort 阅读有关该错误的PuTTY怎么说 这是Windows网络代码由于某种原因而终止已建立的连接时所产生的一般错误 例如 xff0c 如果将网络电缆从连接以
  • 智能革命之读书笔记

    我在孩童时代听说机器人时内心觉得那是距离我所生活的时代遥不可及的事物 xff0c 大学时听说人工智能 xff0c 一直对它敬而远之 xff0c 甚至对它有一种畏惧情绪 xff0c 心里一直有种担忧 xff0c 人工智能高度发展 xff0c
  • PX4 FMU [5] Loop

    PX4 FMU 5 Loop PX4 FMU 5 Loop 转载请注明出处 更多笔记请访问我的博客 xff1a merafour blog 163 com 201
  • 简历中工作经验应该如何写

    许多学习软件开发的学员不知道如何在个人简历中如何填写 项目经验 或 项目描述 xff0c 最近接触的一些学习Java的学生在简历中 xff0c 往往项目经验及描述都只能寥寥几笔完事 xff0c 这样的简历肯定是不吸引招聘企业HR的 那么软件
  • 计算机关机界面卡住,电脑关机时卡在关机界面的解决方法

    电脑关机时卡在关机界面的解决方法 发布时间 xff1a 2012 11 19 12 13 04 作者 xff1a 佚名 我要评论 笔记本或台式电脑的XP系统在关机的时候 xff0c 提示正在关闭或正在注销 xff0c 却一直无法正常关闭电脑
  • vue 指定index.html,在vue中,v-for的索引index在html中的使用方法

    在vue中 v for的索引index在html中的使用方法 如下所示 xff1a 以上这篇在vue中 v for的索引index在html中的使用方法就是小编分享给大家的全部内容了 xff0c 希望能给大家一个参考 xff0c 也希望大家
  • windows10 ubuntu子系统 WSL文件位置

    windows10 的linux子系统 xff08 windows subsystem for linux WSL 文件位置 以我的系统为例 xff0c WSL的root目录对应windows的 xff1a C Users xiaoPeng
  • CrawlSpiders简介

    转 xff1a https www cnblogs com ellisonzhang p 11124516 html 4295547 一 CrawlSpiders类简介 通过下面的命令可以快速创建 CrawlSpider模板 的代码 xff

随机推荐

  • python网络协议

    一 互联网的本质 咱们先不说互联网是如何通信的 发送数据 xff0c 文件等 xff0c 先用一个经典的例子 xff0c 给大家说明什么是互联网通信 现在追溯到八九十年代 xff0c 当时电话刚刚兴起 xff0c 还没有手机的概念 xff0
  • 通过css 改变通过img标签引入的svg颜色

    前言 修改svg颜色 xff0c 一般直接修改文件的svg的fill属性就可以了 xff0c 可以直接改svg属性 xff0c 也可以通过css修改 xff0c 但是前端一般都是通过img标签直接引入的svg图片 xff0c 这样不管是从后
  • Linux环境下vs code中Markdown与PlantUML联合工作

    PlantUML是一个可以让你快速编写UML图的组件 在线服务器 https www plantuml com plantuml uml SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 Markdown是一种轻量级标记语言
  • FPGA到底是什么

    做FPGA设计这么久 xff0c 每次给别人介绍的时候 xff0c 总是感觉讲的不够深刻 xff0c 惭愧惭愧惭愧 这次 xff0c 我就FPGA的硬件属性来展开 xff0c 简单写写 xff0c 与大家分享 我的许多朋友都是经验丰富的算法
  • 一个玩游戏的失足青年,转行做游戏开发到教育的挣扎过程

    14年的IT从业经历 xff0c 中专毕业后在小镇上开过网吧 在网吧一年多的时间里 xff0c 天天陪人玩游戏 xff0c 后来去读了一个三流计算机专业 xff0c 毕业后转做软件开发 xff0c 最近五年转入游戏开发行业 xff01 从网
  • 电路设计基础--MOS管驱动直流电机电路,看懂芯片手册

    本例以驱动继电器为例 xff0c 来讲述相关电路设计 xff0c MOS管选型 xff0c 以及看懂芯片手册 驱动电路如下图 D1作用是泄放继电器的反向电动势 继电器参数 24V继电器 电大负载25A 250VAC xff0c 线圈电阻64
  • linux下 /usr/bin/ld: 找不到 -ldhnetsdk的解决方法

    linux下使用Qt编译程序的时候 xff0c 安装了程序自带的链接库之后 xff0c 仍然上报这个错误 xff0c 发现系统上报这个错误 xff1a usr bin ld 找不到 ldhnetsdk 经过仔细的定位 xff0c 终于解决了
  • 无人机--飞控科普

    无人机是无人驾驶飞机的简称 xff08 Unmanned Aerial Vehicle xff0c UAV xff09 xff0c 是利用无线电遥控设备和自备的程序控制装置的不载人飞机 xff0c 包括无人直升机 固定翼机 多旋翼飞行器 无
  • 远程桌面使用双屏或多屏

    选项 显示 将所有监视器用于显示 查了半天居然没有靠谱答案 xff0c 自己动手发现 转载于 https www cnblogs com phoenix p 4294103 html
  • 问题记录:未设置为接受端口“文件和打印机共享(SMB)”上的连接

    解决办法 xff1a 网络 xff08 右击 xff09 属性 本地连接 xff08 右击 xff09 属性 此连接使用下列选项 Microsoft网络的文和打印共享 xff08 打上勾 xff09 转载于 https www cnblog
  • arduino 语音音箱 :语音控制、MP3播放、报时、回复温湿度情况

    arduino 语音音箱 xff1a 语音控制 MP3播放 报时 回复温湿度情况 效果图 线路图 包装后的效果 功能 需要材料 arduino板MP3播放模块及喇叭时钟模块温湿度模块语音识别模块面包板及其他线材 电阻TF卡 xff08 用于
  • 通过多张网卡发送UDP多播(组播)数据

    在具有多个网卡的机器上 xff0c 如果想要从每个网卡发送UDP数据 xff0c 一般的做法是 xff1a 针对每张网卡的每个IP都绑定一个SOCKET xff0c 然后发送的时候针对每个SOCKET都发送一次 但是如果你要发送多播数据 x
  • 常见的HTTP状态码

    本内容摘抄自RESTful WebServices 中文译本附录B 39 42种常见的HTTP响应代码 39 原文作者 xff1a Leonard Ricbardson amp Sam Ruby 翻译 xff1a 徐涵 李红军 胡伟 1 三
  • ps快速切图

    妈呀 xff0c 不得不感慨一下 xff0c 切了这么久的图 xff0c 竟然不知道有个切图工具这么好用 以前我的切图流程 xff1a 拿到ui设计好的psd文件 61 61 gt 拉基准线 61 61 gt 切片工具切图 61 61 gt
  • MongoDB v4.0 命令

    MongoDB v4 0 命令 官方文档 gt 点这里 lt 操作系统库 操作管理员库 use admin 鉴权 db auth 34 root 34 34 admin 34 用户查看 格式美化 db system users find p
  • 查看端口是否可访问(防火墙拦截处理)

    telnet ip 端口 例如 xff1a telnet 10 20 113 15 8080 出现 Escape character is 表示连接 xff0c 没有被防火墙拦截 转载于 https www cnblogs com kdx
  • ESP32-CAM上手

    硬件 ESP32 CAM摄像头开发板 安信可科技 ESP32 CAM摄像头开发板 https item taobao com item htm spm 61 a1z09 2 0 0 67002e8dvbTVMF amp id 61 6159
  • 面试时如何做好5分钟自我介绍?

    有简历 xff0c 为何还要自我介绍 xff1f 一个常规的面试 xff0c 寒暄之后面试官提出的第一个问题几乎千篇一律 xff1a 请您简单地做一下自我介绍 有些被面试者都会问 xff1a 简历中情况已经写得很清楚了 xff0c 这是否多
  • windows查看当前python的版本

    1 Ctrl 43 R打开控制台 输入python之后回车 转载于 https www cnblogs com CK85 p 10243904 html
  • 利用MATLAB绘制置信区域

    lt MATLAB小技巧之二十四 xff1a 利用MATLAB绘制置信区域 gt 统计中经常会遇到求置信区间 置信区域 xff08 如置信椭圆 置信椭球 xff09 等 xff0c 有时候需要把置信区域画出来 xff0c 这样看起看更为直观