# Introduction

Life tables have only a marginal position in archaeological research, for different reasons. Columns with rows of multidigit numbers carrying strange labels can be daunting, and indeed the mathematics behind the construction of life tables based on modern census data are not for the faint-of-heart. Compared to life tables based on real census data, archaeological ones are more straightforward, but their interpretation carries its own problems. First and foremost, they pretend to have a degree of exactness which is not supported by the underlying data. This is another reason, why life-tables are considered with a certain degree of suspiciousness by archaeologists. And finally, despite the fact that the construction of archaeological life tables can be straightforward, it involves a lot of computation and number-crunching compared to other methods used in the archaeological discourse. To our current knowledge, an easy to use and accessible tool for computing life tables is missing. This is why we sat down and created mortAAR for R. We hope it will be of use for archaeologists world-wide.

From an outer appearance, life tables from modern census data and archaeological ones, like generated by mortAAR, look very similar. For modern census data, though, there are far more sophisticated measures available. We cannot go into more detail here but refer the reader to the abundant literature on demography and life table construction.

However, perhaps even more important than the different methods of computing, are the differences in input data. Due to infrastructure, modern census data of developed countries can be regarded as fairly complete and comprehensive. This is, of course, not true for archaeological data. Life tables from modern census data are important tools for inferring the prospective development of a given population. This is, of course, not possible for archaeological data sets. Most of the time, we have to assume that we are dealing with a stationary population.

# Overview of features

In our view, mortAAR shines in the following areas:

### Ease and flexibility of the input

We worked hard to allow the user as many customisations as feasible. First and foremost, the tables can have many different kinds of formatting. A single individual approach is supported as well as already pooled data (e.g., from an already existing life table). In the latter case, the user has to specify a numerical variable which defines the count of each age class.

In most data sets, the date ranges are defined rather loosely, reflecting the belief that one year more or less does not count taking the basic methods of age estimation into account. However, for the construction of life tables it should be obvious that 20–40 is not the same as 20–39.In the former case the individual in question will also contribute to the age class of 40–44 (using 5-year-classes). Therefore, the user should check the methodology the data-set uses carefully - if they did not generate it themselves. To spare the user the possible inconvenience to transform the data to match any given methodology, both possibilities – labelled „included“ (e.g., 20–39) and „excluded“ (e.g. 20–40) – are made available.

The custom method of constructing the life table follows the approach used in modern data. It uses 5 year-classes, except for the youngest class. Following Ascadi and Nemeskeri (Acsádi and Nemeskéri, 1970), for Central Europe it has become practice to publish either the full life table or a collapsed form with five year-intervals (Herrmann et al. (1990), 304ff., Kokkotidis and Richter (1991)). However, in the international demographic discourse (e.g., Keyfitz and Flieger (1968)), the first 5-year-age group is subdivided into those having died in their first year of life (0) and those having died in the second to fifth year (1–4). Because the differences are highly relevant in many archaeological contexts and the information is also – contrary to the possibilities in the higher age groups – anthropologically available, we decided to choose this as default methodology. With that, we hope to enhance the comparability of historic or present-day demographic data with that of archaeological origin. However, if the user has good reasons to do it differently, they are also allowed to define their own age classes. Furthermore, the user is encouraged to define any possible variable as a grouping variable. For an individual cemetery, this will mostly include the sex of the deceased, but it might as well be defined as marking different populations.

### Sophisticated means of computation

To get discrete age classes from time spans of individuals or groups of individuals, as they are usually provided by anthropological studies, the time span is spread across single years; the individual values for these years are afterwards pooled together to whichever age class the user chose initially. It is tempting to define different kernels for the spreading process (e.g., Gaussian), but in our view this solution would not reflect the anthropological diagnosis correctly: An individual diagnosed of being of adult age in Central European terminology – that is, 20 to 39 years old – has the same chances of being in reality, say, 22 or 38. The Gaussian kernel, however, would imply the highest probability of it being 30 years. This is why we decided to follow an equi-divisional approach (called “proportional” by J. L. Boldsen@boldsen_methods_1988). Each year of the reported time interval of an individual or a group of individuals is assigned the same value, essentially the same probability of being the true age.

