Germán Rodríguez
Survival Analysis Princeton University

The U.S. 2006 Life Table

The file us2006s.dat has two columns representing age and the survival function by single years of age, for ages 0 to 110. The data come from the latest period life table for the U.S. I downloaded them from, which seems more user-friendly than the National Center for Health Statistics, which is the original source.

Here's how to read and plot the survival function, and how to compute and plot the (log of the) hazard function in Stata. I also include a command to check visually that the Gompertz provides a good fit to mortality above age 30.

// survival
infile age S using us2006s.dat, clear
twoway line S age, title("Survival Function, U.S. 2006") name(a,replace)

// hazard
gen H = - log(S)
gen h = H[_n] - H[_n-1]
list in 1/5
gen logh = log(h)
gen agem = age - 0.5 if h < .
twoway line logh agem,  xtitle("age") ///
	title("Hazard Function, U.S. 2006") name(b,replace)

// graph
graph combine a b, xsize(7) ysize(3)
graph export us2006s.png, width(600) replace

The Gompertz distribution provides a remarkably close fit to the hazard at adult ages, say above 30. Here is a graph with the log hazard and a simple OLS fit:

And these are the commands used to produce the graph:

// Gompertz
twoway (line logh agem if age > 30) ///
       (lfit logh agem if age > 30) ///
	, title("Hazard and Gompertz Fit for Adults, U.S. 2006") ///
	   xtitle("age") legend(off)
graph export us2006g.png, width(400)