Skip to contents

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, ...)

Arguments

object

a fitted model of class "copreg".

...

currently unused.

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