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