While the general steps for computing an archaeological life table are straightforward – leaving idiosyncracies like the choice of the size of the radix and the exact formulas aside –, that is: all formulas circulating in archaeological textbooks reach the same results (except possible rounding errors), one detail tends to be overlooked. This detail concerns the average number of years lived by an individual that died within a specific age class (here called A(x) following the UN tables, elsewhere specified as „nax“). A(x) is of importance for computing L(x), the overall number of years lived within an age class, ultimately used to calculate life expectancy and the reconstruction of population. In virtually all archaeological text books, A(x) is defined as a/2, essentially splitting the length of the age interval in question in half. As we cannot know the exact date of death, given the current set of age estimation methods, this method seems beneficial for the beginning. The verdict of N. Keyfitz (Keyfitz (1977), 13) – „The uniform distribution of deaths […] leads to nax = n/2, but this is not acceptable when the age interval n is as wide as 5 years.“ – has certainly its validity when dealing with modern census data, but might be disregarded for older individuals, as the empirical value for age classes > 5 years is very close to 2.5, the computed value (empirically, it mostly hovers between 2.45 and 2.65 as older individuals tend to die later than within the middle of their class. This is far more difficult to generalize than for the younger age classes [see below]). Interestingly, this problem is valid even for empiric modern life tables for the first age group (0-1 years) where the age of death is recorded only in years, not in months. It seems that Keyfitz (Keyfitz (1970), 31) was the first to assume a value for nax to overcome this problem. From empirical data, he came to the following values for the youngest age classes: $$a_0 = 0.07 + 1.7M_0$$, and for ages from 1 to 4 to $$_4a_1 = 1.5$$. Elsewhere (Keyfitz (1977)) he has called this the”separation factor“. Counterintuitively this separation factor for the youngest age groups is relatively small in developed countries (e.g., ibid. p. 15), but large in developing countries or historical data (and, supposedly, also in prehistoric times). This means that if young children die at all in developed countries, they do this very young. In life tables of developing countries, the average of lived years for a=0 and a=1–4 hovers around 0.3 and 1.3, thus, we decided to approximate A(x) for age classes <5 with a/3, as we think that taking the separation factor into account is well backed by empirical data (also implied by (Chamberlain, 2006), 30; for anthropological data already: Weiss (1973), 37). The computation with this factor is the default setting. However, if the user does not agree, she is, of course, able to supply her own factor values or to disregard the factor approach altogether.

### Comprehensiveness of output

mortAAR provides life tables for every group the user specified and on its own one table for all groups combined. Furthermore, it allows to visualize the resulting data sets via curve plots. The user can simply click through the plots for the different key values and thereby get a clear picture about the specificities of each data set, also – if more than one category was specified – about the differences between the data sets.

Finally, we added the reconstruction of age distribution of the given population as an additional column (rel_popx). This is usually not provided by modern standard life tables. Following Kokkotidis and Richter (1991), 227, this is achieved by dividing L(x) by T0 (for a different equation see Weiss (1973), 38).

# Archaeological example

## Münsingen

### Archaeological background

The cemetery of Münsingen-Rain was discovered in 1904 during quarrying and then extensively excavated in 1906. The dead were buried singly and supine in wodden coffins, often lavishly equipped with jewelry or weapons. The documentation and subsequent publication of the graves in 1908 (Wiedmer-Stern (1908)) was outstanding for that time. This and the fact that Münsingen-Rain with 220–230 individuals and its occupation of roughly 300 years covers much of the Latène period secured it one of the most important places in typological and chronological studies of that period (Hodson (1968); see also Müller (1998)).

Recently, in a number of studies, the anthropological and archaeological material has been reanalysed from different angles (Jud (1998); Alt et al. (2005); Müller et al. (2008); Scheeres et al. (in_press); Moghaddam et al. (2016)). Though some papers explicitly dealt with the age and sex structure of the cemetery (e.g., Hinton (1986); Jud (1998), 125ff.), interestingly, none has yet presented a thorough demographic analysis of the individuals from Münsingen-Rain.

### The data set

The data originates from a published report of recent scientific analyses of the surviving skeletal material (Moghaddam et al. (2016)) of 71 individuals. The data is available as supplemental online material and was directly taken from the respective xlsx-file. Beside the age-range of each individuals the sex, the archaeological phase and the binary information if grave goods, if existing, are included. Further columns that are not of interest in the present context were omitted. The authors do not compare their results with those of an older investigation of the same individuals. However, a comparison with Hug (1956) shows that generally there is a very good agreement in age as well as sex determination.

### Constructing the life table

# load package dependencies
library(mortAAR)
library(magrittr)
# load dataset muensingen
muen <- mortAAR::muensingen  

