Multinomial-Poisson Homogeneous (MPH) and Homogeneous Linear Predictor (HLP) Models: A Brief Description

Author Information:  Joseph B. Lang, Department of Statistics and Actuarial Science, University of Iowa, Iowa City, IA 52242  USA   < joseph-lang@uiowa.edu,   http://www.stat.uiowa.edu/~jblang

Citation Information:  Lang, J.B.  "Multinomial-Poisson Homogeneous (MPH) and Homogeneous Linear Predictor (HLP) Models: A Brief Description,"  Online HTML Document, 03/09/2011 11:47 AM -0600, <mph.hlp.description.htm>.

Primary References:

Lang, J.B (2004).  "Multinomial-Poisson Homogeneous Models for Contingency Tables,"   Annals of Statistics, 32, 340-383 .

Lang, J.B. (2005). "Homogeneous Linear Predictor Models for Contingency Tables,"   JASA, 100, 121-134


DESCRIPTION of MPH and HLP MODELS (Special-Case):

MPH and HLP models are broad classes of models for contingency tables.   

In the following,  let y  be the vector of  c table counts,  p be the unknown vector of c table probabilities, s be a vector of c strata identifiers,  and F be the set of strata with a priori fixed sample sizes.

Although the R program,  mph.fit,  can fit,  via maximum likelihood, more general models (see below),  two important special cases include:
#
#     MPH (Special-Case):    y <- Y ~ MP(nu, p | strata=s, fixed=F),   h(p) = 0.
#    
#     HLP (Special-Case):     y <- Y ~ MP(nu, p | strata=s, fixed=F),   L(p) = X beta.

Here,  h(.) is a smooth constraint function and L(.) is a smooth link function. It is assumed that the constraints in h(p) = 0 are non-redundant so that the Jacobian, d h(p)'/d p,   is full column rank.

The link L(.) is allowed to be many-to-one and row-rank deficient, so this HLP model is quite general.    It is only required that the implied constraints, U'L(p) = 0, where null(U') = span(X), are non-redundant. Here, MP stands for the Multinomial-Poisson distribution.  The parameters are nu, the vector of expected sample sizes, and p, the vector of  table probabilities. 

The notation     y <- Y ~ MP(nu, p| strata=s, fixed=F)      means that y is a realization of random vector Y, which is composed of  independent blocks of multinomial and/or Poisson random variables.  The strata vector s determines the blocks and F determines which blocks are multinomial and which blocks comprise independent Poisson random variables.  More specifically, suppose there are K strata, so s contains K distinct strata identifiers.   The components in Y corresponding to s=identifier[k] make up a block.  If identifier[k] is included in F, then this block has a multinomial distribution and nu[k] is the a priori known, i.e. fixed, sample size.   If identifier[k] is not in F, then this block comprises independent Poisson random variables and nu[k] is an unknown expected sample size.  

Note:  Given the observed counts y, the pair (strata,fixed)=(s, F) contains the same information as the sampling plan triple (Z,ZF,nF) described in Lang (2004,2005).  Specifically,       

Z=Z(s),  the strata/population matrix, is determined by s.
ZF = ZF(s,F), the sampling constraint matrix, is determined by s and F.
nF  = ZF'y  is the vector of a priori fixed sample sizes.


Special case MP distributions include...

Full Multinomial:    MP(nu,p| strata=1, fixed="all")  
                               A simple random sample of fixed size nu is taken  from a single strata (population). 
                             
Product Multinomial: MP(nu,p| strata=s, fixed="all")
                              A stratified random sample of fixed sample sizes  nu=(nu[1],...,nu[K]) is taken from the K strata determined by s.                                
                                              
Full Poisson:        MP(nu,p| strata=1, fixed="none")
                              A simple random sample is taken from a single strata (population).  The sample size is random and  follows a Poisson distribution with unknown mean nu. 

Product Poisson:     MP(nu,p| strata=s, fixed="none")   
                              A stratified random sample is taken from K strata. The sample sizes are all random and distributed as Poissons with unknown means in nu=(nu[1],...,nu[K]).

Specifying the MP distribution in 'mph.fit'...

In older versions of mph.fit (2.1 and lower),  the user had to enter the sampling plan triple (Z,ZF,n).   In 'mph.fit', version 3.0 and higher, the user need only enter ('strata', 'fixed.strata'), the input variables corresponding to (s, F).  Keywords, fixed.strata="all" ["none"] means that all [none] of the strata have a priori fixed sample sizes. 

To fit MPH (Special Case),  the user must enter the counts 'y', the constraint function 'h.fct' (alias 'constraint'),  and the sampling plan variables, 'strata' and 'fixed.strata'.  Note:   The user can omit the sampling plan variables if the default, multinomial sampling (strata=1,fixed="all"), can be assumed.  

To fit HLP (Special Case),  the user must enter the counts 'y', the link function 'L.fct' (alias 'link'),  the model matrix 'X', and the sampling plan variables, 'strata' and 'fixed.strata'.  Note:  The user can omit the sampling plan variables if the default, multinomial sampling, can be assumed. 

IMPORTANT:  When specifying the model and creating the input objects for 'mph.fit',  keep in mind that the interpretation of the table probabilities p depends on the sampling plan! 
Specifically, if  the  i^{th} count y[i] is in block k (i.e. corresponds with strata identifier[k]),  then the i^{th} table probability p[i] is the conditional probability defined as

