Select your font size 
 
about us products & services consulting & support news & events contact us
The Bayes.php class implements the Bayes theorem calculation. An important aspect of Bayesian inference involves examining the effect of

Implementing the calculation with Bayes.php - BC

print this article 
 

The Bayes.php class implements the Bayes theorem calculation. The getPosterior method is where most of the mathematically interesting code resides.

Listing 5. Implementing the calculation with the Bayes.php class
<?php

/**
* Bayes
*
* Calculates posterior probabilities for m hypotheses and n evidence 
* alternatives.  The code was inspired by a procedural TrueBasic version 
* (Bayes.tru) bundled with Grimstead and Snell's excellent online 
* textbook "Introduction to Probability".
*/
class Bayes {

  /**
  * Number of evidence alternatives (that is, number of rows).
  */
  var $m;

  /**
  * Number of hypothesis alternatives (that is, number of columns).
  */
  var $n;

  /**
  * Output labels for evidence alternatives.
  */
  var $row_labels = array();
  
  /**
  * Output labels for hypothesis alternatives.
  */  
  var $column_labels = array();

  /**
  * Vector container for prior probabilities.
  */
  var $priors = array();

  /**
  * Matrix container for likelihood of evidence e given hypothesis h.
  */
  var $likelihoods = array();

  /**
  * Matrix container for posterior probabilties.
  */
  var $posterior = array();

  /**
  * Vector container for evidence probabilties.
  */
  var $evidence = array();

  /**
  * Initialize the Bayes algorithm by setting the priors, likelihoods 
  * and dimensions of the likelihood and posterior matrices.
  */
  function Bayes($priors, $likelihoods) {
    $this->priors = $priors;
    $this->likelihoods = $likelihoods;
    $this->m = count($this->likelihoods);  // num rows
    $this->n = count($this->likelihoods[0]); // num cols
    return true;
  }
  
  /**
  * Output method for setting row labels prior to display.
  */
  function setRowLabels($row_labels) {
    $this->row_labels = $row_labels;
    return true;
  }

  /**
  * Output method for setting column labels prior to display.
  */
  function setColumnLabels($column_labels) {
    $this->column_labels = $column_labels;
    return true;
  }

  /**
  * Compute the posterior probability matrix given the priors and 
  * likelihoods.
  *
  * The first set of loops computes the denominator of the canonical 
  * Bayes equation. The probability appearing in the denominator 
  * serves a normalizing role in the computation - it ensures that 
  * posterior probabilities sum to 1.
  *
  * The second set of loops:
  *
  *   1. multiplies the prior[$h] by the likelihood[$h][$e]
  *   2. divides the result by the denominator
  *   3. assigns the result to the posterior[$e][$h] probability matrix
  */
  function getPosterior() {
    // Find probability of evidence e
    for($e=0; $e < $this->n; $e++) {
      for ($h=0; $h < $this->m; $h++) {
        $this->evidence[$e] += $this->priors[$h]
           * $this->likelihoods[$h][$e];
      }
    }
    // Find probability of hypothesis given evidence
    for($e=0; $e < $this->n; $e++) {
      for ($h=0; $h < $this->m; $h++) {
        $this->posterior[$e][$h] = $this->priors[$h
           * $this->likelihoods[$h][$e] / $this->evidence[$e];
      }
    }
    return true;
  }
  
  /**
  * Output method for displaying posterior probability matrix
  */
  function toHTML($number_format="%01.3f") {
    ?>

    <table border='1' cellpadding='5' cellspacing='0'>
      <tr>
        <td> </td>
        <?php
        for ($h=0; $h < $this->m; $h++) {
          ?>

          <td align='center'>

             <b><?php echo $this->column_labels[$h] ?></b>
          </td>
          <?php
        }
        ?>
      </tr>

      <?php
      for($e=0; $e < $this->n; $e++) {
        ?>

        <tr>
          <td><b><?php echo $this->row_labels[$e] ?></b></td>

          <?php
          for ($h=0; $h < $this->m; $h++) {
            ?>

            <td align='right'>
               <?php printf($number_format, $this->posterior[$e][$h]) ?>
            </td>

            <?php
          }
          ?>
        </tr>
        <?php
      }
      ?>

    </table>
    <?php
  }
}
?>

Sensitivity analysis

An important aspect of Bayesian inference involves examining the effect of small changes to your prior and likelihood distributions. If the prior probability values you are using are viewed as best guesses, then you might want to see what happens when you adjust the prior probabilities of each hypothesis slightly. You may notice that this significantly changes the posterior distribution values or it might have little effect. It is good to know how sensitive your results are to the exact prior values (or likelihood values) used.

The final screen of the Bayes diagnosis wizard gives you the options to