First of all, we have to get an overview of the age classes that were used. The easiest way would be muen$age. However, this results in roughly formatted row of strings. We used the following code to get an ordered and well-arranged list without duplicated age classes. muen %>% dplyr::select(age) %>% dplyr::arrange(nchar(age), age) %>% unique() ## age ## 1 10 ## 2 3-5 ## 3 7-8 ## 5 7-9 ## 6 >50 ## 8 >60 ## 17 9-10 ## 18 12-14 ## 19 12-15 ## 20 13-15 ## 21 15-20 ## 22 18-28 ## 23 18-30 ## 24 20-26 ## 25 20-30 ## 29 20-40 ## 31 25-35 ## 34 25-40 ## 37 25-45 ## 38 30-40 ## 43 30-45 ## 47 30-50 ## 53 34-50 ## 54 35-45 ## 59 35-50 ## 60 40-50 ## 61 40-55 ## 63 40-60 ## 66 45-60 ## 68 50-70 ## 71 10+/-1 As can be easily seen, the data set is comprised of 31 different age ranges. Skimming through the lines it is obvious that the anthropologists were not completely consequent in their age ranges. While „20–40“ clearly should be read as „from 20 to 39 years“ this is certainly not the case with for example „7–8“. The first one is in our terminology exclusive of the maximal age range, the second inclusive. Less clear are cases like „12–14“ or „13–15“. If we want to define 5-year-classes the differentiation does not really matter in the first case, as the individual would fall completely in the age range of 10 to 14. In the second case, the differentiation is unfortunately of importance. Taking it as inclusive, the individual would count with 1/4 to the age class of 15 to 19 while reading it as exlusive the individual would be associated with the younger age class. Unfortunately, we cannot solve this issue but for future reports we can only ask the authors to be more precise in their terminology. For the sake of the example, we assumed that age ranges only one year apart (e.g., „7-8“) are meant as inclusive and had to be adapted, but otherwise treated the age ranges as exclusive. For those individuals with an open end, we assume a maximal age of 70. In the next step, not only the aforementioned inconsistencies have to be corrected, but also non-numerical characters (e.g., “>”) must be replaced to be able to feed the data into mortAAR. # correct inconsistencies muen <- muen %>% dplyr::mutate( age = dplyr::case_when( .$age == ">50"    ~ "50-70",
.$age == ">60" ~ "60-70", .$age == "10+/-1" ~ "9-12",
.$age == "10" ~ "10-11", .$age == "7-8"    ~ "7-9",
.$age == "9-10" ~ "9-11", TRUE ~ .$age
)
)

After adjusting the age class categories, the column “age” can be split into two separate columns “from” and “to”, which mark the age span. These are then further transformed into numeric columns.

# split string column
muen <- muen %>%
tidyr::separate(age, c("from", "to")) %>%
transform(from = as.numeric(from), to = as.numeric(to))  

All the steps above were necessary to prepare the raw data. We are now ready to feed it into the function prep.life.table that rearranges it for the actual life table function.
We want to have 5-year-age categories, except for the first 5 years which are further split into the first and the subsequent 4 years. Therefore, we choose “Standard” as a method. As explained above, we assume that the age ranges are meant to be exclusive of the closing year (e.g., “20–40” as “20–39”). We regulate this by choosing “excluded” for agerange. The beginning and ending of the age classes is framed by “from” (= agebeg) and “to” (= ageend) respectively. For the first run, we choose “sex” as the grouping variable group but we could also have selected “latene_phase” (the archaeological phasing) or “grave_goods” (existence or non-existence of grave goods).

# apply data preparation function
muen_prep <- muen %>%
prep.life.table(
group = "sex",
agebeg = "from",
ageend = "to",
method = "Standard",
agerange = "excluded"
)  

The resulting data frame muen_prep is then fed into the life table function life.table.

# calculate life.table
muen_result <- muen_prep %>%
life.table() 

First, the tabular output is created.

