NASA Pathways Program Demographical Data Analysis

1. Introduction

The NASA Pathways Program is a structured internship and employment initiative designed to provide students and recent graduates with opportunities to work at NASA. It aims to develop the next generation of scientists, engineers, and professionals by offering hands-on experience in various fields related to space exploration and aeronautics.

The data used in this analysis was obtained through a Freedom of Information Act (FOIA) request submitted on December 16, 2024, to the NASA Pathways Program office. This request aimed to collect demographic information about program participants to better understand diversity and inclusion within NASA’s workforce. NASA responded to the request on 02/05/24 and provided a dataset that covers the years 2021 to 2024, a period before President Donald Trump’s executive order that sought to eliminate Diversity, Equity, and Inclusion initiatives in federal agencies. It includes information on applicants and hires, broken down by race and gender, as well as data on the high schools attended by hired applicants.

2. Purpose of Analysis

State the purpose of your analysis: What questions are you trying to answer? (e.g., demographics, trends, program effectiveness, diversity)

The purpose of the analysis is to explore the demographic composition of the NASA Pathways Program participants, identify trends in participation over time, and assess the program’s effectiveness in promoting diversity and inclusion.

Key questions include:

  1. What are the demographic characteristics of applicants and hires in the NASA Pathways Program?
  2. How do these characteristics change over time?
  3. What is the makeup of MSI (Minority Serving Institutions) versus Non-MSI schools among applicants?

Briefly mention the relevance or potential impact of your findings.

3. Data Description

The dataset includes:

  • Applicant and hire counts by race and gender (FY21–FY24)
  • Institutional affiliation (MSI vs. Non-MSI)
  • Breakdown of MSI types

Variables include fiscal year, demographic categories (race, gender), applicant/hire totals, and institutional status.

Data cleaning steps included:

  • Standardizing column names
  • Filtering out ‘Omitted’ and ‘NA’ values
  • Converting percentage strings to numeric types
  • Reshaping wide-form data to long-form where needed

Initial observations:

  • Gender data showed a heavy ‘Omitted’ category
  • Some sheets required numeric conversion of fiscal years
  • MSI categories required parsing from grouped labels
  • (Summary statistics shown in summary() output below.)

4. Methodology

The analysis follows this workflow:

  • Data ingestion from Google Sheets using googlesheets4
  • Cleaning and transformation using dplyr, janitor, and tidyr
  • Plotting trends over time with ggplot2
  • Breakdown of categories by race, gender, and institution type
  • Use of bar plots, line charts, and a pie chart for clear visualization
  • Calculated metrics include percentage shares, year-over-year comparisons, and groupwise summaries.

5. Exploratory Data Analysis (EDA)

Visualizations include:

  • Applicants by Gender Over Time: Shows more male applicants but a gradual increase in female participation.
  • Applicants by Race Over Time: Highlights disparities, particularly low Black and Native Hawaiian representation. = Hires by Gender and Race: Mirrors applicant patterns with continued underrepresentation of women and minorities.
  • MSI vs. Non-MSI: Non-MSI institutions consistently have higher applicant numbers.
  • MSI Type Breakdown: HSI and AANAPISI dominate; PBI and HBCUs are minimally represented.
  • Each visualization uncovers both progress and persisting gaps in NASA’s outreach and recruitment efforts.
# Load necessary libraries
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(rio)
library(janitor)
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(ggplot2)
library(scales)
## 
## Attaching package: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(googlesheets4)
# Load the dataset
# URL or Sheet ID of your Google Sheet
sheet_url <- "https://docs.google.com/spreadsheets/d/1Q6PkpHHbxN6xLqDUhYBhohQUFN4JI1Ms_3-5cKhbxsE/edit?gid=0#gid=0"

