LifeTable module contains the function
periodlifetable, which can be used to calculate life tables in accordance with the methods used by Human Mortality Database (in particular, see the Methods Protocol 38--39). The function is called like
periodlifetable(inframe, sex, openend, intype), where
inframe is a DataFrame,
sex may be given as
2 for males or females (the calculation of average numbers lived for those dying as infants differs between the sexes), and
intype can be
"count" (the default) or
The first column in
inframe is assumed to contain the start of the included age intervals. If
openend=true (default), the last row is assumed to include data for an open interval at the end of life; if
openend=false it is assumed to include a closed interval of the same size as the second last row. If
intype="count", the second column is assumed to be a vector of age-specific population at risk, and the third column is assumed to be a vector of age-specific death counts. If
intype="rate", the second column is assumed to contain age-specific death rates.
The function returns a new DataFrame with the life table.
|age||Start of age interval.|
|m||Age-specific death rates.|
|a||Expected numbers of years lived at a given age for someone dying at that age.|
|q||Age-specific death probabilities.|
|p||Age-specific survival probabilities.|
|l||Probability of survival to a given age.|
|d||Distribution of deaths by age.|
|ld||Number of years lived at a given age.|
|t||Remaining number of years to live at a given age.|
|e||Life expectancy at a given age.|
causelife(lifetable, causefreq) takes a lifetable returned by
periodlifetable and a vector of the same length as the number of rows in the life table, with the proportion of deaths at a given age caused by a specific disease (or another cause). It returns a DataFrame with the following columns:
|age||Start of age interval (same as the input life table).|
|m||Age-specific death rates normalized to the frequency of the cause of death (the next column).|
|f||The proportion of the population surviving to a given age that will die of the specific cause.|
The DataFrame returned by
causelife can be used as input to
intype="rate") to compute a new lifetable for the subpopulation dying of a specific cause.
mortsurvfit(lifetable, numbdeaths, func, functype) fits the
m column (if
functype="rate") or the
l column (if
functype="surv") against the
age column in a DataFrame returned by
periodlifetable with a Gompertz function (if
func="gompertz") or a two-parameter Weibull function (if
func="weibull"). See e.g. Juckett and Rosenberg (1993) for a discussion of these different functions and their applications to human mortality and survival data. The columns are fitted using LsqFit, and the data points are weighted by the square root of the age-specific number of deaths (given in
numbdeaths). All input columns are assumed to be DataArrays, and are converted to ordinary arrays in order to work with LsqFit.
mortsurvfit returns a dictionary with the
functype parameters and the
LsqFitResult returned by the curve fitting.
mortsurvparamsfit(msfits) takes a list of dictionaries returned by
mortsurvfit and performs linear regression (using GLM) on transformations of the coefficients in the list. This can be used to determine intersections between mortality or survival curves. A dictionary containing (1) a DataFrame with the original parameters and transformations and (2) the results from the regression is returned.