<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>GTest (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="GTest (Apache Commons Math 3.3 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/GTest.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/stat/inference/ChiSquareTest.html" title="class in org.apache.commons.math3.stat.inference"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/stat/inference/KolmogorovSmirnovTest.html" title="class in org.apache.commons.math3.stat.inference"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/stat/inference/GTest.html" target="_top">Frames</a></li>
<li><a href="GTest.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.stat.inference</div>
<h2 title="Class GTest" class="title">Class GTest</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.stat.inference.GTest</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">GTest</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Implements <a href="http://en.wikipedia.org/wiki/G-test">G Test</a>
 statistics.

 <p>This is known in statistical genetics as the McDonald-Kreitman test.
 The implementation handles both known and unknown distributions.</p>

 <p>Two samples tests can be used when the distribution is unknown <i>a priori</i>
 but provided by one sample, or when the hypothesis under test is that the two
 samples come from the same underlying distribution.</p></div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>3.1</dd>
<dt><span class="strong">Version:</span></dt>
  <dd>$Id: GTest.java 1547633 2013-12-03 23:03:06Z tn $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#GTest()">GTest</a></strong>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#g(double[], long[])">g</a></strong>(double[]&nbsp;expected,
 long[]&nbsp;observed)</code>
<div class="block">Computes the <a href="http://en.wikipedia.org/wiki/G-test">G statistic
 for Goodness of Fit</a> comparing <code>observed</code> and <code>expected</code>
 frequency counts.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gDataSetsComparison(long[], long[])">gDataSetsComparison</a></strong>(long[]&nbsp;observed1,
                   long[]&nbsp;observed2)</code>
<div class="block">Computes a G (Log-Likelihood Ratio) two sample test statistic for
 independence comparing frequency counts in
 <code>observed1</code> and <code>observed2</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTest(double[], long[])">gTest</a></strong>(double[]&nbsp;expected,
     long[]&nbsp;observed)</code>
<div class="block">Returns the <i>observed significance level</i>, or <a href=
 "http://www.cas.lancs.ac.uk/glossary_v1.1/hyptest.html#pvalue"> p-value</a>,
 associated with a G-Test for goodness of fit</a> comparing the
 <code>observed</code> frequency counts to those in the <code>expected</code> array.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTest(double[], long[], double)">gTest</a></strong>(double[]&nbsp;expected,
     long[]&nbsp;observed,
     double&nbsp;alpha)</code>
<div class="block">Performs a G-Test (Log-Likelihood Ratio Test) for goodness of fit
 evaluating the null hypothesis that the observed counts conform to the
 frequency distribution described by the expected counts, with
 significance level <code>alpha</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTestDataSetsComparison(long[], long[])">gTestDataSetsComparison</a></strong>(long[]&nbsp;observed1,
                       long[]&nbsp;observed2)</code>
<div class="block">Returns the <i>observed significance level</i>, or <a href=
 "http://www.cas.lancs.ac.uk/glossary_v1.1/hyptest.html#pvalue">
 p-value</a>, associated with a G-Value (Log-Likelihood Ratio) for two
 sample test comparing bin frequency counts in <code>observed1</code> and
 <code>observed2</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTestDataSetsComparison(long[], long[], double)">gTestDataSetsComparison</a></strong>(long[]&nbsp;observed1,
                       long[]&nbsp;observed2,
                       double&nbsp;alpha)</code>
<div class="block">Performs a G-Test (Log-Likelihood Ratio Test) comparing two binned
 data sets.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTestIntrinsic(double[], long[])">gTestIntrinsic</a></strong>(double[]&nbsp;expected,
              long[]&nbsp;observed)</code>
<div class="block">Returns the intrinsic (Hardy-Weinberg proportions) p-Value, as described
 in p64-69 of McDonald, J.H.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#rootLogLikelihoodRatio(long, long, long, long)">rootLogLikelihoodRatio</a></strong>(long&nbsp;k11,
                      long&nbsp;k12,
                      long&nbsp;k21,
                      long&nbsp;k22)</code>