muen_result 
##
##
##   mortAAR life table for sex: female (n = 33 individuals)
##
## Life expectancy at birth (e0): 34.946
##
##         x a    Ax    Dx     dx      lx      qx      Lx       Tx     ex rel_popx
## 1    0--0 1 0.333 0.000  0.000 100.000   0.000 100.000 3494.571 34.946    2.862
## 2    1--4 4 1.333 0.000  0.000 100.000   0.000 400.000 3394.571 33.946   11.446
## 3    5--9 5 2.500 0.000  0.000 100.000   0.000 500.000 2994.571 29.946   14.308
## 4  10--14 5 2.500 3.000  9.091 100.000   9.091 477.273 2494.571 24.946   13.658
## 5  15--19 5 2.500 1.200  3.636  90.909   4.000 445.455 2017.298 22.190   12.747
## 6  20--24 5 2.500 2.833  8.586  87.273   9.838 414.899 1571.843 18.011   11.873
## 7  25--29 5 2.500 3.133  9.495  78.687  12.067 369.697 1156.944 14.703   10.579
## 8  30--34 5 2.500 5.646 17.109  69.192  24.726 303.188  787.247 11.378    8.676
## 9  35--39 5 2.500 7.229 21.907  52.083  42.061 205.650  484.059  9.294    5.885
## 10 40--44 5 2.500 4.313 13.068  30.177  43.305 118.213  278.409  9.226    3.383
## 11 45--49 5 2.500 2.479  7.513  17.109  43.911  66.761  160.196  9.363    1.910
## 12 50--54 5 2.500 0.833  2.525   9.596  26.316  41.667   93.434  9.737    1.192
## 13 55--59 5 2.500 0.833  2.525   7.071  35.714  29.040   51.768  7.321    0.831
## 14 60--64 5 2.500 0.750  2.273   4.545  50.000  17.045   22.727  5.000    0.488
## 15 65--69 5 2.500 0.750  2.273   2.273 100.000   5.682    5.682  2.500    0.163
##
##   mortAAR life table for sex: n.d. (n = 7 individuals)
##
## Life expectancy at birth (e0): 8.31
##
##         x a    Ax    Dx     dx      lx      qx      Lx      Tx    ex rel_popx
## 1    0--0 1 0.333 0.000  0.000 100.000   0.000 100.000 830.952 8.310   12.034
## 2    1--4 4 1.333 1.000 14.286 100.000  14.286 361.905 730.952 7.310   43.553
## 3    5--9 5 2.500 3.833 54.762  85.714  63.889 291.667 369.048 4.306   35.100
## 4  10--14 5 2.500 2.167 30.952  30.952 100.000  77.381  77.381 2.500    9.312
## 5  15--19 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 6  20--24 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 7  25--29 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 8  30--34 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 9  35--39 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 10 40--44 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 11 45--49 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 12 50--54 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 13 55--59 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 14 60--64 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
## 15 65--69 5 2.500 0.000  0.000   0.000     NaN   0.000   0.000   NaN    0.000
##
##   mortAAR life table for sex: male (n = 31 individuals)
##
## Life expectancy at birth (e0): 47.863
##
##         x a    Ax    Dx     dx      lx      qx      Lx       Tx     ex rel_popx
## 1    0--0 1 0.333 0.000  0.000 100.000   0.000 100.000 4786.290 47.863    2.089
## 2    1--4 4 1.333 0.000  0.000 100.000   0.000 400.000 4686.290 46.863    8.357
## 3    5--9 5 2.500 0.000  0.000 100.000   0.000 500.000 4286.290 42.863   10.447
## 4  10--14 5 2.500 0.000  0.000 100.000   0.000 500.000 3786.290 37.863   10.447
## 5  15--19 5 2.500 0.167  0.538 100.000   0.538 498.656 3286.290 32.863   10.418
## 6  20--24 5 2.500 1.417  4.570  99.462   4.595 485.887 2787.634 28.027   10.152
## 7  25--29 5 2.500 3.000  9.677  94.892  10.198 450.269 2301.747 24.256    9.407
## 8  30--34 5 2.500 3.000  9.677  85.215  11.356 401.882 1851.478 21.727    8.397
## 9  35--39 5 2.500 3.000  9.677  75.538  12.811 353.495 1449.597 19.190    7.386
## 10 40--44 5 2.500 3.833 12.366  65.860  18.776 298.387 1096.102 16.643    6.234
## 11 45--49 5 2.500 2.250  7.258  53.495  13.568 249.328  797.715 14.912    5.209
## 12 50--54 5 2.500 2.500  8.065  46.237  17.442 211.022  548.387 11.860    4.409
## 13 55--59 5 2.500 1.833  5.914  38.172  15.493 176.075  337.366  8.838    3.679
## 14 60--64 5 2.500 5.000 16.129  32.258  50.000 120.968  161.290  5.000    2.527
## 15 65--69 5 2.500 5.000 16.129  16.129 100.000  40.323   40.323  2.500    0.842
##
##   mortAAR life table for sex: All (n = 71 individuals)
##
## Life expectancy at birth (e0): 37.96
##
##         x a    Ax     Dx     dx      lx      qx      Lx       Tx     ex rel_popx
## 1    0--0 1 0.333  0.000  0.000 100.000   0.000 100.000 3795.951 37.960    2.634
## 2    1--4 4 1.333  1.000  1.408 100.000   1.408 396.244 3695.951 36.960   10.439
## 3    5--9 5 2.500  3.833  5.399  98.592   5.476 479.460 3299.707 33.468   12.631
## 4  10--14 5 2.500  5.167  7.277  93.192   7.809 447.770 2820.246 30.263   11.796
## 5  15--19 5 2.500  1.367  1.925  85.915   2.240 424.765 2372.477 27.614   11.190
## 6  20--24 5 2.500  4.250  5.986  83.991   7.127 404.988 1947.711 23.190   10.669
## 7  25--29 5 2.500  6.133  8.638  78.005  11.074 368.427 1542.723 19.777    9.706
## 8  30--34 5 2.500  8.646 12.177  69.366  17.555 316.388 1174.296 16.929    8.335
## 9  35--39 5 2.500 10.229 14.407  57.189  25.192 249.927  857.908 15.001    6.584
## 10 40--44 5 2.500  8.146 11.473  42.782  26.818 185.226  607.981 14.211    4.880
## 11 45--49 5 2.500  4.729  6.661  31.309  21.275 139.891  422.755 13.503    3.685
## 12 50--54 5 2.500  3.333  4.695  24.648  19.048 111.502  282.864 11.476    2.937
## 13 55--59 5 2.500  2.667  3.756  19.953  18.824  90.376  171.362  8.588    2.381
## 14 60--64 5 2.500  5.750  8.099  16.197  50.000  60.739   80.986  5.000    1.600
## 15 65--69 5 2.500  5.750  8.099   8.099 100.000  20.246   20.246  2.500    0.533

