Gonzaga and Schmertmann's TOPALS method is designed to build a mortality curve from observations that are subject to significant sample variance. The curve to estimate is specified by death rates \(\udeathrate_x\) at all ages \(x\) from \(0\) to \(\maxage=99\). These rates are expressed relative to a standard curve \(\sdeathrate_x\) in the form \begin{equation} \log\udeathrate_x=\log\sdeathrate_x + \bmat_x\mmult\bvec . \end{equation} Here \(\bmat\) is a \(100\times 7\) matrix of linear B-splines with knots at ages \(\{0,1,10,20,40,70,100\}\). Given a set of observed death rates \(\odeathrate_j\) for age intervals \([x_j,x_j+n_j)\) the seven B-spline coefficients \(\bvec\) are chosen to maximise the penalized log likelihood function \begin{equation} \loglik(\bvec) =\sum_j\pop_j\left(\odeathrate_j\log\mdeathrate_j-\mdeathrate_j\right) -\sum_{0\le i<6}(\bvec_{i+1}-\bvec_i)^2 . \end{equation} where \(\pop_j\) is the population at risk and \(\mdeathrate_j\) is the estimated death rate over the interval \([x_j,x_j+n_j)\). Rates \(\mdeathrate_j\) are calculated from the model curve using \begin{equation} \mdeathrate_j=\DeathRate(x_j,n_j;\udeathrate,\buildmethod) \end{equation} where \(\buildmethod\) is the helper buildmethod LINEAR_SF.
Given a set of observed death probabilities \(\odeathprob_j\) the weights \(\bvec\) are calculated by minimizing the penalty function \begin{equation} \loglik(\bvec) =\sum_j\frac{\pop_j}{n_j}\left(\odeathprob_j\log\mdeathprob_j-\mdeathprob_j\right) -\sum_{0\le i<6}(\bvec_{i+1}-\bvec_i)^2 \end{equation} where estimated probabilies \(\mdeathprob_j\) are calculated from the curve using \begin{equation} \mdeathprob_j=\DeathProb(x_j,n_j;\udeathrate,\buildmethod) . \end{equation}
The user must specify the population size \(\pop\) and standard mortality curve \(\sdeathrate\) using a extrainfo string of the form PInfo,SMortHandle. If PInfo is a number then it specifies the population per age interval in the mortality object. If PInfo is a string of the form "P=X" where X is a number then the total population is equal to X and the population per age interval will be calculated assuming the population follows a stationary distribution. If the PInfo string is not of this format then is specifies the name of a PCURVE object from which the population per mortality age interval is calculated. SMortHandle is the name of the standard mortality exclosed in quotes.