```.-
help for ^mstdize6^
.-

Marginal standardization of two-way tables
------------------------------------------

^mstdize6^ varname rowtotvar coltotvar [^if^ exp] [^in^ range]
^, by(^rowvar colvar^)^ [ ^g^enerate^(^newvar^) tol^erance^(^#^)^
tabdisp_options ]

Description
-----------

^mstdize6^ takes a table of varname, with rows indexed by rowvar and
columns indexed by colvar, and produces a new table containing varname
scaled such that the row totals are given by rowtotvar and the column
totals given by coltotvar.

Remarks
-------

The algorithm is

0. Initialise
guess = varname

1. Loop until max (| guess - previous guess |) <= tolerance
previous guess = guess
guess = guess * target row total / guess row total
guess = guess * target col total / guess col total

The total over rows of the column totals should equal the total over
columns of the row totals. That is, the two should lead to the same
grand total.

This procedure is known by many different names in several different
disciplines, including statistics, economics and engineering. Some are

biproportional matrices
iterative proportional fitting
raking
RAS technique

Options
-------

^by(^rowvar colvar^)^ indicates rowvar and colvar and is required.

^generate(^newvar^)^ generates a new variable containing scaled values.

^tolerance(^#^)^ is a technical option indicating the criterion for
convergence. This is the largest acceptable absolute difference
between each guess and the previous guess (and also between the two
totals of totals). Default 0.001.

tabdisp_options are options of ^tabdisp^. Default ^center format(%9.2f)^.

Examples
--------

Data used by Smith (1976), quoted by Agresti (1990, p.197):
. ^gen r = 100^
. ^gen c = 100^
. ^mstdize6 freq r c, by(school attitude)^

Data used by Friedlander (1961), quoted by Bishop et al. (1975,
p.98):
. ^input freq age status^
. ^1306    1        1^
. ^83      1        2^
. ^0       1        3^
. ^619     2        1^
. ^765     2        2^
. ^3       2        3^
. ^263     3        1^
. ^1194    3        2^
. ^9       3        3^
. ^173     4        1^
. ^1372    4        2^
. ^28      4        3^
. ^171     5        1^
. ^1393    5        2^
. ^51      5        3^
. ^159     6        1^
. ^1372    6        2^
. ^81      6        3^
. ^208     7        1^
. ^1350    7        2^
. ^108     7        3^
. ^1116    8        1^
. ^4100    8        2^
. ^2329    8        3^
. ^end^
. ^gen rt = .^
. ^for X in num 1/8 \ Y in num 1412 1402 1450 1541 1681 1532 1662 7644:^
^replace rt = Y if  age == X^
. ^gen ct = .^
. ^for X in num 1/3 \ Y in num 3988 11702 2634 :^
^replace ct = Y if status == X^
. ^mstdize6 freq rt ct , by(age status)^

References
----------

Agresti, A. 1990. Categorical data analysis. New York: John Wiley.

Bishop, Y.M.M., Fienberg, S.E. and Holland, P.W. 1975. Discrete
multivariate analysis. Cambridge, MA: MIT Press.

Friedlander, D. 1961. A technique for estimating a contingency table
given the marginal totals and some supplementary data. Journal of the
Royal Statistical Society Series A 124: 412-420.

Smith, K.W. 1976. Table standardization and table shrinking: aids in the
traditional analysis of contingency tables. Social Forces 54, 669-693.

Author
------

Nicholas J. Cox, University of Durham, U.K.
n.j.cox@@durham.ac.uk

```