*! version 1.0 13 Apr 2023

Title

nca -- Necessary Condition Analysis (NCA)

Syntax

nca
conditions outcome
(numeric
min=2)
[if]
[in]
[,
options]

Optional
ceilings(string) Ceilings to estimate. The allowed ceilings are ce_fdh, cr_fdh, ce_vrs and cr_vrs. The default are ce_fdh and cr_fdh.

testrep(#) Number of replications for the permutation test. The default is 0.

scope(numlist) a theoretical scope in format : (x.low, x.high, y.low, y.high)

flipx Reverse the sign of the conditions

flipy Reverse the sign of the outcome

corner(numlist) either an integer or a numlist of integers, indicating the corner to analyze

cutoff(#) option for controlling how to display the x and y values that are outside the observed range. Default value is 0.

xbottlenecks(string) options for controlling the scale of the conditions in the bottleneck table

ybottlenecks(string) options for controlling the scale of the outcome in the bottleneck table

bottlenecks(numlist) Values of depvar to calculate bottlenecks. numlist is optional.

steps(#) Number of steps for Default value is 10.

stepsize(numlist) an integer that defines the step size in the bottleneck table.

nograph Prevents nca from showing the graph.

nosummaries Prevents nca from displaying the summaries.

graphnames(stub) Prefix for the graph names to be saved in memory

nocombine Do not combine the single plots.

conditions (also referred as x, throughout this help fle) is a varlist, outcome (also referred as y) is a single variable. They must not contain
factor variable and time-series operators.

Description

nca performs a Necessary Condition Analysis (NCA). NCA identifies a necessary condition X for an outcome Y in datasets. NCA draws a ceiling line Y = f(X) in an XY plot. The line separates the area without observations (the area of 'no Y without X') from the area with observations. NCA estimates several parameters including necessity effect size and its p value.

Options

Main

ceilings(string asis) Ceilings to estimate. The allowed ceilings are:

ce_fdh requests nca to estimate a Ceiling Envelopment with Free Disposal Hull (default)

cr_fdh requests nca to estimate a Ceiling Regression with Free Disposal Hull (default)

ce_vrs requests nca to estimate a Ceiling Envelopment with Variable Returns to Scale

cr_vrs requests nca to estimate a Ceiling Regression with Variable Returns to Scale

testrep(#) Number of permutation for the permutation test, the default is 0 and means that no permuation test is executed and, thus, no p-value is reported.

scope(numlist) a theoretical scope to be expressed in xlow, xhigh, ylow, yhigh

flipx forces nca to reverse the sign of all the conditions

flipy forces nca to reverse the sign of the outcome

corner(numlist) an integer constant or a vector of integers indicating the corners to analyze, this option is equivalent to the combionations of flipx and flipy. If a single integer is specified by the user nca estimates the same corner for all the conditions. Users can specifiy a different corner for each condition. The default is 1 and means that neither the outcome nor the conditions are reversed in sign. corner(2) is equivalent to flipx, corner(3) is equivalent to flipy and corner(4) is equivalent to flipx flipy.

Bottlenecks table

bottlenecks[(numlist)] the values of outcome to be used in the bottleneck table. numlist is optional and, when it is not specified, the values of the outcome to be displayed in the bottleneck table are controlled by steps and stepsize. If numlist is specified nca overrides steps and stepsize

steps(#) number of intervals of equal length to divide the bottleneck table, the default is 10.

stepsize(numlist) Step size for the bottleneck table.

xbottlenecks(string) and ybottlenecks(string) options for controlling the scale of the conditions in the bottleneck table. The possible options are

- perc_range : express the conditions in actual values. The default.

- perc_range : express the conditions in percentage of the range

- perc_max : express the conditions in percentage of the maximum

- percentile : express the conditions in percentiles

cutoff(#) option for controlling how to display the x and y values that are outside the observed range. The possible options are.

- 0 : NN (non necessary) and NA (not available)

- 1 : NN and highest observed values

- 2 : calculated values

Graph

nograph Prevents nca from showing the graph. Estimation is considerably faster.

graphnames(stub) prefix for the graph names. The suffix of the graphs is given by the condition they refer to.

nocombine Do not combine the graphs of each condition after the estimation.

Display

nosummaries Prevents nca from displaying the ceiling summaries, this is useful for the users who are only interested in the bottlenecks table.

Examples

Load the dataset

. use ncaexample.dta,clear

NCA using individualism as condition and innovationperformance as outcome. FDH and VRS ceiling (CE and CR) and show default bottlenecks table

. nca individualism innovationperformance, ceilings( ce_vrs cr_vrs ce_fdh cr_fdh) bottlenecks

NCA using individualism and risktaking as condition and innovationperformance as outcome. Absence of X- absence of Y FDH ceiling (CE and CR) and show custom bottlenecks table based on percentiles of X

. nca individualism risktaking innovationperformance , corner(4) bottlenecks(10 20(7.5)50) xbottlenecks(percentile)

NCA using individualism as condition and innovationperformance as outcome. CE-FDH ceiling. Execute permutation test with 1000 replications

. nca individualism innovationperformance, ceilings( ce_fdh) testrep(1000) nograph

Stored Results

Scalars

e(es_ depvarname_ ceiling name) the effect size for ceiling given by ceiling name and condition depvarname

e(testrep) the number of replications for the permutation test

Matrices

e(bottlenecks) the bottlenecks table

e(scopeX) the extremes of the scope of each condition

e(scopeY) the extremes of the scope of the outcome

e(results) the summary table of the NCA

Macros

e(xbottlenecks) Rendition of the conditions in the bottlenecks table (actual, perc_min, perc_range or perc_max)

e(ybottlenecks) Rendition of the conditions in the bottlenecks table (actual, perc_min, perc_range or perc_max)

e(cutoff) The type of cutoff (0,1 or 2)

e(corners) The corner. Indicates presence/presence, absence/presence, presence/absence and absence/absence of X and Y on the necessity condtion

e(cmd) nca

e(ceilings) the ceiling techniques

e(conditions) the list of conditions

e(outcome) the outcome

e(sample) marks the estimation sample

References

Dul, J. (2016). Necessary condition analysis (NCA) logic and methodology of "necessary but not sufficient" causality. Organizational Research Methods, 19(1), 10-52.

Dul, J. (2020) "Conducting Necessary Condition Analysis" SAGE Publications, ISBN: 9781526460141 https://uk.sagepub.com/en-gb/eur/conducting-necessary-condition-analysis-for-business-and-management-students/book262898

Dul, J., van der Laan, E., & Kuik, R. (2020). A statistical significance test for Necessary Condition Analysis." Organizational Research Methods, 23(2), 385-395. https://journals.sagepub.com/doi/10.1177/1094428118795272

Authors

Daniele Spinelli (corresponding author)

Department of Statistics and Quantitative Methods

University of Milano-Bicocca

Milan, Italy

daniele.spinelli@unimib.it

Jan Dul

Rotterdam School of Management

Department of Technology and Operations Management

Erasmus University Rotterdam

Rotterdam, the Netherlands

jdul@rsm.nl

Govert Buijs

Rotterdam School of Management

Department of Technology and Operations Management

Erasmus University Rotterdam

Rotterdam, the Netherlands

buijs@rsm.nl