<div class="block">Calculates the root log-likelihood ratio for 2 state Datasets.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="GTest()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>GTest</h4>
<pre>public&nbsp;GTest()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="g(double[], long[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>g</h4>
<pre>public&nbsp;double&nbsp;g(double[]&nbsp;expected,
       long[]&nbsp;observed)
         throws <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                <a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></pre>
<div class="block">Computes the <a href="http://en.wikipedia.org/wiki/G-test">G statistic
 for Goodness of Fit</a> comparing <code>observed</code> and <code>expected</code>
 frequency counts.

 <p>This statistic can be used to perform a G test (Log-Likelihood Ratio
 Test) evaluating the null hypothesis that the observed counts follow the
 expected distribution.</p>

 <p><strong>Preconditions</strong>: <ul>
 <li>Expected counts must all be positive. </li>
 <li>Observed counts must all be &ge; 0. </li>
 <li>The observed and expected arrays must have the same length and their
 common length must be at least 2. </li></ul></p>

 <p>If any of the preconditions are not met, a
 <code>MathIllegalArgumentException</code> is thrown.</p>

 <p><strong>Note:</strong>This implementation rescales the
 <code>expected</code> array if necessary to ensure that the sum of the
 expected and observed counts are equal.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed</code> - array of observed frequency counts</dd><dd><code>expected</code> - array of expected frequency counts</dd>
<dt><span class="strong">Returns:</span></dt><dd>G-Test statistic</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if <code>observed</code> has negative entries</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>expected</code> has entries that
 are not strictly positive</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the array lengths do not match or
 are less than 2.</dd></dl>
</li>
</ul>
<a name="gTest(double[], long[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gTest</h4>
<pre>public&nbsp;double&nbsp;gTest(double[]&nbsp;expected,
           long[]&nbsp;observed)
             throws <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                    <a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                    <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
                    <a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></pre>
<div class="block">Returns the <i>observed significance level</i>, or <a href=
 "http://www.cas.lancs.ac.uk/glossary_v1.1/hyptest.html#pvalue"> p-value</a>,
 associated with a G-Test for goodness of fit</a> comparing the
 <code>observed</code> frequency counts to those in the <code>expected</code> array.

 <p>The number returned is the smallest significance level at which one
 can reject the null hypothesis that the observed counts conform to the
 frequency distribution described by the expected counts.</p>

 <p>The probability returned is the tail probability beyond
 <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#g(double[], long[])"><code>g(expected, observed)</code></a>
 in the ChiSquare distribution with degrees of freedom one less than the
 common length of <code>expected</code> and <code>observed</code>.</p>

 <p> <strong>Preconditions</strong>: <ul>
 <li>Expected counts must all be positive. </li>
 <li>Observed counts must all be &ge; 0. </li>
 <li>The observed and expected arrays must have the
 same length and their common length must be at least 2.</li>
 </ul></p>

 <p>If any of the preconditions are not met, a
 <code>MathIllegalArgumentException</code> is thrown.</p>

 <p><strong>Note:</strong>This implementation rescales the
 <code>expected</code> array if necessary to ensure that the sum of the
  expected and observed counts are equal.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed</code> - array of observed frequency counts</dd><dd><code>expected</code> - array of expected frequency counts</dd>
<dt><span class="strong">Returns:</span></dt><dd>p-value</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if <code>observed</code> has negative entries</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>expected</code> has entries that
 are not strictly positive</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the array lengths do not match or
 are less than 2.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if an error occurs computing the
 p-value.</dd></dl>
</li>
</ul>
<a name="gTestIntrinsic(double[], long[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gTestIntrinsic</h4>
<pre>public&nbsp;double&nbsp;gTestIntrinsic(double[]&nbsp;expected,
                    long[]&nbsp;observed)
                      throws <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                             <a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                             <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
                             <a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></pre>
<div class="block">Returns the intrinsic (Hardy-Weinberg proportions) p-Value, as described
 in p64-69 of McDonald, J.H. 2009. Handbook of Biological Statistics
 (2nd ed.). Sparky House Publishing, Baltimore, Maryland.

 <p> The probability returned is the tail probability beyond
 <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#g(double[], long[])"><code>g(expected, observed)</code></a>
 in the ChiSquare distribution with degrees of freedom two less than the
 common length of <code>expected</code> and <code>observed</code>.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed</code> - array of observed frequency counts</dd><dd><code>expected</code> - array of expected frequency counts</dd>