The visual inspection can be of great help, especially when the comparison of two or more groups is involved.

muen_result %>%
plot(display = c("dx","qx", "lx", "ex", "rel_popx"))  

## Warning: Removed 11 rows containing missing values (geom_path).

## Warning: Removed 11 rows containing missing values (geom_path).

### Mortality patterns

The maximum within the proportion of deaths (dx) of all individuals from Münsingen-Rain is around 40 years. Largely missing are younger individuals below 20, but also the age of 50 and above is only slightly present. Especially the apparent lack of the subadult individuals generates questions concerning the representation of the data. Already a superficial look at any modern life tables leads to the expectation of far higher numbers of younger individuals. Therefore, the obvious conclusion seems that not everybody was buried within the cemetery.

However, there are also differences between the adult individuals. The maximum in females was in their 40s, while male individuals apparently died somehow later in their 50s. There are virtually no female individuals older than 55, but many males above 60. Accordingly female individuals suffered a much higher probability of death (qx), had less survivorship (lx) within all age categories. The life expectancy differs as much as nearly 13 years (35.0 for females vs. 47.9 for males), but this is also due to the fact that it was obviously possible to sex six subadult females, but nearly no subadult males.

As a result the analysis leaves more open questions than answers: Representation is obviously not given, as is demonstrated by the largely missing subadult individuals. However, even with adult individuals, the highly differing mortality pattern between males and females elicits the question if this was really due to the differing life expectancy or differing cultural preferences in burying males and females.

We invite the reader to regroup the data with the variables “latene_phase” and “grave_goods” and compare her results with the conclusions by P. Hinton (Hinton (1986)).

## Magdalenenberg

### Archaeological Background

One of the biggest burial mounds in Central Europe is the so-called ‘Magdalenenberg‘ near Villingen-Schwenningen in Baden-Württemberg. Within the Early Iron Age it dates into the beginning of the Upper Hallstatt Period (c. 620–450 calBC). It had a diameter of over 100 metres and has still a height of 6,5 metres. For complete excavation 45000 cubic metres of earth and stone had to be moved. The first excavations took place in 1887 and 1890 and are in an excellent state of preservation. A modern excavation was done between 1970 and 1973 by Konrad Spindler.

The central grave was probably erected in 616 BC, as established by dendrochronology (Billamboz and Neyses (1999)); it had already been reopened in ancient times, but the wooden chamber was still in pristine condition when excavated. Furthermore, more than 100 additional burials were found which were dug into the burial mound a relatively short period after the installation of the central grave. These proved to be of great importance for relative chronology as well as for the social interpretation of the Hallstatt period.

The importance of the ‘Magdalenenberg‘ does not only derived from the excellent preservation and the many burials that were uncovered, but also from the fact that the excavator Spindler did not choose to wait for the publication until everything was excavated or studied. He started to publish the raw results already in 1971 when the excavation was still under way. By 1980 all graves were published in six volumes (Spindler (1971), Spindler (1972), Spindler (1973), Spindler (1976), Spindler (1977), Spindler (1980)).

In recent years the anthropological material has been subjected to stable isotope analyses (Oelze et al. (2012)). In this context the whole material was analysed again by established anthropological methods to get more information on the age and sex of the deceased. This resulted into a paper on the demographic structure of the population of ‘Magdalenenberg’ (Zäuner and Wahl (2013)). The new analyses were able to specify the results in some respects done in the 1970s, but for the sake of this paper it is important to emphasize that in general, they are both congruent.

### The data set

The aforementioned paper (Zäuner and Wahl (2013)) provides a complete table of the findings, but as this is very detailed, it is easier to refer to the life table the authors generated. They refrained from including an age range of 0–1, so we followed them in this. As explained above, mortAAR allows this easily. For the oldest age, we assumed, similar to Münsingen, a maximal age of 69 (because the age ranges are in this case inclusive).

Because of one peculiarity their life table differs from the one mortAAR generates: they estimated the lived years of the oldest age group, 4.72 individuals, with 0, which means that they assumed that the individuals died after reaching their 60th birthday. This does not seem very plausible to us, and we think that the result of mortAAR is more realistic (average death in the middle of the age class). The differences apply specifically to the sum of lived years (Lx) and thus also to Tx, ex and the relative population measure (rel_popx).

### Constructing the life table

The preparing steps for the construction of the life table of the population from ‘Magdalenenberg’ are less extensive than from Münsingen-Rain because the data already came from a life table and is thus better prepared.

mag <- magdalenenberg  

The only replacement necessary concerns the oldest age group.

mag <- mag %>%
replace(mag == "60-x", "60-69")  
mag <- mag %>%
tidyr::separate(a, c("from", "to")) %>%
transform(from = as.numeric(from), to = as.numeric(to))  