# Get all sheet/tab names
sheet_info <- gs4_get(sheet_url)
## ! Using an auto-discovered, cached token.
##   To suppress this message, modify your code or options to clearly consent to
##   the use of a cached token.
##   See gargle's "Non-interactive auth" vignette for more details:
##   <https://gargle.r-lib.org/articles/non-interactive-auth.html>
## ℹ The googlesheets4 package is using a cached token for
##   'tiasia.tcms@gmail.com'.
# Extract sheet names
sheet_names <- sheet_info$sheets$name
print(sheet_names)
## [1] "Applicants by Race"             "Applicants Group by Gender"    
## [3] "Hired Group by Gender"          "MSI versus Non-MSI Schools"    
## [5] "MSI-Type"                       "Hired Group by Race "          
## [7] "Applicant Group by Fiscal Year"
all_sheets <- lapply(sheet_names, function(sheet) {
  read_sheet(sheet_url, sheet = sheet)
})
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''Applicants by Race''.
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''Applicants Group by Gender''.
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''Hired Group by Gender''.
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''MSI versus Non-MSI Schools''.
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''MSI-Type''.
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''Hired Group by Race ''.
## ✔ Reading from "NASA Pathway Program Data ".
## ✔ Range ''Applicant Group by Fiscal Year''.
# Name the list elements by sheet/tab names
names(all_sheets) <- sheet_names
# Suppose these are your sheet names
names(all_sheets)
## [1] "Applicants by Race"             "Applicants Group by Gender"    
## [3] "Hired Group by Gender"          "MSI versus Non-MSI Schools"    
## [5] "MSI-Type"                       "Hired Group by Race "          
## [7] "Applicant Group by Fiscal Year"
# Assign each to its own variable
applicants_race <- all_sheets[["Applicants by Race"]]
applicants_gender <- all_sheets[["Applicants Group by Gender"]]
hired_gender <- all_sheets[["Hired Group by Gender"]]
hired_race <- all_sheets[["Hired Group by Race "]]
msi_non_msi <-all_sheets[["MSI versus Non-MSI Schools"]]
msi_type <-all_sheets [["MSI-Type"]]
summary(applicants_gender)
##  Fiscal Year (FY).Length  Fiscal Year (FY).Class  Fiscal Year (FY).Mode
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     character                                       
##  Applicant Group    Total Applicants
##  Length:17          Min.   :  601   
##  Class :character   1st Qu.: 3865   
##  Mode  :character   Median : 5806   
##                     Mean   :10774   
##                     3rd Qu.:11195   
##                     Max.   :61050   
##                                     
##                                     
##                                     
##                                     
##                                     
##                                     
##                                     
##                                     
##                                     
##                                     
## 
summary(applicants_race)
##   Fiscal Year       Race             Applicants        Hired       
##  Min.   :2021   Length:29          Min.   :   12   Min.   :  0.00  
##  1st Qu.:2022   Class :character   1st Qu.:   76   1st Qu.:  1.00  
##  Median :2022   Mode  :character   Median : 1129   Median : 13.00  
##  Mean   :2022                      Mean   : 2951   Mean   : 44.28  
##  3rd Qu.:2023                      3rd Qu.: 2347   3rd Qu.: 35.00  
##  Max.   :2024                      Max.   :42791   Max.   :642.00  
##  NA's   :1
summary(hired_gender)
##  Fiscal Year (FY).Length  Fiscal Year (FY).Class  Fiscal Year (FY).Mode
##  1          -none-     character                                       
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     character                                       
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     character                                       
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     character                                       
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     numeric                                         
##  1          -none-     character                                       
##     Group            Hires Total   
##  Length:17          Min.   : 11.0  
##  Class :character   1st Qu.: 57.0  
##  Mode  :character   Median : 93.0  
##                     Mean   :148.1  
##                     3rd Qu.:127.0  
##                     Max.   :839.0  
##                                    
##                                    
##                                    
##                                    
##                                    
##                                    
##                                    
##                                    
##                                    
##                                    
## 
summary(hired_race)
##  Fiscal Year (FY)    Group               Hires       
##  Min.   :2021     Length:29          Min.   :  0.00  
##  1st Qu.:2022     Class :character   1st Qu.:  1.00  
##  Median :2022     Mode  :character   Median : 13.00  
##  Mean   :2022                        Mean   : 44.34  
##  3rd Qu.:2023                        3rd Qu.: 35.00  
##  Max.   :2024                        Max.   :643.00  
##  NA's   :1
summary(msi_non_msi)
##  Fiscal Year             MSI           NON-MSI          Total      
##  Length:7           Min.   : 21.0   Min.   : 58.0   Min.   : 79.0  
##  Class :character   1st Qu.: 38.0   1st Qu.: 96.0   1st Qu.:139.0  
##  Mode  :character   Median : 49.0   Median :101.0   Median :145.0  
##                     Mean   : 62.8   Mean   :144.4   Mean   :207.2  
##                     3rd Qu.: 49.0   3rd Qu.:106.0   3rd Qu.:155.0  
##                     Max.   :157.0   Max.   :361.0   Max.   :518.0  
##                     NA's   :2       NA's   :2       NA's   :2