<dt><span class="strong">Returns:</span></dt><dd>p-value</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if <code>observed</code> has negative entries</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - <code>expected</code> has entries that are
 not strictly positive</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the array lengths do not match or
 are less than 2.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if an error occurs computing the
 p-value.</dd></dl>
</li>
</ul>
<a name="gTest(double[], long[], double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gTest</h4>
<pre>public&nbsp;boolean&nbsp;gTest(double[]&nbsp;expected,
            long[]&nbsp;observed,
            double&nbsp;alpha)
              throws <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                     <a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                     <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
                     <a href="../../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a>,
                     <a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></pre>
<div class="block">Performs a G-Test (Log-Likelihood Ratio Test) for goodness of fit
 evaluating the null hypothesis that the observed counts conform to the
 frequency distribution described by the expected counts, with
 significance level <code>alpha</code>. Returns true iff the null
 hypothesis can be rejected with <code>100 * (1 - alpha)</code> percent confidence.

 <p><strong>Example:</strong><br> To test the hypothesis that
 <code>observed</code> follows <code>expected</code> at the 99% level,
 use </p><p>
 <code>gTest(expected, observed, 0.01)</code></p>

 <p>Returns true iff <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTest(double[], long[])"><code>gTestGoodnessOfFitPValue(expected, observed)</code></a> < alpha</p>

 <p><strong>Preconditions</strong>: <ul>
 <li>Expected counts must all be positive. </li>
 <li>Observed counts must all be &ge; 0. </li>
 <li>The observed and expected arrays must have the same length and their
 common length must be at least 2.
 <li> <code>0 &lt; alpha &lt; 0.5</code> </li></ul></p>

 <p>If any of the preconditions are not met, a
 <code>MathIllegalArgumentException</code> is thrown.</p>

 <p><strong>Note:</strong>This implementation rescales the
 <code>expected</code> array if necessary to ensure that the sum of the
 expected and observed counts are equal.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed</code> - array of observed frequency counts</dd><dd><code>expected</code> - array of expected frequency counts</dd><dd><code>alpha</code> - significance level of the test</dd>
<dt><span class="strong">Returns:</span></dt><dd>true iff null hypothesis can be rejected with confidence 1 -
 alpha</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if <code>observed</code> has negative entries</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>expected</code> has entries that
 are not strictly positive</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the array lengths do not match or
 are less than 2.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if an error occurs computing the
 p-value.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a></code> - if alpha is not strictly greater than zero
 and less than or equal to 0.5</dd></dl>
</li>
</ul>
<a name="gDataSetsComparison(long[], long[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gDataSetsComparison</h4>
<pre>public&nbsp;double&nbsp;gDataSetsComparison(long[]&nbsp;observed1,
                         long[]&nbsp;observed2)
                           throws <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
                                  <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                                  <a href="../../../../../../org/apache/commons/math3/exception/ZeroException.html" title="class in org.apache.commons.math3.exception">ZeroException</a></pre>
<div class="block"><p>Computes a G (Log-Likelihood Ratio) two sample test statistic for
 independence comparing frequency counts in
 <code>observed1</code> and <code>observed2</code>. The sums of frequency
 counts in the two samples are not required to be the same. The formula
 used to compute the test statistic is </p>

 <p><code>2 * totalSum * [H(rowSums) + H(colSums) - H(k)]</code></p>

 <p> where <code>H</code> is the
 <a href="http://en.wikipedia.org/wiki/Entropy_%28information_theory%29">
 Shannon Entropy</a> of the random variable formed by viewing the elements
 of the argument array as incidence counts; <br/>
 <code>k</code> is a matrix with rows <code>[observed1, observed2]</code>; <br/>
 <code>rowSums, colSums</code> are the row/col sums of <code>k</code>; <br>
 and <code>totalSum</code> is the overall sum of all entries in <code>k</code>.</p>

 <p>This statistic can be used to perform a G test evaluating the null
 hypothesis that both observed counts are independent </p>

 <p> <strong>Preconditions</strong>: <ul>
 <li>Observed counts must be non-negative. </li>
 <li>Observed counts for a specific bin must not both be zero. </li>
 <li>Observed counts for a specific sample must not all be  0. </li>
 <li>The arrays <code>observed1</code> and <code>observed2</code> must have
 the same length and their common length must be at least 2. </li></ul></p>

 <p>If any of the preconditions are not met, a
 <code>MathIllegalArgumentException</code> is thrown.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed1</code> - array of observed frequency counts of the first data set</dd><dd><code>observed2</code> - array of observed frequency counts of the second data
 set</dd>