As method we choose this time “Equal5”. This way we get 5-year-intervals throughout, as in the original life table. The closing year is meant to be counted as well, therefore agerange is set to “included”. The biggest difference to the Münsingen example concerns the number of deceased. Within the Münsingen data each line concerns one individual, while within the Magdalenenberg data each line (= age range) concerns more than one individual. This is why it is mandatory this time to define dec. Because we analyze all individuals together, no grouping variable is specified and therefore only one life table will be computed.

mag_prep <- mag %>%
prep.life.table(
dec = "Dx",
agebeg = "from",
ageend = "to",
method = "Equal5",
agerange = "included"
)  

Finally, the prepared table is fed into the function life.table, and the result printed as well as plotted.

mag_result <- mag_prep %>%
life.table()

mag_result 
##
##   mortAAR life table (n = 111 individuals)
##
## Life expectancy at birth (e0): 32.196
##
##         x a    Ax    Dx     dx      lx      qx      Lx       Tx     ex rel_popx
## 1    0--4 5 1.667  3.79  3.414 100.000   3.414 488.619 3219.632 32.196   15.176
## 2    5--9 5 2.500  4.62  4.162  96.586   4.309 472.523 2731.014 28.276   14.676
## 3  10--14 5 2.500  4.54  4.090  92.423   4.425 451.892 2258.491 24.436   14.036
## 4  15--19 5 2.500  4.21  3.793  88.333   4.294 432.185 1806.599 20.452   13.423
## 5  20--24 5 2.500 14.99 13.505  84.541  15.974 388.941 1374.414 16.257   12.080
## 6  25--29 5 2.500 20.61 18.568  71.036  26.138 308.761  985.473 13.873    9.590
## 7  30--34 5 2.500 17.20 15.495  52.468  29.533 223.604  676.712 12.897    6.945
## 8  35--39 5 2.500 14.39 12.964  36.973  35.063 152.455  453.108 12.255    4.735
## 9  40--44 5 2.500  6.68  6.018  24.009  25.066 105.000  300.653 12.523    3.261
## 10 45--49 5 2.500  4.04  3.640  17.991  20.230  80.856  195.653 10.875    2.511
## 11 50--54 5 2.500  5.49  4.946  14.351  34.463  59.392  114.797  7.999    1.845
## 12 55--59 5 2.500  5.72  5.153   9.405  54.789  34.144   55.405  5.891    1.060
## 13 60--64 5 2.500  2.36  2.126   4.252  50.000  15.946   21.261  5.000    0.495
## 14 65--69 5 2.500  2.36  2.126   2.126 100.000   5.315    5.315  2.500    0.165

For the purpose of this example, we limit the graphical output to the proportion of deaths (dx), probability of death (qx) and life expectancy (ex).

mag_result %>%
plot(display = c("dx","qx","ex"))  

### Mortality patterns

Very similar to the Münsingen example, the maximum within the proportion of deaths (dx) of all individuals is in early grown up years, this time around 30 years. Again, largely missing are younger individuals below 20, but also the age of 50 and above. Because of the lack of younger individuals, life expectancy at birth is relatively high at 32.2 years. Already observed by Zäuner and Wahl, the fact that life expectancy is steadily declining from birth onwards is completely atypical. Remarkable, but certainly an artefact due to the necessary artifical age ranges, is the steep decline of the probability of death (qx) after 40 and 60, respectively.

## Comparing Early Iron Age (Magdalenenberg) and Late Iron Age (Münsingen-Rain)

As a last step for our analysis, we will compare the curves of the life tables of the cemeteries from the ‘Magdalenenberg’ and Münsingen-Rain.

### Constructing the life table

The output of the function prep.life.table can be addressed separately by their grouping names. We use this option to collect the results of the above examples Münsingen-Rain and Magdalenenberg. For ‘Magdalenenberg’ with no grouping variable the name is “Deceased” by default. Because we want to have comparable data from Münsingen-Rain we choose the output for all individuals (“All” by default).

comp <- list(mag_prep$Deceased, muen_prep$All)  

To have meaningful names for the graphical output, we change these.

names(comp) <- c("Magdalenenberg", "Muensingen")  

Again, the newly formed and renamed list is then fed into the function life.table.

comp_result <- comp %>%
life.table()  

We can skip the tabular output because this has already been provided above and go straight to the diagrams.

comp_result %>%
plot(display = c("dx","qx", "lx","ex"))  

### Mortality patterns

The similarities, but also the differences between the data sets are striking. On the one hand, the general shape of the curves of the probability of death (dx) is the same with very low values in the younger and older age classes. By far the most prominent age group in both data sets are the middle aged individuals. However, it seems that the peak for the Magdalenenberg individuals are in the 30s, while for the Münsingen population it is 10 years later. This difference is also reflected in the other diagrams: The probability of death (qx) of the Magdalenenberg individuals is higher in nearly all age categories within 20+, and their rate of survivorship (lx) is decreasing faster. Consequently, while the Münsingen have a life expectancy of 38.0 years when born, the one for the population interred in Magdalenenberg is only at 32.2 years. This difference in the remaining life expectancy remains more or less the same till the highest age group.

