Recently, I came across an article in The Economist analyzing ~890 firms, which suggested that employee experiences in flexible vs. full-time office setups might involve a trade-off between agility and other elements of corporate culture.

Specifically, the authors found that companies mandating five days in the office scored higher on agility, but at the cost of work-life balance, support, candor, leadership trust, and a non-toxic culture (see the plot below).

That got me wondering how these different dimensions of culture relate to each other more broadly—regardless of work arrangement—and what kinds of trade-offs might exist.

To explore this, I used the same dataset referenced in another related Economist piece comparing cultures across companies from different industries, as measured by CultureX through anonymous Glassdoor reviews between Jan 1, 2023 and Apr 4, 2025, and applied psychometric network analysis (EBICglasso) to estimate regularized partial correlations between individual cultural factors in the sample.

library(tidyverse)
library(bootnet)
library(igraph)
library(tidygraph)
library(ggraph)
 
# uploading the data
data <- read.delim("culturex_data.txt", sep = ",", header = TRUE)
 
# changing the data format
wide_data <- data %>%
  pivot_wider(
    names_from = topic,
    values_from = post_covid_score
  ) %>% 
  # indicating that the toxic culture score were (very probably) reversed
  rename(`Toxic culture (R)` = `Toxic culture`)
 
# Psychometric Network Analysis
 
# estimating the network
network_estimate <- estimateNetwork(
  wide_data[, 4:12],
  default = "EBICglasso",
  corMethod = "cor_auto", 
  tuning = 0.5, # the LASSO penalty / regularization parameter
  threshold = TRUE # removes edges that are not statistically significant, thereby increasing specificity
)
 
# converting the qgraph object to a tidygraph object
graph_obj <- as_tbl_graph(network_estimate$graph, directed = FALSE) %>%
  activate(nodes)
 
# getting the edge weights from the graph object
edge_weights <- E(graph_obj)$weight
 
# creating the network plot
# setting seed for reproducibility
set.seed(2024)
ggraph_plot <- ggraph(
  graph_obj, 
  layout = 'fr', 
  weights = abs(edge_weights) 
  ) +
  geom_edge_link(
    aes(color = weight, linewidth = abs(weight)), 
    show.legend = TRUE
  ) +
  scale_edge_color_gradient2(
    low = "#f28e2b", mid = "gray90", high = "#4e79a7", 
    midpoint = 0, name = "Regularized Partial Correlations"
  ) +
  scale_edge_width(name = "Abs. Regularized Partial Correlations") +
  geom_node_point(
    fill = "black", color = "black", stroke = 1, size = 4
  ) +
  geom_node_text(aes(label = name),, size=5, repel = TRUE) +
  theme_graph(base_family = 'sans') +
  labs(
    title = "Psychometric Network Analysis of Corporate Culture",
    subtitle = "As measured by CultureX through anonymous reviews submitted by employees to Glassdoor between Jan 1st 2023-Apr 4th 2025",
    caption = "\nThe toxic culture score is supposed to be reversed."
  )
 
# printing the final plot
print(ggraph_plot)
 
 

The resulting network chart shows a few interesting patterns:

  • Leadership sits at the center, with strong positive connections to most other cultural dimensions.
  • Innovation appears relatively isolated compared to the rest.
  • Work-life balance shows negative associations with several factors, including innovation, strategy, and agility.
  • Agility is negatively related to non-toxic culture, supportive culture, work-life balance, and transparency, but positively associated with leadership and strategy.

Sure, the correlations are far from perfect, so you can find plenty of exceptions to these patterns in the data. But still, imo, it’s interesting food for thought and potentially useful input into considerations about shaping corporate culture in one direction or another, as prioritizing one dimension may carry opportunity costs and unintended consequences.


P.S. If you want to replicate the analysis, run your own, or add additional external data, you can use the table below. ⚠️ But please keep in mind that I did not obtain the data officially from CultureX—I scraped/downloaded them from The Economist’s webpage, so I cannot guarantee that the data are 100% accurate.

