Builds the full coefficient table (estimate, bootstrap standard error, z and p value), the endogeneity summary rho(P*, xi*) where the estimator identifies it, the Durbin-Hausman-Wu test where the estimator's theory covers it, bootstrap Wald tests of the copula terms, and the fit statistics of both the augmented and the structural model.
Usage
# S3 method for class 'copreg'
summary(object, ...)Value
An object of class "summary.copreg", a list whose main
elements are coefficients (the Estimate / Std. Error / z value /
Pr(>|z|) table), rho (the endogeneity table, or NULL where
not identified), dhw (the Durbin-Hausman-Wu table, where
reported), wald and wald.z (bootstrap Wald tests),
fit (fit statistics for the augmented and structural model),
sigma, r.squared, adj.r.squared, and
diagnostics (the identification diagnostics of the fitted
object). Has a print.summary.copreg method.
References
Qian, Y., A. Koschmann, and H. Xie (2025). A practical guide to endogeneity correction using copulas. Journal of Marketing. Breitung, J., A. Mayer, and D. Wied (2024). Asymptotic properties of endogeneity corrections using nonlinear transformations. The Econometrics Journal 27(3), 362-383. Liengaard, B. D., J.-M. Becker, M. Bennedsen, P. Heiler, L. N. Taylor, and C. M. Ringle (2025). Dealing with regression models' endogeneity by means of an adjusted estimator for the Gaussian copula approach. Journal of the Academy of Marketing Science 53, 279-299.
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)
summary(fit)
#>
#> Copula endogeneity correction: 2sCOPE
#>
#> Residuals of the augmented regression (u = xi - C gamma):
#> Min 1Q Median 3Q Max
#> -2.81122 -0.70358 -0.05717 0.71567 2.74975
#>
#> Residuals of the structural model (xi = y - mu - P alpha - W beta):
#> Min 1Q Median 3Q Max
#> -2.72838 -0.75649 0.02345 0.72546 2.55468
#>
#> Coefficients:
#> Estimate Std. Error z value Pr(>|z|)
#> (Intercept) 0.87760 0.09116 9.627 <2e-16 ***
#> p 2.83870 0.22755 12.475 <2e-16 ***
#> w 1.42933 0.11580 12.343 <2e-16 ***
#> p_cop -0.50920 0.36416 -1.398 0.162
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
#> Endogeneity: rho(P*, xi*) is the correlation between the normal score
#> of an endogenous regressor and that of the structural error, xi* = xi / sigma.
#> Estimate Std. Error z value Pr(>|z|)
#> rho(p*, xi*) -0.4308 0.2959 -1.456 0.145
#>
#> Fit, on 146 residual degrees of freedom:
#> augmented structural
#> Residual standard error 1.0288 1.1448
#> R-squared 0.9604 0.9510
#> Adjusted R-squared 0.9596 0.9500
#> sigma above is the standard error of the structural model, the one
#> entering xi* = xi / sigma.
#> Standard errors from 25 bootstrap replicates; cdf = "rank.n", ties = "max".
#> Pr(>|z|) in both tables: Wald test using the normal approximation,
#> z = Estimate / Std. Error, with the bootstrap standard error.
#> See confint(object, type = "percentile") for bootstrap percentile intervals.
#>
#> --- Identification diagnostics ------------------------------------
#>
#> Non-normality of the endogenous regressors (small p = non-normal, good):
#> AD AD p KS p
#> p 1.604 0.0003842 0.3427
#>
#> Correlation of the copula terms with the exogenous regressors
#> (Park & Gupta assume this is zero; 'joint' tests all of them at once,
#> the Holm p value refers to the single largest correlation):
#> max |corr| with p (Holm) joint R2 joint p
#> p 0.1761 w 0.03094 0.03102 0.0311
#> full matrix in summary(object)$diagnostics$exog.correlation.matrix
#>
#> Collinearity of the copula terms (omega near 0 = weakly identified):
#> corr(P, C) omega
#> p_cop 0.9431 0.09305
#>