The differences are difficult to explain. First, of course, we have to assess the possibility that the age difference reflects differences present in real life. However, as such a selection is obvious with the subadult individuals it seems hard to exclude a similar preference for older individuals.

Therefore, another possible reason for the differences could be different cultural preferences in selecting the individuals to be interred in the cemetery. This would mean that they have preferred to inter younger adult individuals during the Upper Hallstatt period and older ones during the Latène period.

Finally, for both data sets it has been emphasized that the skeletal material underwent repeated studies, which reached very similar results, it seems hard to justify fundamental differences in aging by different anthropologists. However, a possible reason could be the varying material that survived. For Münsingen, due to selection processes after excavation, only skulls are available for analysis, while for the Magdalenenberg whole skeletons are existent.

In the past scholars have taken very different stances to these peculiar age distributions and differences. Already P. Jud (Jud (1998), 129) in reference to the population from Magdalenenberg regarded the male individuals from Münsingen-Rain as too old. However, from a paleodemographic perspective the opposite could also be argued, that is that the population of Magdalenenberg is too young.

It is neither the aim nor the scope of this paper to solve this issue. However, in line with a recent overview by Eggl (Eggl (2009)) we would like to emphasize the need for more systematic studies that also take not only the paleodemographic, but also the archaeological uncertainties into account.

## Conclusion

Currently, paleodemography seems to undergo a sea change. While the early criticism from the early 1980s about the representation of aging characteristics (Bocquet-Appel and Masset (1982)) had been fervidly been rebutted (e.g., Van Gerven and Armelagos (1983)), the problems of getting to mortality patterns is now common knowledge. Some recent solutions by paleodemographers have been to remodel life tables, to introduce complex statistic measurements like Bayesian statistics or to revert the logic of aging skeletons (see the examples in Hoppa and Vaupel (2002)).

Our own attempt on life tables is (still) a far cry from the recent course of research. The reason why we still think this method is valid is simple: While we do not dismiss the problems of life tables with their assumption of stationary populations, we still think that even in their simple form they provide useful information, not necessarily for the paleodemographist, but for the archaeologist. What tends to be forgotten is that the treatment of the deceased is always a conscious decision of the surviving members of the society in question. Even the non-treatment of the dead, e.g., by excarnation, still demands a decision. Therefore, even if the age-pattern is as distorted as in the examples above – and it remains the question if such a situation should not be regarded as the norm for much of prehistory –, it still provides highly relevant information about cultural behaviour and preferences. To elucidate even more hints on prehistoric practices it is of primordial importance that archaeologists, anthropologists and paleodemographers work closer together than they have in the past to get to grips with actual population developments, representation of burial data and possible sources of bias. If our package helps in this process, we would be more than happy.

# References

Acsádi, G., Nemeskéri, J., 1970. History of Human Life Span and Mortality. Akadémiai Kiadó, Budapest.

Alt, K.W., Müller, F., Jud, P., 2005. Biologische verwandtschaft und soziale struktur im latènezeitlichen gräberfeld von münsingen-rain. Jahrbuch des Römisch-Germanischen Zentralmuseums Mainz 52, 157–210.

Billamboz, A., Neyses, M., 1999. Das fürstengrab von villingen-magdalenenberg im jahrringkalender der hallstattzeit, in: Spindler, K. (Ed.), Der Magdalenenberg Bei Villingen: Ein Fürstengrabhügel Des 7. Vorchristlichen Jahrhunderts. K. Theiss, Stuttgart, Aalen, pp. 91–109.

Bocquet-Appel, J.-P., Masset, C., 1982. Farewell to paleodemography. Journal of Human Evolution 11, 321–333.

Chamberlain, A.T., 2006. Demography in archaeology, Cambridge manuals in archaeology. Cambridge University Press, Cambridge.

Eggl, C., 2009. Überlegungen zur demographischen repräsentanz und aussagekraft latènezeitlicher bestattungsplätze, in: Bagley, J.M., Eggl, C., Neumann, D., Schefzik, M. (Eds.), Alpen, Kult Und Eisenzeit: Festschrift Für Amei Lang Zum 65. Geburtstag. M. Leidorf, Rahden/Westf., pp. 323–334.

Herrmann, B., Grupe, G., Hummel, S., Piepenbrink, H., Schutkowski, H., 1990. Praehistorische Anthropologie: Leitfaden der Feld- und Labormethoden. Springer, Berlin.

Hinton, P., 1986. Analysis of burial rites at münsingen-rain: An approach to the study of iron age society, in: Duval, A., Gomez de Soto, J. (Eds.), Actes Du Viiie Colloque Sur Les âges Du Fer En France Non Méditerranéenne, Angoulême, 18–20 Mai 1984. Editions de la Federation Aquitania, Bordeaux, pp. 351–368.

