{"id":400723,"date":"2026-04-22T06:46:00","date_gmt":"2026-04-22T12:46:00","guid":{"rendered":"https:\/\/quantixed.org\/?p=3771"},"modified":"2026-04-22T06:46:00","modified_gmt":"2026-04-22T12:46:00","slug":"new-value-increasing-cost-of-ukri-research-grants","status":"publish","type":"post","link":"https:\/\/www.r-bloggers.com\/2026\/04\/new-value-increasing-cost-of-ukri-research-grants\/","title":{"rendered":"New Value: increasing cost of UKRI research grants"},"content":{"rendered":"<!-- \r\n<div style=\"min-height: 30px;\">\r\n[social4i size=\"small\" align=\"align-left\"]\r\n<\/div>\r\n-->\r\n\r\n<div style=\"border: 1px solid; background: none repeat scroll 0 0 #EDEDED; margin: 1px; font-size: 12px;\">\r\n[This article was first published on  <strong><a href=\"https:\/\/quantixed.org\/2026\/04\/22\/new-value-increasing-cost-of-ukri-research-grants\/\"> Rstats \u2013 quantixed<\/a><\/strong>, and kindly contributed to <a href=\"https:\/\/www.r-bloggers.com\/\" rel=\"nofollow\">R-bloggers<\/a>].  (You can report issue about the content on this page <a href=\"https:\/\/www.r-bloggers.com\/contact-us\/\">here<\/a>)\r\n<hr>Want to share your content on R-bloggers?<a href=\"https:\/\/www.r-bloggers.com\/add-your-blog\/\" rel=\"nofollow\"> click here<\/a> if you have a blog, or <a href=\"http:\/\/r-posts.com\/\" rel=\"nofollow\"> here<\/a> if you don't.\r\n<\/div>\n\n<p>A chance comment from a colleague led to today\u2019s post.<\/p>\n\n\n\n<p>Competition for research grants in the UK has become <a href=\"https:\/\/www.nature.com\/articles\/d41586-025-02584-w\" rel=\"nofollow\" target=\"_blank\">more intense recently<\/a>. Success rates have dropped, and this has been attributed to more applications, against a backdrop of a flat investment in science by the government.<\/p>\n\n\n\n<p>My colleague thought that the cost of each proposal has increased in recent years, meaning that fewer grants can be funded. They thought that this leads to PIs making more applications, and potentially increasing the budget of these proposals as they try to land bigger fish; a vicious cycle which drives down the success rates further.<\/p>\n\n\n\n<p><strong>Let\u2019s see if the data agrees with this idea.<\/strong><\/p>\n\n\n\n<p>Using data from <a href=\"https:\/\/gtr.ukri.org\/\" rel=\"nofollow\" target=\"_blank\">GtR<\/a>, we can look at awards for research grants from UKRI agencies. We\u2019ll look at BBSRC and MRC as the main funders in the biological\/biomedical sphere. Plots first, <a href=\"https:\/\/quantixed.org\/2026\/04\/22\/new-value-increasing-cost-of-ukri-research-grants\/#code\" rel=\"nofollow\" target=\"_blank\">code<\/a><a href=\"https:\/\/quantixed.org\/2026\/04\/22\/new-value-increasing-cost-of-ukri-research-grants\/#the-code\" rel=\"nofollow\" target=\"_blank\"> later<\/a>.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Some details and caveats to the analysis (click for more)<\/summary>\n<p>Disclaimer: the goal of the post is to use publicly-available information to answer whether or not my colleague\u2019s hunch is correct. It is not meant to be a rigorous analysis to get a definitive answer.<\/p>\n\n\n\n<p>Data quality: to get the data from GtR, I filtered for \u201cResearch Grants\u201d from either MRC or BBSRC. The Research Grant category includes standard research grants, but also some smaller project funds as well as big projects and institutional level funding. I couldn\u2019t figure out a quick way to disambiguate project grants from the other awards. The median is a good way to exclude the big and small awards. It also, matched the biggest bulge in the ridge plot so it serves as a good indicator for project cost. The assumptions later in the post about salary costs are more uncertain. A proper breakdown of the awarded grants is needed to know for sure what costs are rising.<\/p>\n\n\n\n<p>Accessing data: There\u2019s a package for R to access the API (<a href=\"https:\/\/github.com\/shanej90\/gtR\" rel=\"nofollow\" target=\"_blank\">gtR<\/a>), I forked this and tried to update it to automate the pulldown of data, but the API is geared towards queries for projects, rather than by funder. In the end it was easier to download a csv from GtR directly.<\/p>\n\n\n\n<p>Project costs: a project can have several components at different centres. I consolidated split awards into one and took the total cost, and the earliest start date and the latest end date to do the calculation. It might be cleaner to remove these, as split awards may have higher costs.<\/p>\n\n\n\n<p>Completeness: GtR is missing most of the data from 2025 and 2026 (not added yet), so I only analysed up to 2024.<\/p>\n\n\n\n<p>FEC: UKRI awarded costs are 80% of the full economic cost (FEC) of the project. I have not corrected for this here.<\/p>\n<\/details>\n\n\n\n<p>If we look at total award value for each research grant we can a small upward shift since 2020.<\/p>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd5672d\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd5672d\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" fetchpriority=\"high\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_TotalAwardOverTime-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3772\" srcset_temp=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_TotalAwardOverTime-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_TotalAwardOverTime-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_TotalAwardOverTime-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_TotalAwardOverTime-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_TotalAwardOverTime-2048x1536.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Obviously there are projects of different duration in here and we need to know what is the \u201cgoing rate\u201d for a research project. We can calculate an Annual Cost by dividing the total award by the total duration of the project.<\/p>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd56d05\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd56d05\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearOverTime-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3773\" srcset_temp=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearOverTime-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearOverTime-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearOverTime-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearOverTime-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearOverTime-2048x1536.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>I have truncated the y-axis at \u00a31M per year because we are not interested in the very large projects that are captured in the dataset. There are a bunch of very small awards that also do not really concern us, but we can see the stripe of annual costs for projects over time and it does appear to trend upwards in the last five years.<\/p>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd57259\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd57259\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionByYear-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3774\" srcset_temp=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionByYear-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionByYear-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionByYear-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionByYear-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionByYear-2048x1536.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>We can see this a bit more clearly by making a ridgeplot and truncating at \u00a30.5M\/year.<\/p>\n\n\n\n<p>Isn\u2019t this to be expected though? Salaries have increased, consumables are more expensive. We need to factor in inflation to understand if this increase is real or just reflecting the fact that research just costs more in 2025 than it did in 2015.<\/p>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd584a4\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd584a4\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionWithInflation-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3775\" srcset_temp=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionWithInflation-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionWithInflation-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionWithInflation-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionWithInflation-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRC_CostPerYearDistributionWithInflation-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>If we take the median annual cost of all projects in a given year and make a bar chart, we can overlay a line with an indication of the cost with inflation factored in. The ONS publishes their measure of inflation which is normalised to 2015 prices. Using this data, we can project where the current annual cost should sit due to inflation since 2015 alone.<\/p>\n\n\n\n<p>For BBSRC in 2024, the median annual cost for research projects was \u00a3190.9 K\/yr, whereas the inflation-adjusted 2015 price would be \u00a3142.5 K\/yr. 2024 was not isolated, the three or four years proceeding it were also over-and-above the 2015 price adjusted for inflation.<\/p>\n\n\n\n<p>The picture at MRC is broadly similar.<\/p>\n\n\n\n<p>We can make the same plots and look at the project annual costs and how that would be expected to increase due to inflation since 2015. <\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd58bd7\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd58bd7\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"3780\" src=\"https:\/\/i0.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_TotalAwardOverTime-1-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3780\" srcset_temp=\"https:\/\/i0.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_TotalAwardOverTime-1-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_TotalAwardOverTime-1-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_TotalAwardOverTime-1-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_TotalAwardOverTime-1-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_TotalAwardOverTime-1-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd5918c\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd5918c\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"3778\" src=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearOverTime-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3778\" srcset_temp=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearOverTime-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearOverTime-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearOverTime-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearOverTime-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearOverTime-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd597a1\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd597a1\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"3779\" src=\"https:\/\/i0.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionByYear-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3779\" srcset_temp=\"https:\/\/i0.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionByYear-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionByYear-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionByYear-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionByYear-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionByYear-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd59c7e\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd59c7e\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"3777\" src=\"https:\/\/i0.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionWithInflation-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3777\" srcset_temp=\"https:\/\/i0.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionWithInflation-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionWithInflation-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionWithInflation-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionWithInflation-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/MRC_CostPerYearDistributionWithInflation-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/figure>\n\n\n\n<p>For MRC, the annual project cost in 2022-24 was also above the cost when adjusted for inflation, although this follows several years where the cost was below or on par with the inflation adjusted value.<\/p>\n\n\n\n<p>It does seem that the requested (and awarded) project costs have increased at both funders in the last few years. What is the source of this increase?<\/p>\n\n\n\n<p>Almost by definition, a project has an associated salary cost. We can look at this cost and see how it fared with inflation. Anyone working in UK higher ediucation will be ahead of me here\u2026<\/p>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd5baa6\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd5baa6\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i2.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/SalaryAndOnCostsOverTime-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3782\" srcset_temp=\"https:\/\/i2.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/SalaryAndOnCostsOverTime-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/SalaryAndOnCostsOverTime-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/SalaryAndOnCostsOverTime-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/SalaryAndOnCostsOverTime-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/SalaryAndOnCostsOverTime-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>If we look at the salary with on-costs and compare the value to the 2015 value adjusted for inflation, we can see that the salary cost of 1 FTE spine point 33 researcher has not kept pace in the last few years.<\/p>\n\n\n\n<p>This means that the above inflation rises in project annual costs would be even greater if the salary component were to be removed. We can remove the cost of one researcher to estimate what the non-salary project annual costs would look like for BBSRC.<\/p>\n\n\n\n<figure data-wp-context=\"{\"imageId\":\"69e8dafd5e1f1\"}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e8dafd5e1f1\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRCEstimate-1024x768.png?w=450&#038;ssl=1\" alt=\"\" class=\"wp-image-3783\" srcset_temp=\"https:\/\/i1.wp.com\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRCEstimate-1024x768.png?w=450&#038;ssl=1 1024w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRCEstimate-300x225.png 300w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRCEstimate-768x576.png 768w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRCEstimate-1536x1152.png 1536w, https:\/\/quantixed.org\/wp-content\/uploads\/2026\/04\/BBSRCEstimate-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>There may be a trend towards asking for more staff time per year relative to grants in 2015, or costing them higher up the scale, which would change this estimate. Although the salary costs are likely only around 30% of the total project annual cost, so the impact of such changes would not be huge.<\/p>\n\n\n\n<p>The increased cost of projects is most likely being driven from the other (non-salary) lines on the grant: the indirects, the running costs, equipment\/travel and so on. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Looking at awarded projects up to 2024, it is true that the cost of each project has increased. We know that the funder\u2019s budget for awarded projects has not gone up, so it does seem logical that this is a factor in driving success rates down and increasing competition.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"code\">The code<\/h2>\n\n\n<pre>\nlibrary(ggplot2)\nlibrary(dplyr)\nlibrary(ggridges)\nlibrary(ggtext)\nsysfonts::font_add_google(&quot;Roboto&quot;, &quot;roboto&quot;)\nshowtext::showtext_auto()\nshowtext::showtext_opts(dpi = 300)\n\n## Plot styling ----\nqColor &lt;- &quot;red&quot;\ncap &lt;-  paste0(\n  &quot;**Data:** UKRI Gateway to Research (GtR) on 2026-04-20.&lt;br&gt;**Graphic:** &quot;,\n  &quot;reproduced from quantixed.org&quot;\n)\n\ntheme_q &lt;- function() {\n  theme_minimal() +  \n    theme(\n      plot.caption = element_textbox_simple(\n        colour = &quot;grey25&quot;,\n        hjust = 0,\n        halign = 0,\n        margin = margin(b = 0, t = 10),\n        size = rel(0.6)\n      ),\n      text = element_text(family = &quot;roboto&quot;, size = 10),\n      plot.title = element_text(size = rel(1.2), face = &quot;bold&quot;)\n    )\n}\n\n## Functions ----\n\nautomate_dataviz &lt;- function(path) {\n  # load the csv file\n  df &lt;- read.csv(path)\n  # funder is found in FundingOrgName\n  funder &lt;- df$FundingOrgName[1]\n  \n  # StartDate and EndDate are character in the format of &quot;DD\/MM\/YYYY&quot;, we need to convert them to Date format\n  # Convert StartDate and EndDate to Date format\n  df$StartDate &lt;- as.Date(df$StartDate, format = &quot;%d\/%m\/%Y&quot;)\n  df$EndDate &lt;- as.Date(df$EndDate, format = &quot;%d\/%m\/%Y&quot;)\n  \n  # we are interested in the per project cost over time\n  # ProjectReference is &quot;BB\/K002341\/1&quot; or &quot;BB\/K002341\/2&quot;, we want to extract the first two parts &quot;BB\/K002341&quot;\n  df$ProjectID &lt;- sapply(strsplit(df$ProjectReference, &quot;\/&quot;), function(x) paste(x[1:2], collapse = &quot;\/&quot;))\n  # some projects might have the ProjectReference like &quot;BB\/K002341&quot; so we need to remove &quot;\/NA&quot; from ProjectID\n  df$ProjectID &lt;- gsub(&quot;\/NA&quot;, &quot;&quot;, df$ProjectID)\n  # remove any grants were the TotalCost is NA\n  df &lt;- df[!is.na(df$AwardPounds), ]\n  \n  # we need to group by ProjectID and calculate the total cost and total duration for each project\n  # to do this we need to find the earliest StartDate and latest EndDate for each project\n  project_summary &lt;- df %&gt;%\n    group_by(ProjectID) %&gt;%\n    summarise(TotalCost = sum(AwardPounds),\n              StartDate = min(StartDate),\n              EndDate = max(EndDate))\n  \n  # Calculate the duration in years\n  project_summary$DurationYears &lt;- as.numeric(difftime(project_summary$EndDate, project_summary$StartDate, units = &quot;days&quot;)) \/ 365.25\n  # Calculate the cost per year\n  project_summary$CostPerYear &lt;- project_summary$TotalCost \/ project_summary$DurationYears\n  # Now we have a summary of each project with total cost, duration, and cost per year\n  # check for NA, NaN or Inf values in CostPerYear and remove those rows\n  project_summary &lt;- project_summary[!is.na(project_summary$CostPerYear) &#038; !is.infinite(project_summary$CostPerYear), ]\n  # we have incomplete data for 2025 and 2026, so we will remove projects starting in those years\n  project_summary &lt;- project_summary[format(project_summary$StartDate, &quot;%Y&quot;) &lt; &quot;2025&quot;, ]\n  \n  # ggplot of CostPerYear by StartDate\n  ggplot(project_summary, aes(x = StartDate, y = CostPerYear)) +\n    geom_point(size = 1, shape = 16, color = qColor, alpha = 0.5) +\n    labs(title = paste0(funder, &quot;: Cost per Year of Projects Over Time&quot;),\n         x = &quot;Project Start Date&quot;,\n         y = &quot;Project Annual Cost (GBP\/yr)&quot;,\n         caption = cap) +\n    # scales should read 250K instead of 250000\n    scale_y_continuous(labels = scales::label_number(scale = 1e-3, suffix = &quot;K&quot;), limits = c(0, 1e6)) +\n    theme_q()\n  ggsave(paste0(&quot;Output\/Plots\/&quot;,funder,&quot;_CostPerYearOverTime.png&quot;), width = 8, height = 6, dpi = 300)\n  \n  ggplot(project_summary, aes(x = StartDate, y = TotalCost)) +\n    geom_point(size = 1, shape = 16, color = qColor, alpha = 0.5) +\n    labs(title = paste0(funder, &quot;: Total Award for Projects Over Time&quot;),\n         x = &quot;Project Start Date&quot;,\n         y = &quot;Project Total Cost (GBP)&quot;,\n         caption = cap) +\n    # scales should read 1M instead of 1000000\n    scale_y_continuous(labels = scales::label_number(scale = 1e-6, suffix = &quot;M&quot;), limits = c(0, 5e6)) +\n    theme_q()\n  ggsave(paste0(&quot;Output\/Plots\/&quot;,funder,&quot;_TotalAwardOverTime.png&quot;), width = 8, height = 6, dpi = 300)\n  \n  # extract the year from StartDate and add it as a new column\n  project_summary$Year &lt;- format(project_summary$StartDate, &quot;%Y&quot;)\n  \n  # ggridge plot of CostPerYear by Year-Quarter\n  ggplot(project_summary, aes(x = CostPerYear, y = Year, fill = Year)) +\n    geom_density_ridges(alpha = 0.7) +\n    scale_fill_cyclical(values = colorRampPalette(colors = c(&quot;grey50&quot;, qColor))(20)) +\n    labs(title = paste0(funder, &quot;: Distribution of Project Annual Cost by Year&quot;),\n         x = &quot;Project Annual Cost (GBP\/yr)&quot;,\n         y = &quot;Year&quot;,\n         caption = cap) +\n    theme_q() +\n    # scales should read 250K instead of 250000\n    scale_x_continuous(labels = scales::label_number(scale = 1e-3, suffix = &quot;K&quot;), limits = c(0,5e5)) +\n    theme(legend.position = &quot;none&quot;) +\n    coord_flip()\n  ggsave(paste0(&quot;Output\/Plots\/&quot;,funder,&quot;_CostPerYearDistributionByYear.png&quot;), width = 8, height = 6, dpi = 300)\n  \n  # overlay the mean cost per year for each year\n  yearly_summary &lt;&lt;- project_summary %&gt;%\n    group_by(Year) %&gt;%\n    summarise(MeanCostPerYear = mean(CostPerYear, na.rm = TRUE),\n              MedianCostPerYear = median(CostPerYear, na.rm = TRUE))\n  # we&#039;ll store that in our environemnt for use outside the function\n  \n  # inflation information from ONS\n  inflation &lt;- read.csv(&quot;Data\/series-200426.csv&quot;)\n  # take rows 8 to 45 (exclude non-data rows)\n  inflation &lt;- inflation[8:45, ]\n  # reset row names\n  rownames(inflation) &lt;- NULL\n  # name columns &quot;Year&quot; and &quot;Inflation&quot;\n  colnames(inflation) &lt;- c(&quot;Year&quot;, &quot;Inflation&quot;)\n  # convert Inflation to numeric\n  inflation$Inflation &lt;- as.numeric(inflation$Inflation)\n  # scale the inflation value by the median value of the cost per year in 2015\n  inflation$InflationScaled &lt;- (inflation$Inflation \/ 100) * yearly_summary$MedianCostPerYear[yearly_summary$Year == &quot;2015&quot;]\n  # plot the inflation scaled by the median cost per year in 2015\n  \n  ymax &lt;- ceiling(max(c(yearly_summary$MedianCostPerYear, inflation$InflationScaled)) \/ 1e5) * 1e5\n  \n  ggplot(yearly_summary, aes(x = as.numeric(Year), y = MedianCostPerYear)) +\n    geom_bar(stat = &quot;identity&quot;, fill = &quot;grey50&quot;) +\n    geom_line(data = inflation[19:38,], aes(x = as.numeric(Year), y = InflationScaled, group = 1), color = qColor, size = 1) +\n    labs(title = paste0(funder, &quot;: Recent project annual costs have risen above inflation&quot;),\n         x = &quot;Year&quot;,\n         y = &quot;Median Project Annual Cost (GBP\/yr)&quot;,\n         caption = cap) +\n    # set limit to nearest 100K above the maximum value of MedianCostPerYear or InflationScaled, whichever is higher\n    scale_y_continuous(labels = scales::label_number(scale = 1e-3, suffix = &quot;K&quot;), limits = c(0, ymax)) +\n    theme_q() +\n    theme(legend.position = &quot;none&quot;)\n  ggsave(paste0(&quot;Output\/Plots\/&quot;,funder,&quot;_CostPerYearDistributionWithInflation.png&quot;), width = 8, height = 6, dpi = 300)\n  \n  # print the 2024 values for MedianCostPerYear and InflationScaled\n  cat(paste0(&quot;In 2024, the median cost per year for &quot;, funder, &quot; projects is &quot;,\n             round(yearly_summary$MedianCostPerYear[yearly_summary$Year == &quot;2024&quot;] \/ 1e3, 1),\n             &quot;K GBP\/yr, while the inflation scaled by the median cost per year in 2015 is &quot;,\n             round(inflation$InflationScaled[inflation$Year == &quot;2024&quot;] \/ 1e3, 1), &quot;K GBP\/yr.\\n&quot;))\n}\n\n## Main Script ----\n\n## download csvs from GtR for MRC and BBSRC\n# BBSRC = projectsearch-1776682579105\n# MRC = projectsearch-1776753976401\nautomate_dataviz(&quot;Data\/projectsearch-1776753976401.csv&quot;)\nautomate_dataviz(&quot;Data\/projectsearch-1776682579105.csv&quot;)\n\n# load salary scale information from 2015 to 2025\ncap2 &lt;-  paste0(\n  &quot;**Data:** Single Pay Spine for Academic Staff, Spine Point 33. &lt;br&gt;**Graphic:** &quot;,\n  &quot;reproduced from quantixed.org&quot;\n)\n# salary scale information rekeyed from University of Glasgow website.\nsalary &lt;- read.csv(&quot;Data\/salary.csv&quot;)\n# the date is in Date column in 01\/11\/2023 format, convert to numeric year\nsalary$Year &lt;- as.numeric(format(as.Date(salary$Date, format = &quot;%d\/%m\/%Y&quot;), &quot;%Y&quot;))\n# inflation data downloaded from ONS\ninflation &lt;- read.csv(&quot;Data\/series-200426.csv&quot;)\n# take rows 8 to 45\ninflation &lt;- inflation[8:45, ]\n# reset row names\nrownames(inflation) &lt;- NULL\n# name columns &quot;Year&quot; and &quot;Inflation&quot;\ncolnames(inflation) &lt;- c(&quot;Year&quot;, &quot;Inflation&quot;)\n# convert Inflation to numeric\ninflation$Inflation &lt;- as.numeric(inflation$Inflation)\n# convert Year to numeric\ninflation$Year &lt;- as.numeric(inflation$Year)\n# scale the inflation value by the median value of the cost per year in 2015\ninflation$InflationScaled &lt;- (inflation$Inflation \/ 100) * salary$WithOnCosts[salary$Year == 2015]\n\nggplot(salary, aes(x = Year)) +\n  geom_bar(aes(y = WithOnCosts), stat = &quot;identity&quot;, fill = &quot;grey25&quot;) +\n  geom_bar(aes(y = Salary), stat = &quot;identity&quot;, fill = &quot;grey50&quot;) +\n  geom_line(data = inflation[28:38,], aes(x = Year, y = InflationScaled, group = 1), color = qColor, size = 1) +\n  labs(title = &quot;Average Salary and On-Costs for Research Staff Over Time&quot;,\n       x = &quot;Year&quot;,\n       y = &quot;Cost (GBP)&quot;,\n       caption = cap2) +\n  scale_y_continuous(labels = scales::label_number(scale = 1e-3, suffix = &quot;K&quot;), limits = c(0, 60000)) +\n  theme_q() +\n  theme(legend.position = &quot;none&quot;)\nggsave(&quot;Output\/Plots\/SalaryAndOnCostsOverTime.png&quot;, width = 8, height = 6, dpi = 300)\n\n# convert yearly_summary Year to numeric\nyearly_summary$Year &lt;- as.numeric(yearly_summary$Year)\n# merge salary and yearly_summary by Year\nnonsalary &lt;- merge(yearly_summary, salary, by = &quot;Year&quot;)\n# subtract WithOnCosts from MedianCostPerYear\nnonsalary$NewAnnualCost &lt;- nonsalary$MedianCostPerYear - nonsalary$WithOnCosts\n# add column with inflation adjusted figure\ninflation$InflationAdjusted &lt;- (inflation$Inflation \/ 100) * nonsalary$NewAnnualCost[nonsalary$Year == 2015]\n\nggplot(nonsalary, aes(x = Year)) +\n  geom_bar(aes(y = NewAnnualCost), stat = &quot;identity&quot;, fill = &quot;grey50&quot;) +\n  geom_line(data = inflation[28:37,], aes(x = Year, y = InflationAdjusted, group = 1), color = qColor, size = 1) +\n  labs(title = &quot;BBSRC: Estimated non-salary project annual cost, with inflation&quot;,\n       x = &quot;Year&quot;,\n       y = &quot;Project Annual Cost (GBP)&quot;,\n       caption = paste0(&quot;**Graphic:** reproduced from quantixed.org&quot;)) +\n  scale_y_continuous(labels = scales::label_number(scale = 1e-3, suffix = &quot;K&quot;), limits = c(0, 150000)) +\n  # x-axis ticks should be integers only\n  scale_x_continuous(breaks = seq(2015, 2024, by = 1)) +\n  theme_q() +\n  theme(legend.position = &quot;none&quot;)\nggsave(&quot;Output\/Plots\/BBSRCEstimate.png&quot;, width = 8, height = 6, dpi = 300)\n\n<\/pre>\n\n\n<p>\u2014<\/p>\n\n\n\n<p>The post title comes from the Iggy Pop LP \u201cNew Value\u201d.<\/p>\n\n<div style=\"border: 1px solid; background: none repeat scroll 0 0 #EDEDED; margin: 1px; font-size: 13px;\">\r\n<div style=\"text-align: center;\">To <strong>leave a comment<\/strong> for the author, please follow the link and comment on their blog: <strong><a href=\"https:\/\/quantixed.org\/2026\/04\/22\/new-value-increasing-cost-of-ukri-research-grants\/\"> Rstats \u2013 quantixed<\/a><\/strong>.<\/div>\r\n<hr \/>\r\n<a href=\"https:\/\/www.r-bloggers.com\/\" rel=\"nofollow\">R-bloggers.com<\/a> offers <strong><a href=\"https:\/\/feedburner.google.com\/fb\/a\/mailverify?uri=RBloggers\" rel=\"nofollow\">daily e-mail updates<\/a><\/strong> about <a title=\"The R Project for Statistical Computing\" href=\"https:\/\/www.r-project.org\/\" rel=\"nofollow\">R<\/a> news and tutorials about <a title=\"R tutorials\" href=\"https:\/\/www.r-bloggers.com\/how-to-learn-r-2\/\" rel=\"nofollow\">learning R<\/a> and many other topics. <a title=\"Data science jobs\" href=\"https:\/\/www.r-users.com\/\" rel=\"nofollow\">Click here if you're looking to post or find an R\/data-science job<\/a>.\r\n\r\n<hr>Want to share your content on R-bloggers?<a href=\"https:\/\/www.r-bloggers.com\/add-your-blog\/\" rel=\"nofollow\"> click here<\/a> if you have a blog, or <a href=\"http:\/\/r-posts.com\/\" rel=\"nofollow\"> here<\/a> if you don't.\r\n<\/div>","protected":false},"excerpt":{"rendered":"<div style = \"width:60%; display: inline-block; float:left; \"> A chance comment from a colleague led to today\u2019s post. Competition for research grants in the UK has become more intense recently. Success rates have dropped, and this has been attributed to more applications, against a backdrop of a flat investment in science by the government. My colleague thought &#8230;<\/div>\n<div style = \"width: 40%; display: inline-block; float:right;\"><\/div>\n<div style=\"clear: both;\"><\/div>\n","protected":false},"author":2887,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"aioseo_notices":[],"jetpack-related-posts":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/posts\/400723"}],"collection":[{"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/users\/2887"}],"replies":[{"embeddable":true,"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/comments?post=400723"}],"version-history":[{"count":9,"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/posts\/400723\/revisions"}],"predecessor-version":[{"id":400942,"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/posts\/400723\/revisions\/400942"}],"wp:attachment":[{"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/media?parent=400723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/categories?post=400723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.r-bloggers.com\/wp-json\/wp\/v2\/tags?post=400723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}