如何绘制具有1000个数据的2个随机变量的联合分布 [英] how to plot joint distribtuion of 2 random variable having 1000 data
本文介绍了如何绘制具有1000个数据的2个随机变量的联合分布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我编写的用于生成两个随机变量的概率分布的代码.现在我想绘制JPD.
here is the code i wrote to generate probability distribtuion of two random variable. now i would like to plot JPD.
clear all;
clc;
x1 = randn(1000,1);
x2 = 10*randn(1000,1);
[count_1, b] = hist(x1, 25); %25 bins
pd1 = count_1 / length(x1) / (b(2) - b(1)); % probability distribution function of x1
[count_2, bn] = hist(x2, 25); %25 bins
pd2 = count_2 / length(x2) / (bn(2) - bn(1)); % probabitlity distribtuion function of x2
%subplot(2,2,1), plot(x,s1)
%subplot(2,2,2),plot(x,s2)
%subplot(2,2,1),plot(b,pd1)
%subplot(2,2,2),plot(bn,pd2)
我正在努力获得ans..plz的任何帮助..i我已经尝试了一个多月 谢谢.
I am trying hard to get ans..plz any help out there..i have been tryihng over a month Thanks..
推荐答案
我知道您的联合pdf格式不是封闭格式,而是仅数据"格式.使用Matlab,您确实可以使用名为hist3
I understand you don't have close form for your joint pdf, but "only the data". Using Matlab, you can indeed use this tool named hist3
% Generate random data
nData = 1e5;
data = zeros(2,nData);
m1 = 0; m2 = 1;
s1 = 1; s2 = 2;
for i=1:nData
d1 = m1+s1*randn;
d2 = m2+s2*randn;
data(:,i) = [d1; d2];
end
% hist3 will bin the data
xi = linspace(min(data(1,:)), max(data(1,:)), 50);
yi = linspace(min(data(2,:)), max(data(2,:)), 50);
hst = hist3(data,{xi yi}); %removed extra '
% normalize the histogram data
dx = xi(2)-xi(1);
dy = yi(2)-yi(1);
area = dx*dy;
pdfData = hst/sum(sum(hst))/area;
% plot pdf
figure(2); clf
contour(xi,yi,pdfData);
希望这对您有帮助.
这篇关于如何绘制具有1000个数据的2个随机变量的联合分布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文