  • Start again
  • Re-enter labels
  • Re-enter your priors
  • Re-enter your likelihoods

If you decide to re-enter your priors, the wizard remembers your previously entered likelihoods. After you re-enter your priors, you can click forward to Step 5 without having to re-enter your likelihood values (or you can modify the likelihoods as well). In other words, the design of the Bayes wizard encourages you to engage in sensitivity analysis prior to drawing any final conclusions.



Page:   1  2  3  4  5  6  7  8  9  10  11 Next Page: It's only a beginning

The content shown in this page was first published by IBM developerWorks and is reprinted with permission from Paul Meagher (www.datavore.com)


Most Recent Website and Regional Updates

 Transparen Toronto Office Locations
Addresses of Transparen Corporation offices in Toronto, Ontario.

 
 High Scalability - Large Systems Optimization
Transparen Corporation lends its expertise to clients experiencing rapid and sudden growth in traffic or server utilization, bottlenecks, systems instability, downtime during peak traffic, or which would like to plan to avoid such issues.

 
 Throughput (or Bandwidth) vs. Latency
This document uses the example of Bill Gates purchasing Google to explain the difference between bandwidth (or throughput) and latency.

 
 Emergency Management Services
The prototypical emergency involves a shutdown of essential services for a finite period of time. What will your organization do when a world-wide financial crisis strikes?

 
 Fast RAID Server Data Recovery Service
Transparen's Vancouver International Response Team provides the option in Canada and USA to get a raid server back running in hours - eliminating costly waiting associated with typical RAID recoveries.

 
 Data Recovery Service
Have you deleted a mission critical file? Accidentally dropped a computer, or formatted a hard drive? No recent backup? Mistakes can happen, but the data might still be there.

 
 About Transparen
Transparen is committed to serving its clients.

 
 Research Tools
Measure human resource allocation and collect data with the goal of determining patterns that will bring forward actionable insights which may lead to policy changes, saving money and improving quality of service.

 
 Process Evaluation Questions
Questions to help focus discussion about process improvement

 
 COMMUNITY TRUST EMPLOYS FOREST WORKERS IN FORT NELSON
VICTORIA ? Funding from the Community Development Trust?s Job Opportunities Program is employing four forest workers to improve facilities and trails at Beaver Lake in Fort Nelson, Community Development Minister Blair Lekstrom and Peace River North MLA Richard Neufeld announced.

 
 COMMUNITY TRUST EMPLOYS FOREST WORKERS IN HOUSTON
VICTORIA ? The Community Development Trust?s Job Opportunities Program is funding the clearing of mountain pine beetle trees in recreation sites near Houston and using the wood to build picnic tables, shelters and board walks, Community Development Minister Blair Lekstrom and Bulkley Valley-Stikine MLA Dennis MacKAY announced.

 
 COMMUNITY TRUST EMPLOYS FOREST WORKERS IN SLIAMMON
SLIAMMON ? Ten forest workers are improving silviculture conditions on two forestry blocks near Powell River as a result of $74,000 in funding through the Job Opportunities Program, Community Development Minister Blair Lekstrom and Forests and Range Minister Pat Bell announced.

 
 COMMUNITY TRUST IMPROVING MCBRIDE'S RECREATION OPTIONS
MCBRIDE ? Funding from the Community Development Trust?s Job Opportunities Program is improving McBride?s winter sports and year-round trail network, Community Development Minister Blair Lekstrom and Prince George-Mount Robson MLA and Deputy Premier Shirley Bond announced.

 
 2008: A GROUNDBREAKING YEAR FOR BRITISH COLUMBIA
2008 will go down as a memorable year for British Columbia.

 
 FILM INCENTIVE BC TAX CREDIT CHANGE TO BENEFIT INDUSTRY
VICTORIA ? The Province intends to change the Film Incentive BC tax credit to further support the industry and encourage investment in B.C., announced Finance Minister Colin Hansen.

 
 COMMUNITY TRUST IMPROVING RECREATION IN GRAND FORKS
VICTORIA ? More than $330,000 from the Community Development Trust?s Job Opportunities Program is improving walking and cycling trails in Grand Forks and contributing to the management of beetle-affected stands in the area, Community Development Minister Blair Lekstrom and Forests and Range Minister Pat Bell announced.

 
 08/01/2009: How to Divorce and Not Wreck the Kids
For years, divorce has pitted couples against each other, fueling conflict and concerns about the children caught in the middle of it. Now, unhappy couples with children are looking for ways to end their marriage, but not end the family. Today on the podast, we'll hear from a couple trying to do that and the director of a CBC TV documentary called "How To Divorce and Not Wreck The Kids".

 
 07/01/2009: A Death in the Family - Documentary
Today on the podcast, the story of Paul Johnson and Bill Mullins-Johnson, two brothers from Sault Saint Marie, Ontario whose lives were torn apart after the murder of Paul's four-year-old daughter ... a crime that turned the two men against each other even though neither of them had committed it.

 
 06/01/2009: The Threatening Sea
Today on the podcast, we continue our Watershed series with a trip to Vanuatu, a nation of 83 islands in the South Pacific that is slowly but surely sinking into the sea.

 
 05/01/2009: Australia Drought
Dispatches from The Big Dry. Current producer Kathleen Goldhar brings us a report from Australia's enduring drought and the economy it's spawned, where rainless communities unravel, only the adaptable prosper and water is the new gold standard.

 
 02/02/2009: Economy Panel - 2009 Forecast
With the annus horibilis of 2008 in the rear view mirror, and 2009 lying in the wait, The Current organized an economy panel to give us their forecast for the new year.

 

Google
 
Web transparen.com

Contact Information

Related Information

 
   
 
E C M | © 2003-2007 Transparen Corp.      

Standardized Services: Data Recovery Service / Creative Services / Premium Web Hosting Services / System Administration Tech Support Services
Recent Projects: Full-Service Mortgage and Financing Company / System to manage flights from Vancouver to Tofino / Photo exchange verification service
Our Vancouver BC Server Proudly Hosts: automated parking and revenue control systems, leafside lane at southlands, cost effective alternative power sources, Higher Grade Learning Centres, pacific forage bag supply, sunburst medical, neosonic design, roger mahler photography - passionate, intriguing, desirable, the connection between east and west, affordable flights to victoria and tofino, low interest mortgage brokers in vancouver, richmond, surrey, toronto, Toronto Calgary and Vancouver IT staffing and talent search
* Burnaby (City) * Campbell River (Town) * Chilliwack (City) * Comox (City) * Coquitlam * Cranbrook (City) * Delta (City) * Duncan (City) * Grand Forks (City) * Hope (Town) * Kamloops (City) * Kelowna (City) * Ladysmith (Town) * Langley (City) * Mission (City) * Nanaimo (City) * Nelson (City) * New Westminster (City) * North Vancouver (City) * Penticton (City) * Port Alberni * Prince George (City) * Prince Rupert (City) * Quesnel (City) * Saanich (City) * Sidney (City) * Sooke (City) * Steveston (City of Richmond) * Surrey (City) * Tofino * Ucluelet * Vancouver (City) * Vernon (City) * Victoria (City) * West Vancouver (City) * Whistler * White Rock