Hodson, F.R., 1968. The la-tène cemetery at münsingen-rain: Catalogue and relative chronology. Stämpfli, Bern.

Hoppa, R.D., Vaupel, J.W. (Eds.), 2002. Paleodemography: Age distributions from skeletal samples. Cambridge University Press, Cambridge.

Hug, E., 1956. Die anthropologische sammlung im naturhistorischen museum bern. Mitteilungen der Naturforschenden Gesellschaft in Bern 13, 1–55.

Jud, P., 1998. Untersuchungen zur struktur des gräberfeldes von münsingen-rain, in: Müller, F. (Ed.), Münsingen-Rain, Ein Markstein Der Keltischen Archäologie. Funde, Befunde Und Methoden Im Vergleich. Akten Internationales Kolloquium ‚Das Keltische Gräberfeld von Münsingen-Rain 1906–1996‘, Münsingen/Bern, 9.–12. Oktober 1996. Bernisches Historisches Museum, Bern, pp. 123–144.

Keyfitz, N., 1977. Applied Mathematical Demography. Springer, New York.

Keyfitz, N., 1970. Finding probabilities from observed rates or how to make a life table. The American Statistician 24, 28–33.

Keyfitz, N., Flieger, W., 1968. World population: An analysis of vital data. University of Chicago Press, Chicago.

Kokkotidis, K.G., Richter, J., 1991. Graeberfeld-sterbetafeln. Archaeologische Informationen. Mitteilungen zur Ur- und Fruehgeschichte 14, 219–241.

Moghaddam, N., Müller, F., Hafner, A., Lösch, S., 2016. Social stratigraphy in late iron age switzerland: Stable carbon, nitrogen and sulphur isotope analysis of human remains from münsingen. Archaeological and Anthropological Sciences 8, 149–160.

Müller, F. (Ed.), 1998. Münsingen-rain, ein markstein der keltischen archäologie. funde, befunde und methoden im vergleich. akten internationales kolloquium ‚das keltische gräberfeld von münsingen-rain 1906–1996‘, münsingen/bern, 9.–12. oktober 1996. Bernisches Historisches Museum, Bern.

Müller, F., Alt, K.W., Jud, P., 2008. Artefacts, skulls and written sources: The social ranking of a celtic family buried at münsingen-rain. Antiquity 82, 462–469.

Oelze, V.M., Koch, J.K., Kupke, K., Nehlich, O., Zäuner, S., Wahl, J., Weise, S.M., Rieckhoff, S., Richards, M.P., 2012. Multi-isotopic analysis reveals individual mobility and diet at the early iron age monumental tumulus of magdalenenberg, germany. American Journal of Physical Anthropology 148, 406–421.

Scheeres, M., Knipper, C., Schönfelder, M., Hauschild, M., Siebel, W., Alt, K., in_press. Bioarchaeometric investigations (87Sr/86Sr and δ18O) of the la tène burial community of münsingen-rain, switzerland, in: Arnold, B. (Ed.), The Oxford Handbook of the Archaeology of the Continental Celts. Oxford University Press, Oxford.

Spindler, K., 1980. Magdalenenberg vi. Neckar-Verlag, Villingen.

Spindler, K. (Ed.), 1977. Magdalenenberg v: Der hallstattzeitliche fürstengrabhügel bei villingen im schwarzwald. Neckar-Verlag, Villingen.

Spindler, K. (Ed.), 1976. Magdalenenberg iv: Der hallstattzeitliche fürstengrabhügel bei villingen im schwarzwald. Neckar-Verlag, Villingen.

Spindler, K. (Ed.), 1973. Magdalenenberg iii: Der hallstattzeitliche fürstengrabhügel bei villingen im schwarzwald. Neckar-Verlag, Villingen.

Spindler, K. (Ed.), 1972. Magdalenenberg ii: Der hallstattzeitliche fürstengrabhügel bei villingen im schwarzwald. Neckar-Verlag, Villingen.

Spindler, K. (Ed.), 1971. Magdalenenberg i: Der hallstattzeitliche fürstengrabhügel bei villingen im schwarzwald. Neckar-Verlag, Villingen.

Van Gerven, D.P., Armelagos, G.J., 1983. ‚Farewell to paleodemography?‘ rumors of its death have been greatly exaggerated. Journal of Human Evolution 12, 353–360.

Weiss, K.M., 1973. Demographic models for anthropology. American Antiquity 38, 1–186.

Wiedmer-Stern, J., 1908. Das gallische gräberfeld bei münsingen (kanton bern). Historischer Verein des Kantons Bern, Bern.

Zäuner, S., Wahl, J., 2013. Zur demographischen struktur der bestattungen im späthallstattzeitlichen grabhügel vom magdalenenberg. Fundberichte aus Baden-Württemberg 33, 133–145.