How to find Joint PMF for three vectors using MATLAB
8 ビュー (過去 30 日間)
古いコメントを表示
I want to find the joint Probability Mass Function of three vectors which are quite large in number; and I need to find joint PMF for three vectors. Following is the code written but I am getting error with it:
% code
clear all; clc
filename = 'Case_I.xlsx';
num=xlsread('Case_I.xlsx'); %Case I Excel file contains data with 3 column vectors
xi = linspace(min(num(:,1)), max(num(:,1)));
yi = linspace(min(num(:,2)), max(num(:,2)));
zi = linspace(min(num(:,3)), max(num(:,3)));
hst = hist3(num,{xi yi zi});
pmf = hst/sum(hst(:));
The error I am getting is:
Error using hist3 (line 119) Bin centers must be specified with a cell array containing two numeric vectors.
Error in CaseIV_JointPMF1 (line 9) hst = hist3(num,{xi yi zi});
Any help in this regard on finding the PMF of three or more vectors will be appreciated. Thanks.
0 件のコメント
回答 (1 件)
Hoda Akl
2020 年 1 月 24 日
編集済み: Hoda Akl
2020 年 1 月 24 日
Hello,
I just faced the same problem and I solved it the following way:
after you have your data in a matrix where the first column is variable 1, second is variable 2, third is variable 3 , which I assume is the matrix here that you call "num" ,
valuesx = sort(unique(num(:,1))); %this gets the unique values of each variable
valuesy = sort(unique(num(:,2)));
valuesz = sort(unique(num(:,3)));
probmat = zeros(length(valuesx),length(valuesy),length(valuesz));
for i=1:length(valuesx)
for j=1:length(valuesy)
for k = 1:length(valuesz)
%the sum gets how many instances those three events occured
%together and then divides by the total number of instances to
%normalize the probability
probmat(i,j,k) = (sum(num(:,1) == valuesx(i) & num(:,2) == valuesy(j) & num(:,3) == valuesz(k)))/size(num,1);
end
end
end
% probmat is your joint distribution
You should check that all values in probmat add up to 1.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Linear and Nonlinear Regression についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!