p[i] = probability of a Type i outcome GIVEN that the outcome is one of the types in stratum k.  

For example, in an IxJ table with row variable A and column variable B, if row-stratified sampling is used, the table probabilities have the interpretation,    p[i,j] = prob of a Type (i,j) outcome GIVEN that the outcome is one of the types in stratum i (i.e. one of (i,1),...,(i,J)).    That is,  p[i,j] = P(A=i,B=j|A=i)  = P(B=j|A=i).    For column-stratified sampling,  p[i,j] = P(A=i|B=j).   And for non-stratified  sampling,  p[i,j] = P(A=i,B=j).

Log-Linear Models:  Log-Linear models specified as log(p) = X beta,  are  special-case HLP models.

As with any HLP model, log(p) = X beta can be restated as a collection of constraints; specifically,  log(p) = X beta is equivalent to h(p) = U'log(p) = 0,where null(U') = span(X).   Noting that Z'p = 1,  we see that to avoid redundant constraints,   span(X) should contain  span(Z).  Loosely, fixed-by-sampling-design  parameters should be included.

Log-Linear models of the form log(p) = X beta are simple to fit using 'mph.fit'.  For example,   mph.fit(y, link="logp",X=model.matrix(~A+B))      or, equivalently,     mph.fit(y, link=function(p){log(p)},X=model.matrix(~A+B))


DESCRIPTION (continued):  MORE GENERAL MPH and HLP MODELS...

Instead of  (nu, p), the MP distribution can alternatively be parameterized in terms of the vector of expected table counts, m = E(Y).   Formally,  (nu, p) and m are in one-to-one correspondence and satisfy:

m = D(Z nu)p  and    nu= Z'm, p = D^{-1}(ZZ'm)m.

HHere, Z = Z(s) is the cxK strata/population matrix determined by strata vector s.   Specifically,  Z[i,k]  =  1(s[i] = identifier[k]). 

The MPH (Special-Case) Model given above is a special case because it constrains the expected counts m  only through the table probabilities p.  Similarly, the HLP (Special-Case) Model given above is a special case because it uses a link function that depends on m only through the table probabilities p. 
 
More generally, 'mph.fit' computes maximum likelihood estimates and fit statistics for MPH and HLP models of the form...
#
#     MPH.     y <- Y ~ MP(nu, p | strata=s, fixed=F),     h(m) = 0.
#     HLP:      y <- Y ~ MP(nu, p | strata=s, fixed=F),     L(m) = X beta.
#
Here,  h(.) is a smooth constraint function that must also be Z (i.e. strata s) homogeneous.  L(.) is a smooth link function that must also satisfy the HLP conditions with respect to Z (i.e. strata s) and X.  That is, 

(1) L(.) has HLP link status wrt Z   AND
(2) The implied constraint function h(m)=U'L(m) is Z homogeneous.    Here,  null(U') = span(X).

L(.) has HLP link status wrt Z if,   for m = D(Z nu)p...

(1)(a)  L(m) = a(nu) + L(p),  where a(nu1/nu2)-a(1) = a(nu1) - a(nu2),   i.e. a(nu) has the form  C log nu + constant.    
                       OR

(1)(b)  L(m) = G(nu)L(p),  where G(nu) is a diagonal matrix with diagonal  elements that are powers of the nu elements, i.e. L(.) is Z homogeneous (see Lang 2004).
                       OR
           
(1)(c)  The components of L(.) are a mixture of types (a) and (b):    L[j](m) = a[j](nu) + L[j](p)  or  L[j](m) = G[j](nu)L[j](p),          j=1,...,l. 

Lang (2005) described HLP models that satisfied (1)(a) and (2), but the definition of HLP models can be broadened to include those models satisfying  (1) and (2).  That is, HLP models can be defined so they also include models that satisfy (1)(b) and (2) or (1)(c) and (2).     Version 3.1+ of mph.fit  uses this broader definition of HLP Model.

Note:    The input variable 'h.mean' must be set to TRUE to fit this more general MPH model.  Similarly, the input variable 'L.mean' must be set to TRUE to fit  this more general HLP model.  (An exception:  If the link function  is specified using the keyword "logm" then 'L.mean' is automatically set to TRUE.)
Note:   'mph.fit', version 3.0 and above, carries out "necessary-condition" checks of Z homogeneity of h(.) and HLP link status of L(.) for these general models.

Log-Linear Models:   Log-Linear models of the form   log(m) = X beta   are  HLP models  provided the span(X) contains the span(Z).  Loosely, provided  fixed-by-design parameters are included, the log-linear model is a special case HLP model.    

Log-Linear models of the form log(m) = X beta are simple to fit using 'mph.fit'.       For example,    mph.fit(y, link="ogm",X=model.matrix(~A+B))   or, equivalently,   mph.fit(y, link=function(m){log(m)}, L.mean=T, X=model.matrix(~A+B))

Note:    Most reasonable generalized loglinear models, which have the form L(m) = C log Mm  = X beta,     are also HLP models  (see Lang 2005).

QUESTIONS:  Is there documentation for mph.fit?  Yes, click on  mph.fit documentation.    Are the examples showing how to use mph.fit?   Yes,  click on  MPH and HLP model fitting examples.


Page Last Updated: 03/09/2011 11:47 AM -0600,  Joseph B. Lang