Matlab来自数据集的条件概率

时间:2014-11-22 10:39:16

标签: matlab dataset probability

我有一个M的{​​{1}},我需要计算条件概率。我已经对我的数据进行了分离,然后我的代码目前仅适用于500x5个变量,而不是3,但现在这样做很好。

以下代码已经计算出5A=1B=1的次数,我们得到的次数C=1A=2B=1等。

C=1

所以我需要代码总结以获得我们获得data = M; npatients=size(data,1) asum=zeros(4,2,2) prob=zeros(4,2,2) for patient=1:npatients, h=data(patient,1) i=data(patient,2) j=data(patient,3) asum(h,i,j)=asum(h,i,j)+1 end for h=1:4, for i=1:2, for j=1:2, prob(h,i,j)=asum(h,i,j)/npatients end end end A=1(添加所有C)的时间来查找:

B=1

这是第一条规则的规则优势。我需要了解如何循环Prob(C=1 given A=1 and B=1) = P(A=1,B=1, C=1)/P( A=1, B=1). AB以获得其余内容,以及如何在Matlab中实现此功能。我不知道它是否有用,但我有代码将每一列放入自己的东西。:

C

所以说dest = M(:,1); gen = M(:,2); age = M(:,3); year = M(:,4); dur = M(:,5); 是结果,而destgen是我如何做到这一点的前提。

下面是第一批age患者的数据作为例子:

10

任何帮助都是值得赞赏的。

1 个答案:

答案 0 :(得分:2)

正确的代码无法通过copy&粘贴,我改变了一点,

如果定义一个计算给定数据概率的函数,那就更好了,

function p = prob(data)
n = size(data,1);
uniquedata = unique(data);
p = zeros(length(uniquedata),2);
p(:,2) = uniquedata;
for i = 1 : size(uniquedata,1)
    p(i,1) = sum(data == uniquedata(i)) / n;
end
end

现在在另一个脚本中,

data =[3    2   91;
       3    2   86;
       3    2   90;
       3    2   85;
       3    2   86;
       3    1   77;
       4    2   88;
       3    2   90;
       4    2   79;
       4    2   77;
       4    1   65;
       3    1   60];
pdest = prob(data(:,1));
pgend = prob(data(:,2));
page = prob(data(:,3));

这将给出,

page =

0.0833   60.0000
0.0833   65.0000
0.1667   77.0000
0.0833   79.0000
0.0833   85.0000
0.1667   86.0000
0.0833   88.0000
0.1667   90.0000
0.0833   91.0000

pgend =

0.2500    1.0000
0.7500    2.0000

pdest =

0.6667    3.0000
0.3333    4.0000

这将给出你已经计算过的概率,

请注意,prob的第二列是valuse,第一列是概率。

当您想要计算des = 3 & gend = 2的概率时,您应创建一个新数据集并调用prob,以便新数据集使用,

mapd2g3 = data(:,1) == 3 & data(:,2) == 2;
datad2g3 = data(mapd2g3,:)

 3     2    91
 3     2    86
 3     2    90
 3     2    85
 3     2    86
 3     2    90

paged2g3 = prob(datad2g3(:,3))

0.1667   85.0000
0.3333   86.0000
0.3333   90.0000
0.1667   91.0000

这是prob(age|dest = 3 & gend = 2)

您甚至可以编写一个函数来创建数据集。

相关问题