Help with simple probability calculation (loop?)

I have a 2-column matrix that looks like this:
30 1
30 1
30 1
30 1
30 1
29 0
29 1
29 1
28 1
28 1
28 0
28 0
"1" indicates an occurrence and "0" does not. I need to compute a probability for each unique number in column 1. So the answers should be:
30 = 1
29 = .6667
28 = .50
Now, I have the "count_unique" function from the file exchange that counts the unique numbers and identifies how many occurrences there are for each number. Using this, I have tried to write a for loop that computes this problem, but I am stuck in the mud. I'm grateful for any assistance. Happy Thanksgiving.

 Accepted Answer

I don’t know how robust this is, but it works here:
M = [30 1
30 1
30 1
30 1
30 1
29 0
29 1
29 1
28 1
28 1
28 0
28 0];
raw_freq = accumarray(M(:,1), 1);
adj_freq = accumarray(M(M(:,2)>0), 1);
Prob = adj_freq./raw_freq;
Mu = unique(M(:,1));
Result = flipud([Mu Prob(~isnan(Prob))])
Result =
30 1
29 0.66667
28 0.5

2 Comments

Thanks as always Star! Happy Holidays.
And as always, my pleasure!
You, too!

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Tags

Asked:

on 25 Nov 2015

Commented:

on 30 Nov 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!