# user-friendly table with the data in wide format
library(DT)
 
datatable(
  wide_data %>% 
    select(name, description, industry, everything()) %>% 
    rename(
      'Company name' = name, 
      'Company description' = description, 
      'Industry' = industry
    ) %>% 
    mutate(Industry = as.factor(Industry)),
  class = 'cell-border stripe', 
  filter = 'top',
  extensions = 'Buttons',
  fillContainer = FALSE,
  rownames= FALSE,
  options = list(
    pageLength = 5, 
    autoWidth = TRUE,
    dom = 'Bfrtip',
    buttons = c('copy', 'csv', 'excel'), 
    scrollX = TRUE, 
    selection="multiple"
  )
)
 

Showing 20 of 889 rows and all 12 columns. View the full interactive table in the original post.

Company nameCompany descriptionIndustryWork-life balanceTransparencyToxic culture (R)Supportive cultureStrategyLeadershipInnovationOpen to feedbackAgility
3MIndustrial conglomerate known for innovationIndustrials-0.066430491-0.475452788-0.208192446-0.041766744-1.979745633-0.6803742670.09244682-0.621825476-1.034820942
7-ElevenGlobal convenience store chainGrocery Stores-0.2597984010.025971506-0.69904030.215904289
A&W RestaurantsFast-food chain known for root beerRestaurants & Fast Food0.6109365781.3498830772.3083116491.878193433
AB InBevWorld's largest beer producerConsumer Products-0.921735902-0.144622154-1.2108340590.0827137-0.401477903-0.187719793-1.3263053110.200843695
ABBAutomation and roboticsIndustrials0.3199412540.5428024280.9694960921.5669004910.0941062620.792155479-0.2376502180.67948563-0.381309845
AbbottHealthcare and diagnostics companyLife Sciences & Biopharma-0.8997247240.043727505-1.068616318-1.0074901780.621015897-0.442805035-0.4080662060.0497019750.062024776
AbbVieBiopharma firm best known for HumiraLife Sciences & Biopharma-0.059915596-0.238398178-0.354981094-0.3590204721.326781662-0.097696226-0.0718406220.503595204-0.876685816
Abercrombie & FitchPreppy American clothing brandSpecialty Retail & Apparel0.6724864080.560917170.6341557740.898789043
ABM IndustriesFacility management and servicesOutsourcing & Staffing-0.374363267-0.639342211-1.07553922-1.081290126
Academy Sports + OutdoorsSports and outdoor goods retailerSpecialty Retail & Apparel-0.114106338-0.1065085320.159191257-0.043169556
AccentureConsulting and technology servicesBusiness Consulting0.5446426480.2338079460.79762367-1.1596037310.1069798840.1363499890.036506226-0.584888442
Ace HardwareCo-op of independent hardware storesSpecialty Retail & Apparel1.1191993210.2735243960.6495712711.71059534
AcostaMarketing agency for consumer goodsBusiness Services2.060383483-1.5851231970.686542396-0.8253483811.218658179-0.197603569-0.2009921390.563256997
ActalentStaffing firm for engineers and scientistsOutsourcing & Staffing-1.198388970.2277257160.5654637550.333694094
AdeccoGlobal staffing and HR servicesOutsourcing & Staffing0.535711920.8106063540.1838048620.446663882
adidasGerman sportswear brandSpecialty Retail & Apparel0.6469184030.5506802361.3998628150.410082661
AdobeCreator of Photoshop and digital toolsSoftware & IT Services0.4970635030.690587774-0.0988577150.783656928-0.1327244770.208934451.5528114910.180150621-2.396603423
ADPPayroll and human resourcesBusiness Services-0.4894678041.6975503920.1441988880.4383443130.3621036920.5825599030.356213507-0.529422785
ADTHome and business securityOutsourcing & Staffing-0.024646872-0.990235433-1.222689509-0.913891077
Advance Auto PartsAmerican car parts retailerSpecialty Retail & Apparel0.918495408-0.036241182-1.296934767-0.48334263

📄 Read the original post with full outputs on my blog.