Biological age estimation using circulating blood biomarkers

Biological age captures physiological deterioration better than chronological age and is amenable to interventions. Blood-based biomarkers have been identified as suitable candidates for biological age estimation. This study aims to improve biological age estimation using machine learning models and a feature-set of 60 circulating biomarkers available from the UK Biobank (n = 306,116).

We implement an Elastic-Net derived Cox model with 25 selected biomarkers to predict mortality risk (C-Index = 0.778; 95% CI [0.767–0.788]), which outperforms the well-known blood-biomarker based PhenoAge model (C-Index = 0.750; 95% CI [0.739–0.761]), providing a C-Index lift of 0.028 representing an 11% relative increase in predictive value.

Importantly, we then show that using common clinical assay panels, with few biomarkers, alongside imputation and the model derived on the full set of biomarkers, does not substantially degrade predictive accuracy from the theoretical maximum achievable for the available biomarkers. Biological age is estimated as the equivalent age within the same-sex population which corresponds to an individual’s mortality risk. Values ranged between 20-years younger and 20-years older than individuals’ chronological age, exposing the magnitude of ageing signals contained in blood markers. Thus, we demonstrate a practical and cost-efficient method of estimating an improved measure of Biological Age, available to the general population.

open access paper

Fig. 3: Our results confirm relationships suggested by Levine et al.’s PhenoAge model, and additionally suggest that cystatin C is the biomarker of primary importance in biological age estimation.

a Bar chart showing standardised Cox model coefficients and 95% confidence intervals (log hazard scale) of the Full ENC model developed using stably selected variables, ranked in descending order. Coefficients are standardised (i.e. rescaled) by multiplying by the standard deviation of the variable concerned. Red indicates that higher levels increase mortality hazard; blue indicates that higher levels reduce mortality hazard. Apart from age and sex, cystatin C appears to have the strongest effect size. b Comparison of coefficient values between Levine et. al’s PhenoAge coefficients (green) and our Elastic-Net derived Cox model (blue). Model coefficients are similar across both models. Our ENC model selected individual WBC components (monocytes, neutrophils and lymphocytes) rather than overall WBC count. Measurement units for biomarkers were the same across both models.


I found this a really good paper/appendix looking at Creatinine, GFR and Cystatin-C I will extract a chart for a second post.

cystatin c nejmoa2203769_appendix.pdf (2.0 MB)


This was a particularly nice chart about Cystatin-C which basically says it floats along pretty well static until people are around 50 and then goes up in a sort of linearish manner. However, it gives a good target for healthy kidney function in the realm of 0.75 mg/l.


Okay, so who is going to build the excel spreadsheet for this set of Biomarkers? It looks like an enhancement to the Levine model.


This chart is fantastic. Thanks John. Now all we need is the updated excel spreadsheet including the new Biomarkers and related “age” calculations.

1 Like

My son and I are working on a website which should do all of these things. What we have so far is Levine and PcAge

The idea is you put your values in once (ordinarily they are stored in local storage on your computer) and then it will calculate the biological age with a number of formulae.

We also intend to have information about the individual biomarkers.

Personally I think Cystatin-C is very important as is CRP.


@John_Hemming Awesome. Thanks. I’m headed to your site now.


List of markers for their full version of the model

1 Like

Here are the coefficients:

feature coefficient_SexAge coefficient_ENET featureMean
age 0.100432393 0.074763266 56.0487752
albumin 0 -0.011331946 45.1238763
alkaline_phosphatase 0 0.00164946 82.6847975
urea 0 -0.029554872 5.3547152
cholesterol 0 -0.0805656 5.6177437
creatinine 0 -0.01095746 71.565605
cystatin_c 0 1.859556436 0.900946
glycated_haemoglobin 0 0.018116675 35.4785711
log_c_reactive_protein 0 0.079109916 0.3003624
log_gamma_glutamyltransf 0 0.265550311 3.3795613
red_blood_cell_erythrocyte_count 0 -0.204442153 4.4994648
mean_corpuscular_volume 0 0.017165356 91.9251099
red_blood_cell_erythrocyte_distribution_width 0 0.202009895 13.4342296
monocyte_count 0 0.36937314 0.4746987
neutrophill_count 0 0.06679092 4.1849454
lymphocyte_percentage 0 -0.0108158 28.5817604
mean_sphered_cell_volume 0 0.006736204 83.6363269
log_alanine_aminotransfe 0 -0.312442261 3.077868
log_shbg 0 0.292323186 3.8202787
log_vitamin_d 0 -0.265467867 3.6052878
high_light_scatter_reticulocyte_percentage 0 0.169234165 0.3988152
glucose 0 0.032171478 4.9563054
platelet_distribution_width 0 0.071527711 16.4543576
mean_corpuscular_haemoglobin 0 0.02746487 31.8396206
platelet_crit 0 -1.329561046 0.2385396
apolipoprotein_a 0 -0.185139395 1.5238771
sexM 0.51779499 0.557512185 0

thanks for the addition, I’ll try to add this in.

if you create an account it is possible to add your own custom tests, and if you wish post it for review with articles attached so that I can add it to the public side of the website.

if on the website, you wish for any additions, you can always use the contact form or email


@alex_biohacking this is great - thanks for doing it!!!

1 Like

Yes, Fantastic effort Alex. Really appreciate the work you and your father are doing!

Here’s a paper I found via @ConquerAging recent video. It show “aging curves” (my term) for various Biomarkers, and provides summary descriptions of people who are biologically younger and those older.


One more type of tool