Applicants Demographical Data Analysis

applicants_gender_filtered <- applicants_gender |> 
  clean_names() |> 
  mutate(
    fiscal_year = as.numeric(unlist(fiscal_year_fy)))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `fiscal_year = as.numeric(unlist(fiscal_year_fy))`.
## Caused by warning:
## ! NAs introduced by coercion

Applicants by Gender Over Time

applicants_gender_filtered <- applicants_gender_filtered |> 
  filter(applicant_group %in% c("Male", "Female"))

# Plot Male vs Female over years
ggplot(applicants_gender_filtered, aes(x = fiscal_year, y = total_applicants, color = applicant_group)) +
  geom_line(size = 1.2) +
  geom_point(size = 3) +
  labs(title = "Applicants by Gender Over Time",
       x = "Fiscal Year",
       y = "Number of Applicants",
       color = "Gender",
         caption = "Source: NASA Pathways Program Data | Analysis by Tiasia Saunders", 
       ) 
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

  • Displays the number of male and female applicants to the NASA Pathways Program from 2021 to 2024.
  • Male applicants consistently outnumber females, but female participation shows a gradual increase in 2023.
  • Dataset filtered to include only male and female applicants for clearer comparison.
  • Note: A large number of applicants are labeled ‘Omitted’, which may impact interpretation.
applicants_race <- applicants_race |> 
  clean_names() 
ggplot(applicants_race, aes(x = fiscal_year, y = applicants, color = race)) +
  geom_line(size = 1.2) +
  geom_point(size = 3) +
  scale_color_manual(
    values = c(
      "2 or More Races" = "#D62728",                  
      "American Indian or Alaska Native" = "#9467BD", 
      "Asian" = "#1F77B4",                           
      "Black or African American" = "#FF7F0E",       
      "Hispanic or Latino" = "#2CA02C",              
      "Native Hawaiian or Other Pacific Islander" = "#8C564B",
      "White" = "#17BECF"                            
    )
  ) +
  labs(title = "Applicants by Race Over Time",
       x = "Fiscal Year",
       y = "Number of Applicants",
       color = "Gender",
         caption = "Source: NASA Pathways Program Data | Analysis by Tiasia Saunders", 
       ) +
        coord_cartesian(ylim = c(0, 10000))
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).

  • Displays the number of applicants by race to the NASA Pathways Program from 2021 to 2024.
  • White applicants consistently make up the largest group, followed by Asian and Hispanic or Latino applicants.
  • White applicants doubles the number of Black or African American applicants, indicating a significant racial disparity.
  • Indicates the need for targeted efforts to increase diversity, particularly among Black or African American and Native Hawaiian or Other Pacific Islander applicants.

Hired Applicants Demographical Data Analysis

