私はMatlabを使用していますが、行列内の要素の確率を見つけるのは簡単ですが、行または列内の要素の確率を見つける方法が少しわかりません.
たとえば、このマトリックス:
X = [
1 2 4 1 8;
5 3 6 9 2;
6 2 2 3 2
];
このランダム行列の各行と列で「2」が発生する確率をどのように見つけますか。
私はMatlabを使用していますが、行列内の要素の確率を見つけるのは簡単ですが、行または列内の要素の確率を見つける方法が少しわかりません.
たとえば、このマトリックス:
X = [
1 2 4 1 8;
5 3 6 9 2;
6 2 2 3 2
];
このランダム行列の各行と列で「2」が発生する確率をどのように見つけますか。
次のことができます。
X_unique = unique(X);
p_row = zeros(size(X,1),numel(X_unique));
p_col = zeros(size(X,2),numel(X_unique));
for ii = 1:size(X,1)
p_row(ii,:) = hist(X(ii,:),X_unique);
p_row(ii,:) = p_row(ii,:)/sum(p_row(ii,:));
end
for ii = 1:size(X,2)
p_col(ii,:) = hist(X(:,ii),X_unique);
p_col(ii,:) = p_col(ii,:)/sum(p_col(ii,:));
end
ここで、 の各行には の対応する行のp_row
の要素の確率分布が含まれ、 の各行には の対応する列のの要素の確率分布が含まれます。unique(X)
X
p_col
unique(X)
X
たとえば、与えられた例では、
X_unique =
1
2
3
4
5
6
8
9
したがって、
p_row =
0.4000 0.2000 0 0.2000 0 0 0.2000 0
0 0.2000 0.2000 0 0.2000 0.2000 0 0.2000
0 0.6000 0.2000 0 0 0.2000 0 0
p_col =
0.3333 0 0 0 0.3333 0.3333 0 0
0 0.6667 0.3333 0 0 0 0 0
0 0.3333 0 0.3333 0 0.3333 0 0
0.3333 0 0.3333 0 0 0 0 0.3333
0 0.6667 0 0 0 0 0.3333 0
これは、空でない二次元行列で機能し、値が「2」の要素を探し、列ごとに確率を返す単純な、まったくMatlabのようなソリューションではありません。
a = [1 2 4 1 8; 5 3 6 9 2; 6 2 2 3 2];
nrows = size(a,1);
ncols = size(a,2);
pc = zeros(1, ncols); % Prob. by column
% Iterate trough columns
for k = 1:ncols
n = sum(a(:,k) == 2);
pc(k) = n/nrows;
end;
行ごと、または他の次元ごとに「確率」を計算したり、他の値を探したりするように適応させることができます。