士郎小天使 2021-10-22 02:46 采纳率: 78.9%
浏览 205
已结题

matlab中,有一组二维数据,如何绘制三维的联合经验分布函数图

如果是一维数据X,就能直接用[f,x] = ecdf(X)来绘制经验分布函数图,但如果是二维的数据数据[X,Y],要如何绘制二维数据的三维联合经验分布函数图。最开始我是直接分别算ecdf 得到两个f和x,y。结果的x,y做X轴Y轴的值,两个f相乘做Z轴。代码如下,绘制的图比较相近。
但是我问了下导师,我这种求法前提是X和Y是相互独立的。我的数据[X Y]中的X和Y不是独立的,不能简单地分别用ecdf来求然后概率相乘。想问下大神们,一组二维数据,要如何绘制三维的联合经验分布函数图

Z=xlsread('Linton3.xlsx')
X=Z(:,1);
Y=Z(:,2);
[f1,x] = ecdf(X);
[f2,y] = ecdf(Y);
[XX,YY]=meshgrid(x,y);
[ff1,ff2]=meshgrid(f1,f2);
ZZ=ff1.*ff2
surf(XX,YY,ZZ,'EdgeColor','none');

img

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-22 17:16
    关注

    你好同学,给你编了一个专属函数ecdf2:

    function [X, Y, CDF] = ecdf2(x,y,nx,ny,xminmax,yminmax)
    % x:x的值
    % y:y的值
    % nx:x方向划分段数
    % ny:y方向划分段数
    % xminmax = [xmin, xmax]
    % yminmax = [ymin, ymax]
    num = length(x);
    if(num~=length(y))
       error('输入的x和y长度必须相等') 
    end
    if(nargin>6) % 如果变量个数大于6个,太多了
        error('太多输入变量')
    elseif(nargin<2) % 如果变量个数小于2个,太少了
        error('输入变量数目不足!!')
    end
    if(nargin==6) % 如果变量个数等于6个,赋值给ymin和ymax
        ymin = yminmax(1);
        ymax = yminmax(2);
    end
    if(nargin>=5)% 如果变量个数大于等于5个,赋值给xmin和xmax
        xmin = xminmax(1);
        xmax = xminmax(2);
    end
    if(nargin<=4)% 如果变量个数小于等于4个,自定义xmin和xmax
        xmin = min(x);
        xmax = max(x)+eps;
        ymin = min(y);
        ymax = max(y)+eps;
    end
    if(nargin<=3)% 如果变量个数小于等于3个,自定义y方向划分段数ny
        ny = 30;
    end
    if(nargin==2)% 如果变量个数等于2个,自定义x方向划分段数nx
        nx = 30;
    end
    xg = linspace(xmin, xmax, nx);%x方向的点
    yg = linspace(ymin, ymax, ny);%y方向的点
    [X,Y] = meshgrid(xg, yg);%形成网格
    [I,J] = meshgrid(1:nx, 1:ny);%下标网格
    CDF = arrayfun(@(i,j)sum(x<X(i,j)&y<Y(i,j))/num,I,J);%形成经验分布
    end
    

    然后调用就行:

    clc;clear
    num = 1000000;
    x = randn(num,1);% 为了说明弄了两个正态分布搞联合,实际数据会更好
    y = randn(num,1);
    [X, Y, CDF] = ecdf2(x,y);% ,50,50,[-3, 3],[-3, 3]
    surf(X,Y,CDF)
    

    可以看到效果杠杠的:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 Linux环境下CA证书更新问题
  • ¥15 sqlserver语句提取结果以外数据
  • ¥60 微信小程序如何上传QQ聊天文件
  • ¥300 开发的系统遭到无良商家的破解,请问如何防止再次发生,并追回损失
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)