hired_gender <- hired_gender |> 
  clean_names() |> 
  mutate(
    fiscal_year = as.numeric(unlist(fiscal_year_fy)))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `fiscal_year = as.numeric(unlist(fiscal_year_fy))`.
## Caused by warning:
## ! NAs introduced by coercion
hired_gender_filtered <- hired_gender |> 
  filter(group %in% c("Male", "Female"))

# Plot Male vs Female over years
ggplot(hired_gender_filtered, aes(x = fiscal_year, y = hires_total, color = group)) +
  geom_line(size = 1.2) +
  geom_point(size = 3) +
  labs(title = " Hired Applicants by Gender Over Time",
       x = "Fiscal Year",
       y = "Number of Applicants",
       color = "Gender",
         caption = "Source: NASA Pathways Program Data | Analysis by Tiasia Saunders", 
       ) 

  • Displays the number of hired male and female applicants to the NASA Pathways Program from 2021 to 2024.
  • Displays the number of male and female applicants to the NASA Pathways Program from 2021 to 2024.
  • Male applicants outnumber females, the gap seems to widen in 2022 to 2023.
  • Indicates progress towards improving gender diversity within the program.
  • Dataset filtered to include only male and female applicants for clearer comparison.
  • Note: A large number of applicants are labeled ‘Omitted’, which may impact interpretation.
hired_race <- hired_race |> 
  clean_names()
ggplot(hired_race, aes(x = fiscal_year_fy, y = hires, color = group)) +
  geom_line(size = 1.2) +
  geom_point(size = 3) +
  labs(title = "Hired Applicants by Race Over Time",
       x = "Fiscal Year",
       y = "Number of Applicants",
       color = "Gender",
         caption = "Source: NASA Pathways Program Data | Analysis by Tiasia Saunders", 
       ) +
        coord_cartesian(ylim = c(0, 300))
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).

  • Displays the number of hires by racial group from 2021 to 2024.
  • White individuals were consistently the most hired group, with a peak of 125 hires in 2022.
  • Asian hires increased in 2022 and 2023, before dropping in 2024.
  • Hispanic or Latino hires rose from 2021 to 2023, reaching 43, then declined in 2024.
  • Black or African American hires peaked in 2021 and steadily declined through 2024.
  • American Indian or Alaska Native and Native Hawaiian or Other Pacific Islander groups had the lowest hire counts, with multiple years showing zero hires.
  • Two or More Races hires remained minimal, never exceeding 3 in a single year.
  • Overall hiring peaked in 2022 and declined notably in 2024.

Minority Serving Institutions versus Non-Minority Serving Schools

msi_non_msi <- msi_non_msi |> 
  clean_names() |> 
  pivot_longer(cols = c(msi, non_msi),  
               names_to = "msi_status",
               values_to = "total_applicants")
ggplot(msi_non_msi, aes(x = fiscal_year, y = total_applicants, fill = msi_status)) +
  geom_bar(stat = "identity", position = "dodge") +
  scale_fill_manual(values = c("msi" = "lightblue", "non_msi" = "lavender")) +
  labs(title = "Applicants from MSI vs Non-MSI Schools Over Time",
       x = "Fiscal Year",
       y = "Number of Applicants",
       fill = "MSI Status",
         caption = "Source: NASA Pathways Program Data | Analysis by Tiasia Saunders", 
       ) 
## Warning: Removed 4 rows containing missing values or values outside the scale range
## (`geom_bar()`).

  • Non-MSI participation consistently outpaces MSI participation across all four fiscal years.
  • In FY21, Non-MSI entries nearly doubled MSI entries (96 vs. 49).
  • FY22 saw a dip in MSI involvement (38), while Non-MSI participation slightly increased to 101.
  • FY23 marked the highest year overall, but the gap remained wide: 106 Non-MSI vs. 49 MSI.
  • FY24 shows a sharp drop for both groups, but the decline was steeper for MSIs (down to just 21 entries).
  • Over the four years, Non-MSI institutions made up nearly 70% of all entries.
  • The persistent disparity suggests structural or access-related differences between MSI and Non-MSI engagement.

