-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBruna_MS.Rmd
More file actions
653 lines (473 loc) · 39.8 KB
/
Bruna_MS.Rmd
File metadata and controls
653 lines (473 loc) · 39.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
---
title : "Declining contribution of the United States federal government to global research corpus "
shorttitle : "Federal research productivity"
# Publications by US Federal Personnel (Jan 2020 - September 1 2025)
#
author:
- name : "Emilio M. Bruna"
affiliation : "1,2"
corresponding : yes # Define only one corresponding author
address : "University of Florida"
email : "embruna@ufl.edu"
role: # Contributorship roles (e.g., CRediT, https://credit.niso.org/)
- Conceptualization
- Methodology
- Investigation
- Formal analysis
- Data curation
- Visualization
- Writing - Original Draft Preparation
- Writing - Review & Editing
- Project administration
- Supervision
#
# - name : " ---- "
# affiliation : "2"
#
# role:
#
affiliation:
- id : "1"
institution : "Center for Latin American Studies, University of Florida, PO Box 110530, Gainesville, Florida, 32611-0530 USA"
- id : "2"
institution : "Department of Wildlife Ecology & Conservation, University of Florida, PO Box 110530, Gainesville, Florida, 32611-0430 USA"
# - id : "3"
# institution : "University of Colorado, Boulder"
note: |
<!-- ORCID: -->
<!-- EB: 0000-0003-3381-8477 -->
<!-- | -->
<!-- JR: ----- | -->
\newpage
authornote: |
Competing Interest Statement: The author declares no competing interests.
This file includes: Main Text, Figures 1-3, Table 1
Preprint Information: A preprint of this article is available at MetaArXiv Preprints (https://osf.io/preprints/metaarxiv/4hfe9_v1).
abstract: |
Departments and agencies of the United States federal government conduct research on topics ranging from nuclear technology to economic policy. Using the Scopus bibliographic database, I quantified the number of publications by US federal government authors from January 2020--December 2025. I found that the number of articles and book chapters published from January-December 2025 was __%-__% lower than during the same time period of 2024, resulting in publication deficit of -,-- - -,--- articles. Changes in executive branch policy related to the funding and staffing of federal agencies have led to warnings of an imminent and potentially catastrophic decline in the scientific preeminence of the United States. The results presented here suggest that this decline has already been set in motion.
# appendix : "./docs/SuppInfo_text.Rmd"
keywords : "authorship, bibliometrics, book chapters, federal agencies, articles, research productivity, Scopus, universities"
wordcount : "1721"
bibliography : "fed_pubs.bib"
# csl : "pnas.csl"
csl : "science.csl"
floatsintext : no
linenumbers : yes
draft : no
mask : no
figurelist : no
tablelist : no
footnotelist : no
classoption : "man, donotrepeattitle,noextraspace"
output :
# papaja::apa6_word:
papaja::apa6_pdf:
extra_dependencies: ["float"]
header-includes:
# Hyperlinking
- \RequirePackage[colorlinks=true, allcolors=blue]{hyperref}
# Set URL link color & font
- \renewcommand\UrlFont{\color{black}\sffamily}
# # Set document color scheme
- \definecolor{black50}{gray}{0.5} % 50% black for hrules
- \definecolor{color0}{RGB}{0,0,0} % Base
- \definecolor{color1}{RGB}{59,90,198} % author email, doi
- \definecolor{color2}{RGB}{16,131,16} %
# For sig statement box
- \definecolor{pnasbluetext}{RGB}{0,101,165} %
- \definecolor{pnasblueback}{RGB}{205,217,235} %
# - %\definecolor{pnasbluetext}{RGB}{0,115,209} % Not used
# - %\definecolor{pnasblueback}{RGB}{210,230,247} % Not used
- \usepackage{setspace}
- \usepackage{parskip}
# - \usepackage{threeparttable} #for the long footnote in table
# - \usepackage{threeparttablex}
- \usepackage{fancyhdr}
# - \fancyfoot[R]{Bruna}
- \fancyhead[R]{Bruna, p. \thepage}
# - \fancyhead[R]{Draft: (`r format(Sys.time(), '%Y')`)}
- \setlength{\parskip}{0.0\baselineskip}
- \usepackage{pdflscape}
- \newcommand{\blandscape}{\begin{landscape}}
- \newcommand{\elandscape}{\end{landscape}}
---
```{r setup, include = FALSE}
# library("papaja")
# r_refs("fed_pubs.bib")
library(bookdown)
library(tidyverse)
library(janitor)
library(kableExtra)
library(gridExtra)
library(png)
library(data.table)
library(english)
library(here)
knitr::opts_chunk$set(echo = FALSE, message=FALSE,warning=FALSE)
options(scipen=999)
comma <- function(x) format(x, digits = 2, big.mark = ",")
knitr::opts_chunk$set(fig.pos = "H", out.extra = "")
```
```{r data, cache=FALSE }
# date<-"20250901"
# date_uni<-"20251010"
# date_uni<-"20251210"
# date_fed<-"20251210"
date_uni<-"20260101"
date_fed<-"20260101"
fed_dir<-paste("summary_info/fed_",date_fed,sep="")
uni_dir<-paste("summary_info/uni_",date_uni,sep="")
# Read data
summary_data<-read_csv(paste(fed_dir,"summary_data.csv",sep="/"))
# journals_n_perc_annual_first<-read_csv(paste(fed_dir,"journals_n_perc_annual_first.csv",sep="/"))
auth_per_pub_means<-read_csv(paste(fed_dir,"auth_per_pub_means.csv",sep="/"))
total_pubs_per_agency_first<-read_csv(paste(fed_dir,"total_pubs_per_agency_first.csv",sep="/"))
perc_papers_fed_first<-((summary_data %>% filter(value=="total_federals") %>% select(n))/
(summary_data %>% filter(value=="total_unique_authors") %>% select(n))*100)
# FIX THIS
# perc_change_fed<-read_csv("./docs/summary_info/perc_change_fed.csv")
perc_change_fed<-read_csv(paste(fed_dir,"perc_change_agency_fed.csv",sep="/"))
perc_change_fed_annual<-perc_change_fed %>%
select(-n,-month,-month_name,-change_n, -perc_previous) %>%
ungroup() %>%
group_by(PY) %>%
mutate(cumul_pubs=sum(cumul_pubs)) %>%
arrange(PY) %>%
select(-agency_primary) %>%
slice_head(n=1) %>%
ungroup() %>%
mutate(change_n = (cumul_pubs - lag(cumul_pubs))) %>%
mutate(perc_previous = ((change_n) / lag(cumul_pubs)) * 100) %>%
mutate(perc_previous=round(perc_previous,1))
perc_change_fed_last_yr<-perc_change_fed_annual %>%
filter(PY==2025) %>%
select(perc_previous)
n2025<-perc_change_fed_annual %>%
filter(PY==2025) %>%
select(cumul_pubs)
avg_pubs_yr<-perc_change_fed_annual %>% filter(PY<2025) %>% summarize(avg=mean(cumul_pubs))
drop_from_avg<-(n2025-avg_pubs_yr)/avg_pubs_yr*100
lost_articles<-perc_change_fed_annual %>%
filter(PY<2025) %>%
select(cumul_pubs) %>%
range() %>%
tibble() %>%
rename(c_pubs=".") %>%
mutate(c_pubs2=c_pubs-n2025$cumul_pubs) %>%
select(c_pubs2)
original_affils<-as.numeric(summary_data %>% filter(value=="scopus_id_initial") %>% select(n))
followup_affils<-as.numeric(summary_data %>% filter(value=="scopus_id_followup") %>% select(n))
total_affils_searched<-original_affils+followup_affils
affils_on_pubs<-as.numeric(summary_data %>% filter(value=="no_fed_affils") %>% select(n))
total_pubs<-as.numeric(summary_data %>% filter(value=="total_pubs") %>% select(n))
unique_authors<-as.numeric(summary_data %>% filter(value=="total_unique_authors") %>% select(n))
unique_fed_authors<-as.numeric(summary_data %>% filter(value=="total_federals") %>% select(n))
mean_authors<-as.numeric(auth_per_pub_means %>% filter(author_category=="Total") %>% select(mean_per_pub))
sd_authors<-as.numeric(auth_per_pub_means %>% filter(author_category=="Total") %>% select(sd))
mean_nonfed_authors<-as.numeric(auth_per_pub_means %>% filter(author_category=="NonFed") %>% select(mean_per_pub))
sd_nonfed_authors<-as.numeric(auth_per_pub_means %>% filter(author_category=="NonFed") %>% select(sd))
perc_pubs_fed1st<-as.numeric(summary_data %>% filter(value=="prop_papers_fed_1st") %>% select(n))
#TODO: TO DO WHAT IS THIS???
# perc_change_agency_all<-read_csv("./docs/summary_info/perc_hange_agency_fed.csv")
# perc_change_agency_all<-read_csv(paste(fed_dir,"perc_hange_agency_fed.csv",sep="/"))
declines_agency_1st<-read_csv(paste(fed_dir,"agency_n_decline_first.csv",sep="/"))
perc_change_agency<-declines_agency_1st %>%
filter(PY==2025) %>%
select(agency_primary,perc_previous) %>%
arrange(perc_previous)
focal_agencies_1<-c("dod","va","nasa","interior")
focal_agencies_2<-c("commerce")
perc_change_focal_1<-perc_change_agency %>% filter(agency_primary%in%focal_agencies_1)
perc_change_focal_1<-sort(abs(round(range(perc_change_focal_1$perc_previous))))
perc_change_focal_2<-perc_change_agency %>% filter(agency_primary%in%focal_agencies_2)
perc_change_focal_2<-sort(abs(round(range(perc_change_focal_2$perc_previous))))
# papers_by_cat_agency<-read_csv("./docs/summary_info/papers_by_cat_agency.csv")
papers_by_cat_agency<-read_csv(paste(fed_dir,"papers_by_cat_agency.csv",sep="/"))
perc_change_only_feds<-read_csv(paste(fed_dir,"perc_change_cumul_only_feds.csv",sep="/"))
perc_change_only_feds_25<-perc_change_only_feds %>%
filter(PY==2025) %>%
select(perc_previous)
```
``` {r uni-names}
# uni_summary_data<-read_csv("./docs/summary_info/summary_data_uni.csv")
uni_summary_data<-read_csv(paste(uni_dir,"summary_data_uni.csv",sep="/"))
# papers_by_cat_uni<-read_csv("./docs/summary_info/papers_by_cat_uni.csv")
papers_by_cat_uni<-read_csv(paste(uni_dir,"papers_by_cat_uni.csv",sep="/"))
# uni_names<-read_csv("./docs/summary_info/uni_total_pubs_per_uni_first.csv") %>%
uni_names<-read_csv(paste(uni_dir,"uni_total_pubs_per_uni_first.csv",sep="/")) %>%
# mutate(uni=if_else(nchar(uni)<5,str_to_upper(uni),str_to_title(uni))) %>%
mutate(uni=case_when(
uni == "unc_ch"~"the University of North Carolina, Chapel Hill",
uni == "ohio_state"~"The Ohio State University",
uni == "florida"~"the University of Florida",
uni == "harvard"~"Harvard University",
uni == "mass_general"~"Massachusetts General Hospital",
uni == "michigan"~"the University of Michigan, Ann Arbor",
uni == "penn"~"The University of Pennsylvania",
uni == "stanford"~"Stanford University",
uni == "ucla"~"the University of California, Los Angeles",
uni == "minn"~"the University of Minnesota, Twin Cities",
uni == "ucsd"~"the University of California, San Diego",
uni == "ucsf"~"and the University of California, San Francisco",
uni == "washington"~"the University of Washington",
.default = as.character(uni)
))
uni_names_flat<-paste(uni_names$uni, collapse=', ' )
uni_auth_per_pub_means<-read_csv(paste(uni_dir,"auth_per_pub_means_uni.csv",sep="/"))
total_pubs_per_uni_first<-read_csv(paste(uni_dir,"uni_total_pubs_per_uni_first.csv",sep="/"))
perc_change_uni<-read_csv(paste(uni_dir,"perc_change_uni.csv",sep="/"))
n2025_uni<-perc_change_uni %>% filter(PY==2025) %>% select(cumul_pubs)
perc_change_uni_last_yr<-perc_change_uni %>% filter(PY==2025) %>% select(perc_previous)
n_all_articles<-round(total_pubs+as.numeric(uni_summary_data %>% filter(value=="total_pubs") %>% select(n)),-4)
ratio_fed_uni<-perc_change_fed_last_yr/perc_change_uni_last_yr
ratio_fed_uni<-english(as.numeric(ratio_fed_uni))
final_month<-perc_change_fed_annual %>% slice_tail(n=1) %>% select(PM)
final_day<-as.numeric(lubridate::days_in_month(as.numeric(final_month)))
final_month<-month.name[as.numeric(final_month)]
```
<!-- https://www.pnas.org/author-center/submitting-your-manuscript#article-types -->
<!-- *PNAS Brief Reports* describe observations of immediate impact that may hold potential to initiate new avenues of research, provide compelling new data on controversies of broad interest and long-standing questions, or present a concise conceptual advance. All Brief Reports are published immediate open access. - Brief Reports are limited to 3 pages, which is approximately **1,600 words (including the manuscript text, title page, abstract, and figure legends), and 15 references.** - Supporting information (SI) is limited to extended methods, essential supporting datasets, and videos (no additional tables or figures). -->
# Introduction
Departments and agencies of the United States federal government conduct research on topics ranging from nuclear technology to economic policy. This work directly benefits the nation and its citizens in four ways: by providing the information needed by agencies to advance their missions, via the broad advancement of knowledge, through the application of this knowledge in ways that benefit society, and by developing human capital with education and professional experience [@usnationalacademyofsciencesResearchFederalGovernment1999]. Federal research is also a major driver of economic growth --- in addition to the direct economic impacts of the research enterprise (e.g., employment, purchasing, tax revenue), the resulting knowledge is also used by the private sector to develop novel technologies and products [@cunninghamReturnsPubliclyFunded2022]. As such the outputs from federal research and development are considered vital not only for addressing domestic needs, but also for informing international policy, strengthening national security, and enhancing global economic competitiveness [@mandt2020federal].
Here I show that a key indicator of federal research productivity --- the number of peer-reviewed journal articles and book chapters by US federal government affiliates --- has declined precipitously in the first `r as.english(unique(perc_change_fed$PM))` months of 2025 relative to the same time period in any of the preceding `r as.english(nrow(perc_change_fed)-1)` years (Fig. \@ref(fig:cumulative-fig-fed)). This conclusion is based on an analysis of ~`r round(n_all_articles/1000000,3)` million articles in the Scopus bibliographic database (https://www.scopus.com), which indexes the content of over 200,000 books and 48,000 journals comprising all major fields of scholarship [@baasScopusCuratedHighquality2020]. While the scholarly productivity of `r as.english(nrow(uni_names))` major research universities also declined during this time period, the relative drop in federal productivity was `r ratio_fed_uni`-fold greater (Fig. \@ref(fig:cumulative-fig-uni)).
<!-- https://impactfactorforjournal.com/list-of-scopus-indexed-journals/#:~:text=How%20many%20journals%20are%20indexed,meeting%20the%20strict%20evaluation%20criteria. -->
<!-- https://www.scopus.com/sources.uri?zone=TopNavBar&origin=searchbasic -->
# Materials and Methods
Article records are uploaded daily to Scopus from over 25,000 currently active journals, with the metadata for each record including information such as the publication title, abstract, keywords, publication date. An article's record also includes the names and affiliations of all authors, both of which are assigned unique identification numbers. I used the Scopus Affiliation ID numbers assigned to Departments, Agencies, Commissions, and other units of the United States federal government (see _Supporting Information Table S2_) to search Scopus for all peer-reviewed journal articles, book chapters, and other scholarly publications produced between January 2020 and `r final_month` 2025 by authors using these affiliations. I began by identifying N = `r comma(original_affils)` Scopus affiliation ID numbers nested under the Scopus Institution Codes of all US Cabinet-level Departments and independent federal agencies; these affiliation ID numbers included both the primary affiliation codes for the agencies (e.g., 60012471: US Department of Defense; 60000947: US Department of Commerce) and codes for author affiliations nested under them (e.g., 60032984: Naval Dental Center; 60027716: National Oceanic and Atmospheric Administration). I then used the Scopus API to download the metadata for all articles, data papers, reviews, notes, and book chapters published between 2020-2025 by authors using theses affiliation IDs. The author lists of the resulting publications were then searched for any federal affiliations not included in the initial query (N = `r comma(followup_affils)`), and the search was repeated using complete list of N = `r comma(total_affils_searched)` affiliations.
<!-- WHAT FRACTION OF PUBS WERE COVEWRED BY AFFILS ORIGINAL aND FOLLOWUP? -->
Queries of the Scopus API were conducted using the `rscopus` library [@muschelliRscopusScopusDatabase2025] for the R statistical programming language [@rcoreteamLanguageEnvironmentStatistical2025]. The resulting `.csv` files for each year and affiliation ID were initially processed using the `refsplitr` library [@Fournier2020], after which I combined all data for all years, identified all federal and non-federal author affiliations, and assigned all affiliations to their highest parent agency, department, or organization. I then visualized productivity within and across agencies using the `tidyverse` libraries [@wickhamWelcomeTidyverse2019] and used a bootstrapping procedure to assess whether productivity across all federal affiliations was significantly different in 2025 (see _Supporting Information: Statistical Analyses_).
It is possible that any changes in productivity at federal agencies reflect a broader national trend in research output. I therefore compared federal publication productivity with that at the N = `r nrow(uni_names)` research universities in the United States that were most productive during the focal time period: `r uni_names_flat`. As with the searches for federal agency productivity, the searches for university productivity were first conducted both with the primary Scopus affiliation codes for institutions (e.g., 60030612 for the University of California, San Diego) and any codes for nested affiliations (e.g., 60121501 for the UCSD School of Biological Sciences), then any additional codes found in the resulting publications. In total searches were conducted with N = `r comma(as.numeric(uni_summary_data %>% filter(value=="scopus_id_initial") %>% select(n))+as.numeric(uni_summary_data %>% filter(value=="scopus_id_followup") %>% select(n)))` Scopus affiliation IDs _(Supporting Information Table S3)_.
I analyzed productivity in the first `r as.english(unique(perc_change_fed$PM))` months of 2025 relative to the same time period in previous years using publications whose first author had a federal or focal university affiliation (`r comma(perc_pubs_fed1st)`% and `r comma(as.numeric(uni_summary_data %>% filter(value=="prop_papers_focal_1st") %>% select(n)))`% of each group's publications, respectively). First-author position is typically interpreted as the person leading the research and the study's primary contributor. It is important to note, however, that authorship norms are used inconsistently within- and across disciplines [@burrowsTrendsAuthorshipOrder2011; @duffyLastCorrespondingAuthorship2017], and in some fields [e.g., the biomedical sciences, @pichiniAuthorshipManuscriptsSubmitted2005] the last- or corresponding author position is used to indicate the person with primary project oversight. Moreover, the increasing complexity of research means that many publications written by non-federal first authors describe work that could not have been conducted without the intellectual contributions or other resources provided by their federal coauthors. As such, the estimates of changing productivity based on first-author position described here could be considered conservative. To address this possibility I also quantified changes in 2025 productivity relative to previous years using the subset of publications whose authors were exclusively federal affiliates.
All data were collected from Scopus between September 1-4, 2025. However, the analyses were restricted to publications with cover dates from January 2020 through `r final_month` 2025 to avoid potential underestimates of productivity due to upload lags [_sensu_ @adeosunScopusIndexingDelays2024 and _Supplementary Materials_].
# Results
<!-- **_Publication productivity of US federal authors and agencies_** -->
I identified N = `r comma(total_pubs)` research articles (`r comma(as.numeric(papers_by_cat_agency %>% filter(DT=="article") %>% select(perc)))`%), reviews (`r comma(as.numeric(papers_by_cat_agency %>% filter(DT=="review") %>% select(perc)))`%), book chapters (`r comma(as.numeric(papers_by_cat_agency %>% filter(DT=="book chapter") %>% select(perc)))`%), Notes (`r comma(as.numeric(papers_by_cat_agency %>% filter(DT=="note") %>% select(perc)))`%), and Data Papers (`r comma(as.numeric(papers_by_cat_agency %>% filter(DT=="data paper") %>% select(perc)))`%) in Scopus with at least one federally affiliated author and a publication date between January 1, 2020 and `r final_month` `r final_day`, 2025 (hereafter, _'publications'_). The publications in this corpus had a total of N = `r comma(unique_authors)` unique authors, of which N = `r comma(unique_fed_authors)` (`r comma(as.numeric(perc_papers_fed_first))`%) had federal primary affiliations. Federal researchers were highly collaborative: the publications in the data set had on average `r comma(mean_authors)` ± `r comma(sd_authors)` SD authors, of which `r comma(mean_nonfed_authors)` ± `r comma(sd_nonfed_authors)` SD had affiliations outside of the US federal government.
During the reference time period the focal universities produced N = `r comma(as.numeric(uni_summary_data %>% filter(value=="total_pubs") %>% select(n)))` publications (Fig. \@ref(fig:cumulative-fig-uni), Table S1, Fig. S4) with N = `r comma(as.numeric(uni_summary_data %>% filter(value=="total_authors") %>% select(n)))` authors. There were N = `r comma(as.numeric(uni_summary_data %>% filter(value=="total_unique_authors") %>% select(n)))` unique authors in the data set, of which N = `r comma(as.numeric(uni_summary_data %>% filter(value=="total_focal") %>% select(n)))` had one of the focal universities as their primary affiliation. Each article had an average of N = `r comma(as.numeric(uni_auth_per_pub_means %>% filter(author_category=="Total") %>% select(mean_per_pub)))` ± `r comma(as.numeric(uni_auth_per_pub_means %>% filter(author_category=="Total") %>% select(sd)))` SD authors, of which `r comma(as.numeric(uni_auth_per_pub_means %>% filter(author_category=="focal") %>% select(mean_per_pub)))` ± `r comma(as.numeric(uni_auth_per_pub_means %>% filter(author_category=="focal") %>% select(sd)))` SD were affiliated with the focal universities.
There were N = `r comma(as.numeric(n2025))` publications indexed in Scopus with a federally affiliated first author and a January 1-`r final_month` `r final_day`, 2025 publication date (Table \@ref(tab:pubstable)). This is a `r comma(abs(as.numeric(perc_change_fed_last_yr)))`% decline relative to the same time period in 2024, and a `r comma(abs(as.numeric(drop_from_avg)))`% decline relative to the 2020-2024 average (Fig. \@ref(fig:cumulative-fig-fed)A). Both this decline, and the `r comma(abs(as.numeric(perc_change_uni_last_yr)))`% decline in first author publications observed for the focal universities (Fig. \@ref(fig:cumulative-fig-uni)), were highly significant (P < 0.0001, see the _Supporting Information_ for a description of the bootstrapping procedure used to assess significance). Finally, from 2020-2025 there were N = `r comma(as.numeric(summary_data %>% filter(value=="papers_w_allfed_authors") %>% select(n)))` publications whose authors were exclusively affiliated with the federal government; the number of January-`r final_month` publications in 2025 was ~`r abs(round(perc_change_only_feds_25))`% lower in 2024 (Fig. \@ref(fig:cumulative-fig-fed)B).
```{r unidata, cache=FALSE, echo=FALSE}
# Read data
# uni_summary_data<-read_csv("./docs/summary_info/uni_summary_data.csv")
# jrnls_overall_first<-read_csv("./docs/summary_info/uni_jrnls_overall_first.csv")
# journals_n_perc_annual_first<-read_csv("./docs/summary_info/uni_journals_n_perc_annual_first.csv")
```
# DISCUSSION
Scholarly publications such as peer-reviewed journal articles are the primary means of documenting, validating, and sharing research results; the data and conclusions they communicate are used to guide public policy and are the foundation on which future discoveries are built [@usnationalresearchcouncilcommitteeonresponsibilitiesofauthorshipinthebiologicalsciencesPurposePublicationResponsibilities2003]. I estimate that the US Federal Government --- historically a leading global producer of knowledge across a vast array of disciplines --- has accumulated a research publication deficit of `r comma(as.numeric(lost_articles[1,1]))`-`r comma(as.numeric(lost_articles[2,1]))` articles in only the first `r as.english(unique(perc_change_fed$PM))` months of 2025. This deficit is primarily driven by declining research output at several of the largest and most-research intensive agencies of the federal government. For example, the number of publications by authors affiliated with the Departments of Defense, Veterans Affairs, Interior, and NASA all declined `r perc_change_focal_1[1]`-`r perc_change_focal_1[2]`%, which greatly exceeded the rate of decline in previous years (Table \@ref(tab:pubstable)). However, the greatest proportional decline was at the Department of Commerce, which oversees such agencies the National Oceanic and Atmospheric Administration (NOAA), the National Marine Fisheries Service (MIFS), the National Institute of Standards and Technology (NIST), the National Weather Service (NSWS), and the Bureau of Economic Analysis (BEA). To date in 2025 the research output of this vital Department has declined `r round(abs(as.numeric(perc_change_agency %>% filter(agency_primary=="commerce") %>% select(perc_previous))),0)`% relative to the same time period in 2024 (Fig. \@ref(fig:agency-decline-3)).
The proposed reductions to the budgets of federal agencies that support research and education, along with the ongoing efforts to strip universities of previously allocated research funds and limit the enrollment of international students [@malakoffHowTrumpUpended2025], have led a broad array of stakeholders to warn of an imminent and potentially catastrophic decline in the scientific preeminence of the United States [e.g., @associationofamericanuniversitiesFederalResearchCuts2025; @bakerwill; @barocasCutsScientificFunding2025]. The results presented here suggest that executive orders dismissing research and support staff, suspending agency funding, and requiring federal scientists to withdraw manuscripts undergoing peer review [@amudalatajasaEPAOrdersScientists2025; @wadmanWreckingBallRFK2025; @mullinRFKJrsHHS2025] have already set this decline in motion --- particularly at agencies conducting research on the economy, environment, public health, and national security. Given the disciplinary breadth and highly collaborative research conducted by the staff of these agencies [@leydenFederalLaboratoriesResearch1999; @linkScientificPublicationsUS2021], in concert with their role in training early career scientists [@irwinCooperativeFishWildlife2025], it is likely the long-term consequences of these declines have already begun cascading through public and private-sector research institutions beyond the federal government.
# Acknowledgments and Funding Sources
I thank E. White, S. Ryan, and C. Bergstrom for helpful discussions and comments on the manuscript. EMB was supported by the Edward P. Bass Distinguished Visiting Environmental Scholars Program at Yale University.
<!-- Spell out all abbreviations -->
<!-- Use FundRef to identify the standard name for any funders -->
<!-- Do not include dedications -->
# Data Availability
The data used in this study are archived at Dryad [*url to be added*], while the version of the R code used for the analyses presented here is archived at Zenodo [*url to be added*]. Post-publication updates to the code or data can be found at Github (<https://github.com/BrunaLab/fed_pubs>).
<!-- (for all data, documentation, and code used in analysis) -->
<!-- \newpage -->
```{=tex}
\begingroup
\setlength{\parskip}{0.0\baselineskip}
\raggedright
```
# REFERENCES AND NOTES
::: {#refs custom-style="Bibliography"}
:::
\endgroup
<!-- # caption = "The number of publications in the data set with at least one author from an agency or department of the US federal government (any author position), the number of publications from 2020\\-2025 for which the first author's primary address is the federal department or agency, the number of 1st author publications from January\\-September 2025, and the percent change in productivity relative to the same time period in 2024.", -->
<!-- ## Agencies producing >1000 1st author publications from January 2020-June 2025) -->
<!-- \bigskip -->
```{r pubstable, echo = FALSE, fig.cap="Table 1. The number and percentage of publications indexed in Scopus by federal author affiliation and author position. Also shown is the percent difference in first author publications when comparing January-December 2024 with the same period in 2023 and January-December 2025 with the same period in 2024."}
# space btween and table
# https://tex.stackexchange.com/questions/338435/how-to-reduce-space-between-end-of-table-and-footnote-using-parnote
# other_affils<-read_csv("./docs/summary_info/other_affils.csv") %>%
other_affils <-read_csv(paste(fed_dir,"other_affils.csv",sep="/")) %>%
filter(agency!="OTHER") %>%
filter(agency!="USUHS") %>%
filter(agency!="Interior") %>%
mutate(agency=case_when(
agency=="CBO"~"Congressional Budget Office",
agency=="CFPB"~"Consumer Financial Protection Bureau",
agency=="CIA"~"Central Intelligence Agency",
agency=="Congress"~"US Congress",
agency=="CPSC"~"Consumer Product Safety Commission",
agency=="EOP"~"Executive Office of the President",
agency=="FCC"~"Federal Communications Commission",
agency=="FDIC"~"Executive Office of the President",
agency=="FHFA"~"Federal Housing Finance Agency",
agency=="FMC"~"Federal Maritime Commission",
agency=="FTC"~"Federal Trade Commission",
agency=="GAO"~"General Accounting Office",
agency=="GSA"~"General Services Administration",
agency=="IMLS"~"Institute of Museum and Library Services",
agency=="Interagency"~"Interagency Task Forces or Commissions",
agency=="John F Kennedy Center For The Performing Arts"~"John F Kennedy Center for the Performing Arts",
agency=="Judiciary"~"Federal Judiciary",
agency=="Multiagency"~"Multiagency Task Forces or Commissions",
agency=="NASEM"~"National Academies of Sciences, Engineering, and Medicine",
agency=="National Archives And Records Administration"~"National Archives and Records Administration",
agency=="National Center For Missing & Exploited Children"~"National Center for Missing and Exploited Children",
agency=="NEA"~"National Endowment for the Arts",
agency=="NRC"~"Nuclear Regulatory Commission",
agency=="NSC"~"National Security Council",
agency=="NTSB"~"National Transportation Safety Board",
agency=="ODNI"~"Office of the Director of National Intelligence",
agency=="OPM"~"Office of Personnel Management",
agency=="Public Company Accounting Oversight Board"~"",
agency=="SEC"~"Securities and Exchange Commission",
agency=="SSA"~"Social Security Administration",
agency=="TVA"~"Tennessee Valley Authority",
agency=="Uniformed Services University Of The Health Sciences"~"Uniformed Services University of the Health Sciences",
agency=="Us Global Change Research Program"~"US Global Change Research Program",
agency=="Us Holocaust Memorial Museum"~"US Holocaust Memorial Museum",
agency=="Us Institute Of Peace"~"US Institute Of Peace",
agency=="Woodrow Wilson International Center For Scholars"~"Woodrow Wilson International Center for Scholars",
.default = as.character(agency)
)
)
other_affils<-str_c(other_affils$agency, collapse = ", ")
# agency_counts<-read_csv("./docs/summary_info/agency_table.csv") %>%
agency_counts <-read_csv(paste(fed_dir,"agency_table.csv",sep="/")) %>%
replace_na(list(n24=0,n25=0)) %>%
select(-perc_first)
agency_counts_total<-agency_counts %>% summarize(
total=sum(total),
n24=sum(n24),
n25=sum(n25)
)
agency_counts<-agency_counts %>%
mutate(perc_decline24=as.character(perc_decline24),
perc_decline25=as.character(perc_decline25)) %>%
mutate(perc=as.character(perc)) %>%
mutate(total=comma(total),
n24=comma(n24),
n25=comma(n25),
n=comma(n)
) %>%
# mutate(total=paste(total," (",perc_first,")",sep="")) %>%
replace_na(list(n24 = "-",
perc_decline24="-",
n25 = "-",
perc_decline25="-"))
# %>%
# mutate(n24=paste(n24," (",perc_decline,")",sep="")) %>%
# select(-perc_first,
# -perc_decline)
agency_counts<-agency_counts %>%
relocate(perc_decline24,.after=n24) %>%
rename(`Any author positionSuper1`=n,
`First author`=total,
`2024`=n24,
`2025`=n25,
`\\% of total`=perc,
`\\% change vs. 2023`=perc_decline24,
`\\% change vs. 2024`=perc_decline25
)
NOTcabinets<- c("NASA", "Smithsonian", "NSF", "Federal Reserve System", "Other")
agency_table<-agency_counts %>%
mutate(cabinet=if_else(!Unit%in%NOTcabinets, "cabinet","noncabinet")) %>%
mutate(Unit=case_when(
Unit == "DOE"~"Energy",
Unit == "HHS"~"Health \\& Human Services",
Unit == "VA"~"Veterans Affairs",
Unit == "DHS"~"Homeland Security",
Unit == "DOD"~"Defense",
Unit == "USDA"~"Agriculture",
Unit == "NASA"~"National Aeronautics \\& Space Administration",
Unit == "Smithsonian"~"Smithsonian Institution",
Unit == "NSF"~"National Science Foundation",
Unit == "EPA"~"Environmental Protection Agency",
Unit == "DOJ"~"Justice",
Unit == "DOT"~"Transportation",
Unit == "HUD"~"Housing \\& Urban Development",
Unit == "Other"~"Other federal unitsSuper2",
.default = as.character(Unit)
)
) %>%
arrange(cabinet,desc(`Any author positionSuper1`))
agency_counts_total<-agency_counts_total %>%
mutate(total=comma(total),
n24=comma(n24),
n25=comma(n25)
) %>%
rename(`Any author positionSuper1`=total,
`2024`=n24,
`2025`=n25
) %>%
mutate(Unit="Total")
agency_table<-bind_rows(agency_table,agency_counts_total) %>%
replace_na(list(`First author`="",
`First author `="",
`First author`="",
`\\% of total`="",
`\\% change vs. 2023`="",
`\\% change vs. 2024`="",
`Any author positionSuper1`=""
))
n_cabinet<-agency_table %>% filter(cabinet == "cabinet") %>% tally()
n_noncabinet<-agency_table %>% filter(cabinet == "noncabinet") %>% tally()
agency_table<-agency_table %>% select(-cabinet) %>%
rename("US federal government unit"=Unit)
tmp <- knitr::kable(agency_table,
# digits = 2,
format = "latex",
# format = "html",
align = "lrrcrcrc",
escape = FALSE,
row.names = FALSE,
booktabs = T,
caption = "The number and percentage of publications indexed in Scopus by federal author affiliation and author position. Also shown is the percent difference in first author publications when comparing Jan-Oct 2024 with the same period in 2025 and Jan-Oct 2025 with the same period in 2024.",
longtable = F,
linesep = ""
) %>%
kable_styling(
bootstrap_options = c("hover"),
# full_width = F,
latex_options = c("scale_down",
"hold_position"),
font_size = 12,
position = "center"
) %>%
# sub("\\\\bottomrule", "", .) %>%
add_header_above(c(
" "=1,
"Publications: 2020-2025" = 3,
"First Author Publications 2024 & 2025" = 4
)) %>%
footnote(
# number = c("The sum of publications in this column is greater than the total number of publications in the dataset because some publications include authors from multiple agencies (i.e., I did not attribute 'fractional authorship').", paste("Other federal author affiliations in the publications data set: ", other_affils, sep="")),
symbol = c("The sum of publications in this column is greater than the total number of publications in the dataset because some publications include authors from multiple agencies (i.e., I did not attribute 'fractional authorship').", paste("Other federal author affiliations in the publications data set: ", other_affils, sep="")),
threeparttable = TRUE,
footnote_as_chunk = TRUE) %>%
# alphabet = c("Footnote A; ", "Footnote B; "),
# symbol = c("Footnote Symbol 1; ", "Footnote Symbol 2")
# footnote(number=c("The sum of publications in this column is greater than the total number of publications in the dataset because some publications include authors from multiple agencies (i.e., I did not attribute 'fractional authorship').",
# other_affils),
# footnote_as_chunk = TRUE,
# threeparttable = TRUE) %>%
pack_rows("Cabinet Departments", 1, n_cabinet$n, indent = TRUE) %>%
pack_rows("Agencies, Boards, & Commissions", n_cabinet$n+1, n_cabinet$n+n_noncabinet$n, indent = TRUE) %>%
row_spec(22, bold = T) %>%
row_spec(21, hline_after = T)
tmp <- str_replace(tmp, "Super1", "$^{*}$")
tmp <- str_replace(tmp, "Super2", "$^{\\\\dagger}$")
knitr::asis_output(tmp)
```
```{r label = cumulative-fig-fed, echo = FALSE, fig.cap = "Cumulative number of articles published per month (2020-2025). (A) Articles with all authors having US federal government affiliations. (B) Articles whose first-authors are affiliated with the US federal government. (C) Articles for which any author has a federal goverment affiliation. Solid lines represent the cumulative counts for 2020-2025; the dashed line is the 2020-2024 average. Also shown is the percent change in cumulative publications through December 2025 vs. the same period in 2024. Note the scale of the Y-axis differs in the three panels.", out.width = '85%',out.height = '85%',fig.align='center'}
# knitr::include_graphics('../docs/images/pubs_mo_cum_fig_multipanel.png', error=FALSE)
knitr::include_graphics(paste(fed_dir,"/pubs_mo_cum_fig_multipanel.png",sep=""),error=FALSE)
```
```{r label = perc-change-bar-fed, echo = FALSE, fig.cap = "Percent change in publications by authors with US federal government affiliations relative to the previous year (2020-2025). (A) Articles with all authors having US federal government affiliations. (B) Articles whose first-authors are affiliated with the US federal government. (C) Articles for which any author has a federal goverment affiliation. Note the scale of the Y-axis differs in the three panels.", out.width = '85%',out.height = '85%',fig.align='center'}
# knitr::include_graphics('../docs/images/pubs_mo_cum_fig_multipanel.png', error=FALSE)
knitr::include_graphics(paste(fed_dir,"/perc_change_bar_multipanel.png",sep=""),error=FALSE)
```
```{r label = cumulative-fig-uni, echo = FALSE, fig.cap = "Cumulative number of articles published per month (2020-2025) whose first authors were affiliated with one of twelve focal universities. Solid lines are the annual values for 2020-2025; the dashed line is the 2020-2024 average. The percentage indicates the change in cumulative publications through December 2025 vs. the same time period in 2024.", out.width = '90%', fig.align='center'}
# knitr::include_graphics("../docs/images/pubs_mo_cum_fig_uni.png", error=FALSE)
knitr::include_graphics(paste(uni_dir,"/pubs_mo_cum_fig_uni.png",sep=""),error=FALSE)
```
```{r label = agency-decline-3, echo = FALSE, fig.cap = "Cumulative number of publications through December (2020-2025) for eight US federal departments or agencies based on first author affiliation. These federal units had >6000 articles indexed in Scopus from January 2020 through December 2025 (Table 1). The solid lines are each year’s cumulative counts; the dashed line is the 2020-2024 average. Note the different scales of the y-axes for each subplot.", out.width = '105%',fig.align='center'}
# ,out.extra='angle=270'
# knitr::include_graphics("images/pubs_mo_cum_agency_lines.png", error=FALSE)
knitr::include_graphics(paste(fed_dir,"/pubs_mo_cum_agency_lines.png",sep=""),error=FALSE)
```
```{r label = agency-decline-4, echo = FALSE, fig.cap = "Annual percent change in first-author publications for the eight US federal departments or agencies with >6000 publications indexed in Scopus from January 2020 through December 2025 (Table 1).", out.width = '90%',fig.align='center'}
# ,out.extra='angle=270'
knitr::include_graphics(paste(fed_dir,"/perc_change_bar_multipanel_2.png",sep=""),error=FALSE)
```