CTPRB
Computes exact probabilities in a two‑way contingency table.
Required Arguments
TABLE — NROW by NCOL matrix containing the contingency table cell frequencies. (Input)
PRE — Probability of a more extreme table where “extreme” is taken in the Neyman‑Pearson sense. (Output)
A table is more extreme if its probability (for fixed marginals) is less than or equal to PRT.
Optional Arguments
NROW — Number of rows in the contingency table. (Input)
Default: NROW = size (TABLE,1).
NCOL — Number of columns in the contingency table. (Input)
Default: NCOL = size (TABLE,2).
LDTABL — Leading dimension of TABLE exactly as specified in the dimension statement in the calling program. (Input)
Default: LDTABL = size (TABLE,1).
PRT — Probability of the observed table assuming fixed row and column marginal totals. (Output)
PCHEK — Sum of the probabilities of all tables with the same marginal totals. (Output)
PCHEK should be 1.0. Deviation from 1.0 indicates a numerical error.
FORTRAN 90 Interface
Generic: CALL CTPRB (TABLE, PRE [, …])
Specific: The specific interface names are S_CTPRB and D_CTPRB.
FORTRAN 77 Interface
Single: CALL CTPRB (NROW, NCOL, TABLE, LDTABL, PRT, PRE, PCHEK)
Double: The double precision name is DCTPRB.
Description
Routine CTPRB computes exact probabilities for an r × c contingency table for fixed row and column marginals where r = NROW and c = NCOL. Let fij denote the element in row i and column j of a table, and let fi∙ and f∙j denote the row and column marginals. Under the independence hypothesis, the (conditional) probability for fixed marginals of a table is given by
where f∙∙ is the total number of counts in the table and x! denotes x factorial. When the fij are obtained from the input table (fij = TABLE(i, j)), Pf = PRT. PRE is the sum over all more extreme tables of the probability of each table.
In CTPRB, a more extreme table is defined in the probabilistic sense. Table X is more extreme than the input table if the conditional probability computed for table X (for the same marginal sums) is less than the conditional probability computed for the input table. The user should note that this definition of “more extreme” can be considered as “two‑sided” in the cell counts.
Because CTPRB uses 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 either a large total count f∙∙ or in which the product rc is not small, should not be analyzed with CTPRB. Rather, either the approximate methods of Agresti, Wackerly, and Boyett (1979) should be used or algorithms that do not require total enumeration should be used (see Pagano and Halvorsen [1981], or Mehta and Patel [1983]).
Comments
1. Workspace may be explicitly provided, if desired, by use of C2PRB/DC2PRB. The reference is:
CALL C2PRB (NROW, NCOL, TABLE, LDTABL, PRT, PRE, PCHCK, IWK)
The additional argument is:
IWK — Work vector of length (NROW + 2)(NCOL + 2).
2. Informational error
Type |
Code |
Description |
3 |
1 |
There are no observed counts in TABLE. PRE, PRT, and PCHEK are set to NaN (not a number). |
3. Routine CTPRB computes a two‑tailed Fisher exact probability in 2 by 2 tables. For one‑tailed Fisher exact probabilities, use routine CTTWO.
Example
In this example, CTPRB is used to compute the exact conditional probability for a 2 × 2 contingency table. The input table is given as:
USE UMACH_INT
USE CTPRB_INT
IMPLICIT NONE
INTEGER NCOL, LDTABL
PARAMETER (NCOL=2, LDTABL=2)
!
INTEGER NOUT
REAL PCHEK, PRE, PRT, TABLE(LDTABL,NCOL)
!
DATA TABLE/8, 8, 12, 2/
!
CALL UMACH (2, NOUT)
!
CALL CTPRB (TABLE, PRE, PRT=PRT, PCHEK=PCHEK)
!
WRITE(NOUT,'('' PRT = '', F12.4, /, '' PRE = '', F12.4, /, &
& '' PCHEK = '', F10.4)') PRT, PRE, PCHEK
END
Output
PRT = 0.0390
PRE = 0.0577
PCHEK = 1.0000