<dt><span class="strong">Returns:</span></dt><dd>G-Test statistic</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - the the lengths of the arrays do not
 match or their common length is less than 2</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if any entry in <code>observed1</code> or
 <code>observed2</code> is negative</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/ZeroException.html" title="class in org.apache.commons.math3.exception">ZeroException</a></code> - if either all counts of
 <code>observed1</code> or <code>observed2</code> are zero, or if the count
 at the same index is zero for both arrays.</dd></dl>
</li>
</ul>
<a name="rootLogLikelihoodRatio(long, long, long, long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rootLogLikelihoodRatio</h4>
<pre>public&nbsp;double&nbsp;rootLogLikelihoodRatio(long&nbsp;k11,
                            long&nbsp;k12,
                            long&nbsp;k21,
                            long&nbsp;k22)</pre>
<div class="block">Calculates the root log-likelihood ratio for 2 state Datasets. See
 <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gDataSetsComparison(long[], long[])"><code>gDataSetsComparison(long[], long[] )</code></a>.

 <p>Given two events A and B, let k11 be the number of times both events
 occur, k12 the incidence of B without A, k21 the count of A without B,
 and k22 the number of times neither A nor B occurs.  What is returned
 by this method is </p>

 <p><code>(sgn) sqrt(gValueDataSetsComparison({k11, k12}, {k21, k22})</code></p>

 <p>where <code>sgn</code> is -1 if <code>k11 / (k11 + k12) &lt; k21 / (k21 + k22))</code>;<br/>
 1 otherwise.</p>

 <p>Signed root LLR has two advantages over the basic LLR: a) it is positive
 where k11 is bigger than expected, negative where it is lower b) if there is
 no difference it is asymptotically normally distributed. This allows one
 to talk about "number of standard deviations" which is a more common frame
 of reference than the chi^2 distribution.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>k11</code> - number of times the two events occurred together (AB)</dd><dd><code>k12</code> - number of times the second event occurred WITHOUT the
 first event (notA,B)</dd><dd><code>k21</code> - number of times the first event occurred WITHOUT the
 second event (A, notB)</dd><dd><code>k22</code> - number of times something else occurred (i.e. was neither
 of these events (notA, notB)</dd>
<dt><span class="strong">Returns:</span></dt><dd>root log-likelihood ratio</dd></dl>
</li>
</ul>
<a name="gTestDataSetsComparison(long[], long[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gTestDataSetsComparison</h4>
<pre>public&nbsp;double&nbsp;gTestDataSetsComparison(long[]&nbsp;observed1,
                             long[]&nbsp;observed2)
                               throws <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
                                      <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                                      <a href="../../../../../../org/apache/commons/math3/exception/ZeroException.html" title="class in org.apache.commons.math3.exception">ZeroException</a>,
                                      <a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></pre>
<div class="block"><p>Returns the <i>observed significance level</i>, or <a href=
 "http://www.cas.lancs.ac.uk/glossary_v1.1/hyptest.html#pvalue">
 p-value</a>, associated with a G-Value (Log-Likelihood Ratio) for two
 sample test comparing bin frequency counts in <code>observed1</code> and
 <code>observed2</code>.</p>

 <p>The number returned is the smallest significance level at which one
 can reject the null hypothesis that the observed counts conform to the
 same distribution. </p>

 <p>See <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTest(double[], long[])"><code>gTest(double[], long[])</code></a> for details
 on how the p-value is computed.  The degrees of of freedom used to
 perform the test is one less than the common length of the input observed
 count arrays.</p>

 <p><strong>Preconditions</strong>:
 <ul> <li>Observed counts must be non-negative. </li>
 <li>Observed counts for a specific bin must not both be zero. </li>
 <li>Observed counts for a specific sample must not all be 0. </li>
 <li>The arrays <code>observed1</code> and <code>observed2</code> must
 have the same length and their common length must be at least 2. </li>
 </ul><p>
 <p> If any of the preconditions are not met, a
 <code>MathIllegalArgumentException</code> is thrown.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed1</code> - array of observed frequency counts of the first data set</dd><dd><code>observed2</code> - array of observed frequency counts of the second data
 set</dd>
<dt><span class="strong">Returns:</span></dt><dd>p-value</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - the the length of the arrays does not
 match or their common length is less than 2</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if any of the entries in <code>observed1</code> or
 <code>observed2</code> are negative</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/ZeroException.html" title="class in org.apache.commons.math3.exception">ZeroException</a></code> - if either all counts of <code>observed1</code> or
 <code>observed2</code> are zero, or if the count at some index is
 zero for both arrays</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if an error occurs computing the
 p-value.</dd></dl>
</li>
</ul>
<a name="gTestDataSetsComparison(long[], long[], double)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>gTestDataSetsComparison</h4>
<pre>public&nbsp;boolean&nbsp;gTestDataSetsComparison(long[]&nbsp;observed1,
                              long[]&nbsp;observed2,
                              double&nbsp;alpha)
                                throws <a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a>,
                                       <a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                                       <a href="../../../../../../org/apache/commons/math3/exception/ZeroException.html" title="class in org.apache.commons.math3.exception">ZeroException</a>,
                                       <a href="../../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a>,
                                       <a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></pre>
<div class="block"><p>Performs a G-Test (Log-Likelihood Ratio Test) comparing two binned
 data sets. The test evaluates the null hypothesis that the two lists
 of observed counts conform to the same frequency distribution, with
 significance level <code>alpha</code>. Returns true iff the null
 hypothesis can be rejected  with 100 * (1 - alpha) percent confidence.
 </p>
 <p>See <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gDataSetsComparison(long[], long[])"><code>gDataSetsComparison(long[], long[])</code></a> for details
 on the formula used to compute the G (LLR) statistic used in the test and
 <a href="../../../../../../org/apache/commons/math3/stat/inference/GTest.html#gTest(double[], long[])"><code>gTest(double[], long[])</code></a> for information on how
 the observed significance level is computed. The degrees of of freedom used
 to perform the test is one less than the common length of the input observed
 count arrays. </p>

 <strong>Preconditions</strong>: <ul>
 <li>Observed counts must be non-negative. </li>
 <li>Observed counts for a specific bin must not both be zero. </li>
 <li>Observed counts for a specific sample must not all be 0. </li>
 <li>The arrays <code>observed1</code> and <code>observed2</code> must
 have the same length and their common length must be at least 2. </li>
 <li><code>0 &lt; alpha &lt; 0.5</code> </li></ul></p>

 <p>If any of the preconditions are not met, a
 <code>MathIllegalArgumentException</code> is thrown.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>observed1</code> - array of observed frequency counts of the first data set</dd><dd><code>observed2</code> - array of observed frequency counts of the second data
 set</dd><dd><code>alpha</code> - significance level of the test</dd>
<dt><span class="strong">Returns:</span></dt><dd>true iff null hypothesis can be rejected with confidence 1 -
 alpha</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - the the length of the arrays does not
 match</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if any of the entries in <code>observed1</code> or
 <code>observed2</code> are negative</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/ZeroException.html" title="class in org.apache.commons.math3.exception">ZeroException</a></code> - if either all counts of <code>observed1</code> or
 <code>observed2</code> are zero, or if the count at some index is
 zero for both arrays</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a></code> - if <code>alpha</code> is not in the range
 (0, 0.5]</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if an error occurs performing the test</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/GTest.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/stat/inference/ChiSquareTest.html" title="class in org.apache.commons.math3.stat.inference"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/stat/inference/KolmogorovSmirnovTest.html" title="class in org.apache.commons.math3.stat.inference"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/stat/inference/GTest.html" target="_top">Frames</a></li>
<li><a href="GTest.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
