So Victoria Prieto kindly invited me to give a lecture via Skype (because the class is in Uruguay) on applications of the Lexis diagram. And I must say that Skype quality just stinks for this kind of thing. They were able to get clear audio of me IFF we made it so that I was just doing screen share and their audio connection was turned off. We made it work somehow, but got lost in a sea of white noise during the Q&A a couple times. Victoria asked me to try to make them love Lexis. So, aside from trying to make a real case on the utility of the Lexis diagram, I also found some atypical applications here and there, and made my own silly (but fun!) example of lifelines in the Lexis diagram, based on futbol (I have to write it like that cuz football means US football to me, no matter how long I live in the EU) players on the Uruguay national team in all of Uruguay's appearances in World Cup and Copa America. Uruguay, you ask? It's here:
Uruguay punches (or bites? mwahaha) above their weight class in the realm of futbol. It's a mostly urban country, and they have a demography masters program, and a PhD specialization in pop studies. And Victoria teaches there, ergo the Lexis lecture, and that's why the Skype hassel. OK, now back to the point of this post:
I just wanted to show that you can represent any population of durations on the Lexis diagram (or its analogues).
Here are the plots I showed them, without first telling them what it was. I asked them to guess the data:
1) guess what this is showing.
It's right skewed, between ages 15 and 40, possibly fertility?! It does look that way doesn't it?, This turns out to be the aggregate of all ages in all teams in all cups, standardized in 2.5 year-width age groups. Meh. I didn't reveal the subject here yet.
2) Maybe this would tip off? If I just say that the data in the above historgram came from the points in this Lexis diagram? (click to embiggen)
This image still didn't settle it. I guess x ticks every 20 years kind of obfuscates recognizing the particular years of the cups. Like, 1930 and 1950 I think Uruguay won, but there aren't any ticks there to indicate it. So then came the reveal, but since it was a one-way connection I'm not sure if it tanked or if they thought it was cool. But they did ask for a blog post on it with the code to get the data, etc. The truth is you could augment these data in so many ways--- I think sports data is ripe for demographic analysis, though one might need to play with the definition of age, like this:
Same data, but the lifelines only connect the first and last cups played by each player. The life lines are of course still aligned to age 0 (birth), but you could certainly realign them to make first cup be age zero, or last cup age omega... Further you could augment these to make the points games rather than simply being a team member, add other cups, regular season, and ... the pre-data territory: youth teams. The Lexis diagram isn't the limiting factor here, but the more detail that is added, the less useful lifelines become, and the more likely you are to gain insight from some kind of aggregation (perhaps on a metric rather than on team membership, and aligned to one or another definition of age). Then patterns will emerge that are otherwise invisible. Woot.
I hopothesized that you could use the Lexis diagrams to guess at the heros of any given team. Whaaa? Take the lifelines of the most recent team, and follow the lines back in time (downward left) to sometime between ages 5 and 15, assuming that that's when futbol impressions are made in the most lasting way, then look up to which players appeared in those cups. That's the population of likely homebrew heros. Not entirely novel. Any player will just tell you their childhood references anyway.
But possibly more interesting that this subject matter was the mungery required to get these data. The data were scraped from wikipedia entries, like this one. And indeed, using the code annotatedhere
Feel free to use it, expand it, make cool plots, and share them.
If we think age and period as lat long coordinates, then we can also borrow the analogy of map projections. There is a large but finite number of ways to project the Lexis surface as it is (rotations, reflections, isotropic or not, other kinds of time measures, etc), but there are an infinite number of ways to reproject any of the time measures used as axes, thereby reprojecting whatever data is being shown on the surface. I'll use the example of an age pattern. This is very much in line with the previous post, where age itself was reprojected, and it's a basic extention of the Sanderson-Scherbov method of standardizing age patterns by distorting age in one of them. Let's start with the following standard Lexis surface of fertility.
There are plenty of stories one can tell here. Now let's use the trick from the previous post, and transform the y=axis. The trick to transforming the y-axis is that the y-coordinate for each x coordinate must remaing comparable with respect to the function that you use to transform. I'll take the example of survival quantiles, because for each year we have a period survival function, l(x) (HMD), which tells us the proportion surviving at each age x. If youinvert this then it tells you the age at which a given proportion of the synthetic population remains alive. Ergo, the ages that correspond to quantiles. These change over time, as mortality jumps about and/or gradually improves. We want the quantiles themselves as the new y-axis (last post it was remaining life expectancy, but now using survivial quantiles, just because). So, 1) for a given quantile and year, find the exact age that it corresponds to, 2) find the fertility rate that corresponds to that exact age (I use splines for both steps) 3) wash, wrinse, repeat over the whole surface: voila:
Same data! OK, we know the story, reproductive ages are now almost completely survived through. But it wasn't always the case! But that's not the point of this post. The point is the idea of reprojecting one or more axes of the Lexis surface, and its variants. All you need are two time series of data that is structured on the same age-like index (lifespan, time-to-death, time since X, time until X, etc). Here I chose lifespan quantiles, but it could have easily been another (preferably monotonic, but not necessarily so) lifetable function (or a function of a lifetable function!). Nor must it be a lifetable function. In this case we could have used ANY age-pattern to reproject. You could use fertility to reproject any aspect of mortality, for instance (but there might be more details to sort out).
One could simply plot remaining life expectancy on a Lexis surface. That'd be the smart thing to do. Not what I'm going to do here, which is Sunday goofing off.
First let's swap out age with prospective age. A prospective age is the age where you hit some some fixed level of remaining life expectancy. Since mortality changes depending on where and when you are prospective ages change too. This is a concept that Warren Sanderson and Sergei Scherbov use a lot. Here's the main go-to paper that explains it all in a compelling way. It's the basis of demographers starting to say things like "60 is the new 50", etc. People had been saying that kind of thing already, and noticing active aged people more and more, but the lifetable gives a nice objective basis for sayings like that. The idea is to take some fixed remaining life expectancy like 40 or whatever, and ask which age it belongs to. That usually requires some interpolation. So here's a calculator to do it (as well as a survival quantile calculator), and the image I want to explain (it's US females, by the way, HMD, as usual)
So, we have remaining life expectancy on the y-axis, and calendar year on the x-axis. The z-coordinate that is plotted is chronological age, which is represented both with color (darker blue higher age) and with labelled black contour lines. All the countours are increasing, which just means that remaining life expectancy is increasing at all ages. Where the contours are steeper it increased faster. There is a light 5x5 grid. for e(x) and year. Following any of the horizontals will tell you the Age at which the given remaining life expectancy was hit. So, for example, follow the e(x) = 25 line. Around 1945 it hits age 50, and in the most recent year it hits 60. Ergo 60-year olds today have the remaining life expectancy of 50-year olds in 1945, hence "60 is the new 50". It's awesome to find quick increases, but this plot doesn't have many (many other populations of the world have had more drammatic gains than the USA, by the way).
Finally the yellow descending lines are birth cohorts, and their wavy pattern shows how we've not only flipped, but also irregularly distorted the Lexis diagram. These allow for more comparisons. Of course the surface uses period mortality, so there's another level of distortion in it that simply isn't revealed. One could use cohort data for either a restricted range of e(x) and/or age, or else switch to a country like Sweden, which has a long series of data and lets you do pretty much any formal demog you want.
Here's the code, including a survival quantile lookup function, also based on a spline. You could also repeat the same Lexis-ish transformation with survival quantiles on the y-axis.... And you couldplot e(x) with one contour plot, and age with another contour plot above that. Oh dear, the possibilities are endless.
The code is posted in a github gist, here. Sorry gists can appear in posts directly using gadgets, but sometimes gadgets go missing...
I'm a fan of Vaupel & Yashin (1987) Repeated rescuscitation: How lifesaving alters lifetables (this paper, possibly paywalled) Here is a Jstor Link to the same article.
Under some strict assumptions, they derive how hypothetical improvements in mortality rates can be translated to saved lives, but that the process can be repeated indefinitely. Among the items derived is the composition of the stationary population by the numbers of times individuals have been saved. In the article, they decompose period l(x) schedules by making period comparisons. One thing that I'm always messing around with is the idea that cohort longevity has typically (always?) been better than that belonging to the period lifetables in which cohorts are born. For example, I was born in 1981, with a period e(0) of 70.81 . Ya right! By cohort is going to outperform that by a mile! One could already say that the force of mortality that I've been winning against so far my whole life is a perturbation of that which was observed in the USA in 1981. In this way, the 1981 period mortality schedule is the one I'm comparing to. I'm now 34 (I think...), so I have 35 single-age values of cohort m(x) of my own that can be compared with the period m(x) from ages 0 to 34 in 1981. Make sense?
The difference in these two series of m(x) can translate into uppercase Lambda from equation 10 and onwards in the above-linked paper. I can also get l(x) from these period and cohort m(x) series for the sake of comparison, and this gives everything needed for eq 10 in the paper. Ergo, I can decompose my cohort into those whose lives have been saved 0,1,2,... times due to improvements in mortality since we were born. And likewise for all the other cohorts passing through the population pyramid this year.
In order to break down the upper ages of the pyramid into how many times they've hypothetically been saved thus far, we need a mortality series stretching far enough back in time. The HMD contains a few such series. I'll take Sweden, because it's everyone's toy dataset for stuff like this: you just know it's going to work before you even start!
So, following my period-cohort comparison of mortality schedules to derive cumulative rate improvements, we get the following decomposition of the 2012 Swedish population pyramid:
The central off-white area are those whose lives have 'never' been saved, and then each successive shade of purple increments the number of times you've been saved. Looks like most 80-year females (right side) have been saved at least once, for instance.
This is all hypothetical- it assumes that ongoing mortality risk is the same for those that were saved 0 or 1 or 2 or more times. Inclusion of frailty would change the whole picture. But then we've never seen a pyramid decomposed by a frailty distribution because they're hypothetical too, not really observable directly unless you make more assumptions to instrumentalize the notion.
Here's the code: (click on post title to display)
(code hosted on github)
Note that one of the data objects required to reproduce this is uploaded at the bottom of this post. You could download the cohort death rates from the HMD, but these are not available for cohorts with fewer than 30 observations, which we need. So I derived them straight from the HMD raw data, which is a bit extra work.