exact_enumeration
Computes exact probabilities in a two-way contingency table using the total enumeration method.
Synopsis
#include <imsls.h>
float imsls_f_exact_enumeration(int n_rows, int n_columns, float table[], …, 0)
The type double function is imsls_d_exact_enumeration.
Required Arguments
int n_rows (Input)
Number of rows in the table.
int n_columns (Input)
Number of columns in the table.
float table[] (Input)
Array of length n_rows × n_columns containing the observed counts in the contingency table.
Return Value
The p-value for independence of rows and columns. The p-value represents the probability of a more extreme table where “extreme” is taken in the Neyman-Pearson sense. The p-value is “two-sided”.
Synopsis with Optional Arguments
#include <imsls.h>
float imsls_f_exact_enumeration (int n_rows, int n_columns, float table[],
IMSLS_PROB_TABLE, float *prt,
IMSLS_P_VALUE, float *p_value,
IMSLS_CHECK_NUMERICAL_ERROR, float *check,
0)
Optional Arguments
IMSLS_PROB_TABLE, float *prt (Output)
Probability of the observed table occurring, given that the null hypothesis of independent rows and columns is true.
IMSLS_P_VALUE, float *p_value (Output)
The p-value for independence of rows and columns. The p-value represents the probability of a more extreme table where “extreme” is taken in the Neyman-Pearson sense. The p-value is “two-sided”. The p-value is also returned in functional form (see “Return Value”). A table is more extreme if its probability (for fixed marginals) is less than or equal to prt.
IMSLS_CHECK_NUMERICAL_ERROR, float *check (Output)
Sum of the probabilities of all tables with the same marginal totals. Parameter check should have a value of 1.0. Deviation from 1.0 indicates numerical error.
Description
Function imsls_f_exact_enumeration computes exact probabilities for an r × c contingency table for fixed row and column marginals (a marginal is the number of counts in a row or column), where r = n_rows and c = n_columns. Let fij denote the count in row i and column j of a table, and let fi∙ and f∙j denote the row and column marginals. Under the hypothesis of independence, the (conditional) probability of the fixed marginals of the observed table is given by
where f∙∙ is the total number of counts in the table. Pf corresponds to output argument prt.
A “more extreme” table X is defined in the probabilistic sense as more extreme than the observed table if the conditional probability computed for table X (for the same marginal sums) is less than the conditional probability computed for the observed table. The user should note that this definition can be considered “two-sided” in the cell counts.
Because imsls_f_exact_enumeration used total enumeration in computing the probability of a more extreme table, the amount of computer time required increases very rapidly with the size of the table. Tables with a large total count f∙∙ or a large value of r × c should not be analyzed using imsls_f_exact_enumeration. In such cases, try using imsls_f_exact_network.
Example
In this example, the exact conditional probability for the 2 × 2 contingency table
is computed.
#include <stdio.h>
#include <imsls.h>
int main()
{
float p;
float table[4] = {8, 12,
8, 2};
p = imsls_f_exact_enumeration(2, 2, table, 0);
printf("p-value = %9.4f\n", p);
}
Output
p-value = 0.0577