Smooth data over age fitting linear models, preserving the open age group if necessary.
This is a wrapper to `stats::lm()`

but using standard demographic arguments.

poly_smth1(Value, Age, degree = 2, trans, pow = 2, OAG = TRUE, ...)

Value | numeric vector of counts in single, abridged, or 5-year age groups. |
---|---|

Age | integer vector of ages corresponding to the lower integer bound of the counts. |

degree | integer degree of polynomial. Default 2. |

trans | if a transformation is desired, either specify |

pow | if |

OAG | logical. Whether or not the top age group is open. Default |

... | optional arguments passed to |

The total sum of `Value`

is preserved in the output. One can control smoothness by adjusting the degree of the polynomial (higher degree more wiggly). See `lm`

for more details. One may wish to log transform the data before fitting the polynomial, in which case `trans`

should be specified as `"log"`

. `"power"`

is also an option in which case the data is transformed by `Value^(1/pow)`

before fitting, and then the prediction is back-transformed (negative values not allowed)-- This is friendlier in the case of 0s. For the log transformation, 0s have no weight.

if (FALSE) { Age <- 0:99 cols <- RColorBrewer::brewer.pal(7,"Reds")[3:7] plot(Age,pop1m_pasex) lines(Age, poly_smth1(pop1m_pasex, Age, OAG = FALSE),col=cols[1]) lines(Age, poly_smth1(pop1m_pasex, Age, degree = 3, OAG = FALSE), col = cols[2]) lines(Age, poly_smth1(pop1m_pasex, Age, degree = 3, trans = "log", OAG = FALSE), col = cols[3]) lines(Age, poly_smth1(pop1m_pasex, Age, degree = 3, trans = "power", pow = 2, OAG = FALSE), col = cols[4]) lines(Age, poly_smth1(pop1m_pasex, Age, degree = 4, trans = "power", pow = 3, OAG = FALSE), col = cols[5]) }