This build method smooths a migration curve using P-Splines. Given migration probabilities \(\migprob_x\) for \(x=0,1,2,\ldots,\omega\), B-Spline functions \(\bmat_j(x)\) of degree \(\degree\) defined on knots \(\minage,x_1,x_2,\ldots,x_\nintern,\maxage\), and weights \(\bvec_j\), the smoothed migration probability \(\smigprob_x\) is given by \begin{equation} \smigprob_x=\left\{\begin{array}{ll} \fromfunc\left( \sum_{j=1}^\nbasis\bmat_j(x)\bvec_j\right) & x\in [\minage,\maxage]\\ \migprob_x & \mathrm{otherwise} \end{array}\right. \end{equation} where \(\tofunc(\migprob)\) is a transformation function. The weights \(\bvec_j\) are chosen to minimise the objective function \begin{equation} \objfunc=\sum_{x=\minage}^\maxage\left\{\tofunc(\migprob_x) -\tofunc(\smigprob_x)\right\}^2 +\pen \sum_{j=\order+1}^\nbasis\left(\diff^\order\bvec_j\right)^2 \end{equation} where \(\diff^\order\) is the the \(\order\)-order difference operator and \(\pen\) is a non-negative penalty. The build method BSPLINE_ASMP is the special case \(\pen=0\).
The default behaviour can be modified by appending an extrainfo string to the buildmethod, eg SMOOTHED_ASMP:ExtraInfo. Here ExtraInfo is a comma-separated list of quoted strings of the form "Parameter=Value".
ModelType
The transformation function \(\tofunc(\migprob)\) is controlled by the extrainfo string
"ModelType=type"} where
\begin{equation}
\tofunc(q) = \left\{\begin{array}{ll}
q, & \xinfovar{type}=\xinfoval{LINEAR}\\
\log q, & \xinfovar{type}=\xinfoval{LOG}
\end{array}\right.
\end{equation}
The default value is ModelType=LINEAR.
Degree
The value for the degree \(\degree\) can be set with the extrainfo string "Degree=\(\degree\)". The default value is \(\degree=2\).
Order
The value for the order \(\order\) can be set with the extrainfo string "Order=\(\order\)". The default value is \(\order=1\).
Knots
There are two ways to set the B-Spline knots. The first way is to set the minimum and maximum ages using extrainfo strings "MinAge=\(\minage\)" and "MaxAge=\(\maxage\)" respectively. The internal points are then equally spaced upwards from \(\minage\)
\begin{equation}
x_i = \minage + \knotspacing\times i,\quad i=1,\ldots,\nintern
\end{equation}
where
\begin{equation}
\nintern=\ceil{\frac{\maxage-\minage}{\knotspacing}}-1
\end{equation}
and the spacing \(\knotspacing\) is specified by the extrainfo string "KnotSpacing=\(\knotspacing\)". The default values are \(\minage=0\), \(\maxage=90\) and \(\knotspacing=2\). The second way is to set the knots explicitly using the extrainfo string "Knots=\(\minage\)|\(x_1\)|\(x_2\)|\(\ldots\)|\(x_\nintern\)|\(\maxage\)".
Penalty
The value for the penalty \(\pen\) can be set with the extrainfo string "Penalty=\(\lambda\)".
If \(\pen\) is negative then it is chosen to minimize the Bayesian Information Criterion. The default value is \(\pen=-1\).