[Stata] Relative Importance of Predictors: Dominance Analysis with domin
Regression coefficients answer how much the outcome changes with each predictor, holding the others constant. They do not answer which predictor matters most, because the predictors are on different scales and are correlated with each other. Standardized coefficients and the change in R-squared when a predictor is added last both depend on which other predictors are in the model.
Dominance analysis, introduced by Budescu (1993), compares predictors across every possible subset of the other predictors. For each predictor it averages the increase in fit when that predictor is added to every subset, which gives a “general dominance” statistic. The general dominance statistics sum to the full model’s R-squared, so each can be read as that predictor’s share of the explained variance. The Stata command domin by Joseph Luchman runs dominance analysis for regress, logit, and other estimation commands.
The example asks which characteristics account for the most variation in psychological distress among California adults.

Installation
ssc install dominThe current version is 3.6.0 (May 2025), and it requires Stata 16 or newer.
Data
The examples use the 2024 California Health Interview Survey (CHIS) adult public use file, which has 24,810 adult respondents. The CHIS public use files are free and available through a brief application on the UCLA Center for Health Policy Research site. Every post in this series builds its variables with the same short do-file, 00_chis_prep.do:
use "chis_adult_2024.dta", clear
* outcomes
gen k6 = distress if distress >= 0 // K6 score, past month (0-24)
gen nousual = usual == 2 // no usual source of care
gen delay = ah22 == 1 // delayed or did not get medical care, past 12 months
gen erv = er == 1 // any ER visit, past 12 months
gen uninsured = ins == 2
gen needhelp = af81 == 1 if af81 > 0 // needed help for emotional/mental or substance problem
gen fairpoor = ab1 >= 4 // fair or poor self-rated health
gen spd = dstrs12 == 1 // likely serious psychological distress, past year
* groups
gen lep = spk_eng == 3 // speaks English not well or not at all
gen foreign = ah33new == 2
gen female = srsex == 2
* covariates
gen age = srage_p1
recode ahedc_p1 (1 2 = 1 "Less than high school") (3 = 2 "High school") ///
(4 5 6 = 3 "Some college") (7 8 9 = 4 "Bachelor's or more"), gen(educ)
gen pov = povll
label define povllf 4 "300%+ FPL", modify
label values pov povllf
recode ombsrr_p1 (1 = 1 "Latino") (2 = 2 "White") (3 = 3 "Black") (5 = 4 "Asian") ///
(4 6 = 5 "Other or multiracial"), gen(race)
* CHIS design: final weight plus 80 jackknife replicate weights
svyset [pw=rakedw0], jkrweight(rakedw1-rakedw80, multiplier(1)) vce(jackknife) mseLimited English proficiency (lep) means the respondent reported speaking English not well or not at all; 1,520 respondents (6.1 percent) meet that definition. Commands that accept the svy prefix use the jackknife replicate weights; commands that do not accept it use the final weight rakedw0 as a probability weight, which gives the right point estimates and robust standard errors that ignore the replicate design.
Linear regression with predictor sets
The outcome is the K6 psychological distress score (0 to 24) for the past month. Education, income, and race and ethnicity each enter as a set of indicator variables, so sets() treats each set as one predictor; otherwise each indicator would be ranked on its own.
drop if missing(k6)
tab educ, gen(ed)
tab pov, gen(pv)
tab race, gen(rc)
domin k6 age female lep uninsured [pw=rakedw0], reg(regress) fitstat(e(r2)) ///
sets((ed2 ed3 ed4) (pv2 pv3 pv4) (rc2 rc3 rc4 rc5))With four single predictors and three sets there are 2^7 − 1 = 127 subset models, which domin fits one after another.
General dominance statistics: Linear regression
Number of obs = 24794
Overall Fit Statistic = 0.1227
| Dominance Standardized Ranking
k6 | Stat. Domin. Stat.
------------+------------------------------------------------------------------------
age | 0.1028 0.8384 1
female | 0.0019 0.0154 4
lep | 0.0012 0.0098 6
uninsured | 0.0005 0.0044 7
set1 | 0.0015 0.0122 5
set2 | 0.0098 0.0797 2
set3 | 0.0049 0.0401 3
-------------------------------------------------------------------------------------
Variables in set1: ed2 ed3 ed4
Variables in set2: pv2 pv3 pv4
Variables in set3: rc2 rc3 rc4 rc5The full model’s R-squared is 0.123. Age accounts for 0.103 of it, or 84 percent (Standardized Domin. Stat.). Family income (set2) is second at 8 percent and race and ethnicity third at 4 percent; gender, education, limited English proficiency, and insurance each account for 2 percent or less. In this sample, the weighted mean K6 score falls from 6.7 among adults aged 18 to 29 to 2.4 among adults 65 and older.
The standardized statistics can be plotted with coefplot:
matrix s = e(std)
coefplot matrix(s), noci xlabel(0(.2)1) xtitle("Share of the model R-squared") ///
coeflabels(age = "Age" female = "Female" lep = "Limited English" uninsured = "Uninsured" ///
set1 = "Education" set2 = "Family income" set3 = "Race and ethnicity") ///
recast(bar) barwidth(.6)
Conditional and complete dominance
domin also reports two stricter comparisons. Conditional dominance shows each predictor’s average contribution within subsets of each size. Complete dominance asks whether one predictor adds more than another in every subset that contains neither of them.
Conditional dominance statistics
-------------------------------------------------------------------------------------
include_at: include_at: include_at: include_at: include_at: include_at:
1 2 3 4 5 6
age 0.1062 0.1048 0.1037 0.1026 0.1017 0.1008
female 0.0017 0.0018 0.0019 0.0019 0.0020 0.0020
lep 0.0011 0.0017 0.0019 0.0017 0.0012 0.0007
uninsured 0.0010 0.0008 0.0006 0.0005 0.0004 0.0003
set1 0.0022 0.0020 0.0018 0.0016 0.0013 0.0009
set2 0.0124 0.0115 0.0107 0.0098 0.0089 0.0080
set3 0.0060 0.0050 0.0045 0.0044 0.0045 0.0048The lep row is worth reading. Its contribution is 0.0011 when it is the only predictor and 0.0007 when it is added to six others, and in between it peaks at 0.0019. Its contribution depends on which other predictors are already in the model, which is the reason a single “added last” R-squared change can mislead.
The output ends with the strongest designation found for each pair, for example:
Strongest dominance designations
age completely dominates female
age completely dominates lep
set2 completely dominates set3
set2 conditionally dominates lep
lep conditionally dominates uninsured
female generally dominates lep“Completely dominates” is the strongest claim: age adds more fit than limited English proficiency in every subset model. “Generally dominates” is the weakest and only compares the averages.
Binary outcomes
For a logit model, fitstat() takes a pseudo R-squared. The outcome here is likely serious psychological distress in the past year.
domin spd age female lep uninsured [pw=rakedw0], reg(logit) fitstat(e(r2_p)) ///
sets((ed2 ed3 ed4) (pv2 pv3 pv4) (rc2 rc3 rc4 rc5))General dominance statistics: Logistic regression
Number of obs = 24794
Overall Fit Statistic = 0.1055
| Dominance Standardized Ranking
spd | Stat. Domin. Stat.
------------+------------------------------------------------------------------------
age | 0.0837 0.7934 1
female | 0.0030 0.0287 5
lep | 0.0053 0.0499 3
uninsured | 0.0009 0.0083 7
set1 | 0.0027 0.0259 6
set2 | 0.0056 0.0532 2
set3 | 0.0043 0.0406 4
-------------------------------------------------------------------------------------Age is again first, at 79 percent of McFadden’s pseudo R-squared. Limited English proficiency moves up to third (5 percent) for this outcome, just behind family income.
Notes
Dominance statistics describe shares of fit in this sample. They are not causal effects and do not have standard errors in the default output; domin can be combined with bootstrap to obtain them. The number of subset models doubles with every predictor or set added, so a model with 15 predictors means 32,767 regressions. With weights, domin passes [pw=rakedw0] to each model, which gives weighted R-squared values but does not use the CHIS replicate weights.
References
Budescu, D. V. (1993). Dominance analysis: A new approach to the problem of relative importance of predictors in multiple regression. Psychological Bulletin, 114(3), 542–551. https://doi.org/10.1037/0033-2909.114.3.542
Luchman, J. N. (2021). Determining relative importance in Stata using dominance analysis: domin and domme. The Stata Journal, 21(2), 510–538. https://doi.org/10.1177/1536867X211025837
