【发布时间】:2014-11-23 01:29:06
【问题描述】:
我有一个 500x5 的矩阵 M,我需要计算条件概率。我已经离散化了我的数据,然后我有了这个代码,它目前只适用于3 变量而不是5,但现在这很好。
下面的代码已经算出了我得到A=1、B=1和C=1的次数,我们得到A=2、B=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 和B=1(加在所有C 上)的次数:
Prob(C=1 given A=1 and B=1) = P(A=1,B=1, C=1)/P( A=1, B=1).
这是第一条规则的规则强度。我需要了解如何循环 A、B 和 C 以获取其余部分以及如何在 Matlab 中实际使用它。我不知道它是否有用,但我有代码可以将每一列放入自己的东西中。:
dest = M(:,1); gen = M(:,2); age = M(:,3); year = M(:,4); dur = M(:,5);
所以说dest 是结果,gen 和age 是前因我该怎么做。
以下以第一批10患者的数据为例:
destination gender age
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 1 1
3 2 2
2 2 2
3 2 1
3 2 1
任何帮助表示赞赏和急需。
【问题讨论】:
-
对于
asum(h,i,j)=asum(h,i,j)+1,j是91对于第一位患者 -
您好,感谢您的回复。你能详细说明一下吗?我已经在代码中有 asum(h,i,j)=asum(h,i,j)+1 (在 j=data(patient,3) 之后),但不是 for 循环,我该怎么办?
标签: matlab dataset probability