Home PHP Page 2 - Implement Bayesian inference using PHP, Part 1

# Conditional probability - PHP

Have you ever wanted to build an intelligent Web application? Paul Meagher shows how to do it using conditional probability. (This intermediate-level article was first published by IBM developerWorks, March 16, 2004, at http://www.ibm.com/developerWorks).

Rating:  / 25
January 05, 2005

SEARCH DEV SHED

TOOLS YOU CAN USE

A conditional probability refers to the probability of observing an event A given that you have observed a separate event B. The mathematical shorthand for expressing this idea is:

P(A | B)

Imagine that A refers to "customer buys product A" and B refers to "customer buys product B". P(A | B) would then read as the "probability that a customer will buy product A given that they have bought product B." If A tends to occur when B occurs, then knowing that B has occurred allows you to assign a higher probability to A's occurrence than in a situation in which you did not know that B occurred.

More generally, if A and B systematically co-vary in some way, then P(A | B) will not be equal to P(A). Conversely, if A and B are independent events, then P(A | B) would be expected to equal P(A).

The need to compute a conditional probability thus arises any time you think the occurence of some event has a bearing on the probability of another event's occurring.

The most basic and intuitive method for computing P(A | B) is the set enumeration method. Using this method, P(A | B) can be computed by counting the number of times A and B occur together {A & B} and dividing by the number of times B occurs {B}:

P(A | B) = {A & B} / {B}

If you observe that 12 customers to date bought product B and of those 12, 10 also bought product A, then P(A | B) would be estimated at 10/12 or 0.833. In other words, the probability of a customer buying product A given that they have purchased product B can be estimated at 83 percent by using a method that involves enumerating relative frequencies of A and B events from the data gathered to date.

You can compute a conditional probability using the set enumeration method with the following PHP code:

Listing 1. Computing conditional probability using set enumeration

<?php

/**
* Returns conditional probability of \$A given \$B and \$Data.
* \$Data is an indexed array.  Each element of the \$Data array
* consists of an A measurement and B measurment on a sample
* item.
*/
function getConditionalProbabilty(\$A, \$B, \$Data) {
\$NumAB   = 0;
\$NumB    = 0;
\$NumData = count(\$Data);
for (\$i=0; \$i < \$NumData; \$i++) {
if (in_array(\$B, \$Data[\$i])) {
\$NumB++;
if (in_array(\$A, \$Data[\$i])) {
\$NumAB++;
}
}
}
return \$NumAB / \$NumB;
}

?>

 >>> More PHP Articles          >>> More By developerWorks