Share of total expenses devoted to management and general administration.
Formula:
aer = management_expenses / total_expensesDefinitional Range
Bounded [0, 1]. In combination with program and fundraising ratios, all three sum to 1.0 by construction. The empirical range for most nonprofits is approximately [0.05, 0.35].
Benchmarks and rules of thumb
Charity Navigator targets management and general expenses at or below 15% of total expenses for a favorable score.
Values below 5% may indicate underinvestment in governance systems.
Calculated For: 990 filers only.
Usage
get_expenses_admin_ratio( df,
mgmt_expenses = "F9_09_EXP_TOT_MGMT",
total_expenses = "F9_09_EXP_TOT_TOT",
winsorize = 0.98 ,
range = "zo",
sanitize = TRUE,
summarize = FALSE )Arguments
- df
A
data.framecontaining the fields required for computing the metric.- mgmt_expenses
Management and general expenses.
- total_expenses
Total functional expenses.
- winsorize
The winsorization value (between 0 and 1), defaults to 0.98, which winsorizes at the 1st and 99th percentiles.
- range
Character string specifying the theoretical range of the ratio, used to set winsorization bounds. Default
"zo". Options:"np"(negative to positive),"zp"(zero to positive),"zo"(zero to one),"nz"(negative to zero), or a custom"lo;hi"pair (e.g."0;10").- sanitize
Logical (default
TRUE). IfTRUE, NA values in the financial input columns are imputed to zero before the ratio is computed, respecting form scope: Part X and VIII/IX fields (990 only) are imputed only for 990 filers; Part I summary fields (990 + 990EZ) are imputed for all filers. The returned dataframe always contains the original unmodified input columns.- summarize
Logical. If
TRUE, prints asummary()of the results and plots density curves for all four output columns (raw, winsorized, z-score, percentile). Defaults toFALSE.
Value
Object of class data.frame: the original dataframe appended with four
new columns:
- `expenses_admin` - administrative overhead ratio (raw)
- `expenses_admin_w` - winsorized version
- `expenses_admin_z` - standardized z-score (based on winsorized values)
- `expenses_admin_p` - percentile rank (1-100)Details
Primary uses and key insights
The administrative overhead ratio measures what fraction of total expenses is
devoted to management and general administration - the governance, compliance,
financial management, and executive functions of the organization. It is the
management component of the broader overhead ratio (get_overhead_ratio()),
which adds fundraising expenses.
A high administrative ratio may indicate organizational complexity, compliance burden, or inefficiency; a very low ratio may indicate underinvestment in governance and financial systems. The appropriate level depends heavily on organizational size and mission type.
Formula variations and their sources
Management and general expenses (Part IX line 25C) / total functional expenses (line 25A). This is the most common operationalization. An alternative includes unallocated costs or uses a broader definition of overhead, but the Part IX column breakdown (program, management, fundraising) is the standard basis.
Canonical citations
Lecy, J.D. & Searing, E.A. (2015). Anatomy of the nonprofit starvation cycle. Nonprofit and Voluntary Sector Quarterly, 44(3), 539-563.
Overhead Myth Campaign (GuideStar, BBB Wise Giving, Charity Navigator, 2013).
Nunnenkamp, P. & Ohler, H. (2012). Throwing foreign aid at HIV/AIDS in developing countries: Missing the target? World Development, 40(10), 1978-1994. - Uses administrative ratios in cross-organizational comparisons.
Examples
library( fiscal )
data( dat10k )
d <- get_expenses_admin_ratio( df = dat10k )
#> :: Total expenses equal to zero :: 77 case(s) replaced with NaN
head( d[ , c( "expenses_admin", "expenses_admin_w", "expenses_admin_z", "expenses_admin_p" ) ] )
#> expenses_admin expenses_admin_w expenses_admin_z expenses_admin_p
#> <num> <num> <num> <int>
#> 1: NA NA NA NA
#> 2: 0.1384701 0.1384701 0.08996751 64
#> 3: 0.1315314 0.1315314 0.03150629 62
#> 4: NA NA NA NA
#> 5: 1.0000000 1.0000000 10.84640410 99
#> 6: NA NA NA NA