Link Functions


Link Functions

Standard Link Functions

A link function is the function that links the linear model specified in the design matrix, where columns represent the beta parameters and rows the real parametersReal parameters are the parameters of interest, e.g., the survival, recapture, reporting, fidelity or population size parameters, that are defined in the PIM Matrices.  Program Mark supports 8 different link functions.  The default is the SIN function, because the sin function is most useful with the identity design matrix to provide a constraint that keeps the real parameters in the [0, 1] interval, yet allows the number of parameters to be correctly estimated.  For the SIN link function, the linear combination from the design matrix (X * beta) is converted to the interval [0,1] by the link function

         real parameters = (SIN(X * beta) + 1)/2  .

Other link functions include the logit,

         real parameters = exp(X * beta)/[1 + exp(X * beta)]  ,

the loglog,

         real parameters = exp[-exp(-X * beta)]  ,

the complimentary loglog,

         real parameters = 1 – exp[-exp(X * beta)]  ,

the log,

         real parameters = exp(X * beta)  ,

the identity,

         real parameters =  X * beta  ,

the absolute value,

real parameters = ABS(X * beta) , 

and the Cauchy,

real parameters = 1/2 + ATAN(X * beta)/pi . 

The log and absolue value link functions constrain the real parameters to be positive (>=0), and the identity link forces no constraints so that the real parameter values can be from -infinity to +infinity.  The rest of the link functions contrain real parameters to be in the [0, 1] interval.  When link functions that do not constrain probabilities to [0, 1] are used, numerical problems when optimizing the likelihood will often result.  For the log and identity link functions used with an identity design matrix, Program Mark uses the SIN link function to obtain initial estimates for parameters, then transforms the estimates to the parameter space of the log and identity link functions when they are requested.

The Sin link should only be used with design matrices that are identity matrices, or when only column in each row has a value not equal to zero.  This is because the Sin link will reflect around the  parameter boundary, and not enforce monotonic relationships.  The logit link is better for non-identity design matrices.  The Sin link is the best link function to enforce parameter values in the [0, 1] interval and yet obtain correct estimates of the number of parameters estimated.

The identity link is the best link function for determining the number of parameters estimated when the [0, 1] interval does not need to be enforced.

Parameter-specific Link Functions

MARK also has the option of using a different link function for each real parameter, i.e, each row of the design matrix is converted to its real parameter value with a different link function.  For example, you might want to enforce a [0, 1] constraint on one group of real parameters, i.e., phi(t), whereas you do not want to enforce this constraint on another group of real parameters.  To select a different link function for each parameter, select the “Parm-specific” choice for the link function.  You will then be given a chance to select a link function for each real parameter.  The dialog window will include a drop-down box for each real parameter to provide you with choices.  Besides the 6 link functions listed above, the multinomial logit link function and the cumulative logit link function will also be available.

Note that it would probably not make sense to use the same beta parameter in 2 different link functions, i.e., have non-zero values in 2 different rows but the same column of the design matrix, and different link functions for the rows.  Although Program MARK would allow such a bizzare situation, the biology behind the model would likely be non-sensical.

Multinomial Logit Link Function

The multinomial logit link (MLogit) function is useful for constraining a set of parameters to have a sum <= to 1.  A common application of this link function would be the psi parameters of a multi-state model.  The multinomial logit works as follows.  Assume that each of the transition parameters from state A have their own beta value, so that A to B is B1, A to C is B2, and A to D is B3.  To constrain these 3 parameters to sum to <= 1, the multinomial logit link works as follows:

psi A to B = exp(B1)/[1 + exp(B1) + exp(B2) + exp(B3)]

psi A to C = exp(B2)/[1 + exp(B1) + exp(B2) + exp(B3)]

psi A to D = exp(B3)/[1 + exp(B1) + exp(B2) + exp(B3)]

To create this set of links, you would select the MLogit(1) link function from the list of link functions offered to you for these 3 parameters.

