randomTableTwoway¶
Generates a pseudorandom two-way table.
Synopsis¶
randomTableTwoway (nrtot, nctot)
Required Arguments¶
- int
nrtot[]
(Input) - Array of length
nrow
containing the row totals. - int
nctot[]
(Input) - Array of length
ncol
containing the column totals. The elements ofnrtot
andnctot
must be nonnegative and must sum to the same quantity.
Return Value¶
nrow
by ncol
random matrix with the given row and column totals.
Description¶
Function randomTableTwoway
generates pseudorandom entries for a two-way
contingency table with fixed row and column totals. The method depends on
the size of the table and the total number of entries in the table. If the
total number of entries is less than twice the product of the number of rows
and columns, the method described by Boyette (1979) and by Agresti,
Wackerly, and Boyette (1979) is used. In this method, a work vector is
filled with row indices so that the number of times each index appears
equals the given row total. This vector is then randomly permuted and used
to increment the entries in each row so that the given row total is
attained.
For tables with larger numbers of entries, the method of Patefield (1981) is used. This method can be considerably faster in these cases. The method depends on the conditional probability distribution of individual elements, given the entries in the previous rows. The probabilities for the individual elements are computed starting from their conditional means.
Example¶
In this example, randomTableTwoway
is used to generate a two by three
table with row totals 3 and 5, and column totals 2, 4, and 2.
from numpy import *
from pyimsl.stat.randomTableTwoway import randomTableTwoway
from pyimsl.stat.randomSeedSet import randomSeedSet
from pyimsl.stat.writeMatrix import writeMatrix
nrow = 2
ncol = 3
nrtot = [3, 5]
nctot = [2, 4, 2]
randomSeedSet(123457)
itable = randomTableTwoway(nrtot, nctot)
title = "A random contingency table with fixed marginal totals"
writeMatrix(title, itable,
noRowLabels=True, noColLabels=True)
Output¶
A random contingency table with fixed marginal totals
0 2 1
2 2 1