MSI Type

** HSI: Hispanic-Serving Institution **
** AANAPISI: Asian American and Native American Pacific Islander-Serving Institution **
** HBCU: Historically Black Colleges and Universities **
** PBI: Predominantly Black Institution **

msi_type <- msi_type |> 
  clean_names()

MSI Types

# Example data frame
msi_data <- tibble(
  MSI_Type = c("HSI", "HSI, AANAPISI", "AANAPISI", "HBCU", "PBI"),
  Percentage = c("28.0%", "43.3%", "21.7%", "6.4%", "0.64%")
)

# Remove % sign and convert to numeric
msi_data <- msi_data %>%
  mutate(
    Percentage_num = as.numeric(gsub("%", "", Percentage))
  )

# Calculate positions for labels
msi_data <- msi_data %>%
  arrange(desc(MSI_Type)) %>%
  mutate(
    ypos = cumsum(Percentage_num) - 0.5 * Percentage_num
  )

# Plot pie chart
ggplot(msi_data, aes(x = "", y = Percentage_num, fill = MSI_Type)) +
  geom_col(width = 1, color = "white") +
  coord_polar(theta = "y") +
  geom_text(aes(y = ypos, 
                label = paste0(MSI_Type, "\n", round(Percentage_num, 2), "%")), 
            color = "white", size = 3, lineheight = 0.9) +
  labs(
    title = "Applicant Percentage by MSI Type",
    fill = "MSI Type",
    caption = "Source: NASA Pathways Program Data | Analysis by Your Name"
  ) +
  theme_void() +
  theme(
    legend.position = "right",
    plot.title = element_text(hjust = 0.5)
  )

  • HSI and AANAPISI institutions combined make up the largest share, accounting for 43.3% of the total.
  • HSIs alone follow closely, representing 28%, suggesting strong participation from Hispanic-Serving Institutions overall.
  • AANAPISIs contribute 21.7%, showing notable representation from Asian American and Native American Pacific Islander institutions.
  • HBCUs make up just 6.4%, highlighting a much smaller footprint compared to other MSI types.
  • PBIs are the least represented, contributing only 0.64%, a stark contrast to other MSI categories.
  • The data suggests that while some MSI types are highly engaged, others—especially PBIs and HBCUs—may face barriers to participation or inclusion.

6. Key Findings

  • White applicants dominate each year, followed by Asian and Hispanic/Latino individuals.
  • Black and Native Hawaiian groups are significantly underrepresented.
  • Male applicants consistently outnumber females across both applicants and hires.
  • Non-MSI schools produce more applicants than MSI schools across all years.
  • HSI and AANAPISI institutions contribute the majority of MSI applicants.

7. Discussion & Recommendations

  • These findings suggest that while NASA is attracting some diversity through HSI and AANAPISI institutions, there’s a need to:
  • Increase recruitment efforts at PBIs and HBCUs
  • Address gender imbalances by targeting female STEM students
  • Encourage more transparent reporting to reduce ‘Omitted’ data
  • Evaluate outreach efforts for Pacific Islander and Indigenous groups

8. Limitations:

  • Missing or omitted demographic data
  • Potential reporting inconsistencies across institutions
  • Dataset does not include information on outcomes beyond hiring

9. Conclusion

The NASA Pathways Program has made strides toward inclusivity, but gaps remain in racial and gender representation. By identifying where disparities exist—especially in MSI engagement and racial equity—NASA can take targeted steps to ensure a more representative workforce that reflects the diverse talent pool across the nation.

11. Resources

FOIA Request to NASA Pathways Program (Submitted Dec 16, 2024)

GitHub Repository with R Markdown & Data

Contact: Tiasia Saunders – Data Journalist & Analyst