A second set of multinomial logit link functions would be required for the psi parameters from state B:

psi B to A = exp(B4)/[1 + exp(B4) + exp(B5) + exp(B6)]

psi B to C = exp(B5)/[1 + exp(B4) + exp(B5) + exp(B6)]

psi B to D = exp(B6)/[1 + exp(B4) + exp(B5) + exp(B6)]

For this set of parameters, you would select the MLogit(2) link function, because you want a separate MLogit link function to constrain these 3 psi values to sum to <= 1.

Similarly, for transitions from state C, you would select the MLogit(3) link for the transitions psi C to A, psi C to B, and psi C to D.  Likewise, for transitions from state D, the MLogit(4) link function would be selected.

In summary, for each set of parameters where you want the constraint that the parameters sum to <= 1, you must specify a MLogit(x) function, where x represents the set number of the MLogit link function.

Care must be taken to select the MLogit link for the set of parameters in the PIM that you want to sum to <=1.  An example of how to properly constrain parameters within an MLogit link is provided. 

Cumulative Logit Link Function

The cumulative logit link (CLogit) function is useful for constraining a set of parameters to monotonically increase.  Suppose that you desire the relationship of S(1) <= S(2) <= S(3), but do not want to enforce the relationship on the logit scale that logit[S(2)] – logit[S(1)] =  logit[S(3)] – logit[S(2)] as a trend model would do.  The CLogit link would generate this relationship as:

S(1) = exp(B1)/[1 + exp(B1) + exp(B2) + exp(B3)]

S(2) = [exp(B1) + exp(B2)]/[1 + exp(B1) + exp(B2) + exp(B3)]

S(3) = [exp(B1) + exp(B2) + exp(B3)]/[1 + exp(B1) + exp(B2) + exp(B3)]

As with the MLogit link, you have to specify a separate CLogit link for each set of parameters that are to be constrained.  In addition, you also have to specify the order of the parameters for the set.  For the above example, the link function for each of the 3 survival rates would be:

S(1): CLogit(1,1),

S(2): CLogit(1,2), and

S(3): CLogit(1,3).

If you have a second set of parameters that you also want to enforce a monotonic increase on, say S(4) <= S(5) <= S(6), the appropriate links would be:

S(4): CLogit(2,1),

S(5): CLogit(2,2), and

S(6): CLogit(2,3).

You specify these link functions by selecting the Parm.-Specific choice from the Run Window list of link functions, and then entering the appropriate specification in the edit box next to the parameter name.  Note that you cannot select the CLogit link function from the drop-down list of link functions like as with all of the other link functions, because you have to specify the set and the order of the parameter within the set.  Therefore, you have to manually enter the link function in each edit box next to the real parameter value to which it pertains.  This is the most logical method to provide the user the flexibility needed to select the parameters for each CLogit set, and still specify the order of the increase of the real parameters.

Note that you can force a monotonic decrease by reversing the order of the real parameters in the CLogit set.  For example, to create the relationship S(1) >= S(2) >= S(3), you would specify the following link functions:

S(3): CLogit(1,1),

S(2): CLogit(1,2), and

S(1): CLogit(1,3).

In this case, what you have really specified is that S(3) <= S(2) <= S(1).

Forced Link Function

Several types of parameters have forced link functions, i.e., the link function is changed to the default value unless the user specifies Parm.-Specific link functions.  Specifically, the lamba and f parameters of the Pradel data types and Link-Barker data type are set to a log link function, even if the user selects the sin, logit, loglog, or cloglog link functions.  Likewise, the population estimates (N) in the closed captures and Jolly-Seber and POPAN data types are also set to a log link function when the user selects the sin, logit, loglog, or cloglog link functions for the model.  The reason for these changes from the user-specified link function for the model is that link functions that constrain these parameters to the [0, 1] interval will not work because the real parameters lambda, f and N should not be in t