
Check identification assumptions of a fitted endogeneity correction
Source:R/copreg-core.R
validity.RdGeneric function walking the identification requirements of a fitted copula-based endogeneity correction and reporting what the data say about each of them.
Value
An object describing the identification diagnostics; the exact
class and contents depend on the method. See
validity.copreg for the method used by the cross-sectional
estimators of this package.
Examples
set.seed(1)
n <- 150
w <- rnorm(n)
p <- 0.4 * w + rt(n, df = 3)
xi <- 0.5 * p + rnorm(n)
y <- 1 + 2 * p + 1.5 * w + xi
dat <- data.frame(y = y, p = p, w = w)
fit <- endogCopula:::.copreg_fit(
formula = y ~ p | w, data = dat,
ctor = endogCopula:::.ctor_twostage(TRUE),
method = "2sCOPE", cdf = "rank.n", ties = "max",
nboots = 25, verbose = FALSE)
validity(fit)
#>
#> Validity check for 2sCOPE
#> n = 150, intercept: yes, target power 80%
#> Sources: Becker, Proksch & Ringle (2022); Yang, Qian & Xie (2025);
#> Qian, Koschmann & Xie (2025)
#>
#> [1] Nonnormality of the endogenous regressors
#> skewness ex.kurtosis AD CvM KS p Yang ok Becker ok
#> p 0.962 5.978 1.604 0.261 0.343 FALSE FALSE
#> Becker et al. at n = 150: |skewness| >= not attainable, or AD > 18.964, or CvM > 3.488
#> Yang et al.: KS p < .05
#>
#> [2] Assumption: correlation of the copula transformation term
#> with the exogenous regressors
#> corr(W, CTT) p (Holm)
#> w -0.1761 0.0309
#> Joint test: R2 = 0.03102, F = 4.737, p = 0.0311
#> => violated. Park & Gupta is inconsistent here (Haschka, 2025).
#>
#> [3] Exogenous regressors as identifying variation
#> (continuous, KS p < .001, first-stage F > 10)
#> continuous KS p F: p qualifies
#> w TRUE 0.847 4.797 FALSE
#> => none qualifies. The conditions are conservative and not
#> necessary; Yang et al. (2025) propose a bootstrap procedure to gauge
#> the finite-sample bias in this situation.
#>
#> [4] Error term: structural residuals xi
#> skewness = -0.02121, excess kurtosis = -0.3975, AD = 0.2139 (p = 0.849)
#> Becker et al. (2022) find that with a nonnormal error the approach
#> is no longer consistent in models with an intercept. Yang et al.
#> (2025) and Qian et al. (2025) do permit a nonnormal error, but only
#> under the decomposition xi = U + V into a normally distributed
#> endogenous part U, which carries the entire dependence with the
#> regressors, and an independent nonnormal V. The residuals show xi,
#> not U, so their skewness neither establishes nor rules out a
#> violation; whether that decomposition holds has to be argued from
#> the suspected sources of endogeneity.
#>
#> [5] ICON: standard error inflation relative to uncorrected OLS
#> SE (corrected) SE (uncorrected) ICON
#> (Intercept) 0.09116 0.08483 1.075
#> p 0.22755 0.05394 4.219
#> w 0.11580 0.08547 1.355
#> => largest ICON = 4.219, below the threshold of 6.
#>