Skip to contents

Generic function walking the identification requirements of a fitted copula-based endogeneity correction and reporting what the data say about each of them.

Usage

validity(object, ...)

Arguments

object

a fitted model.

...

further arguments passed to methods.

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.
#>