Skip to contents

Prints the full report built by summary.copreg: residual quantiles, the coefficient table, the endogeneity or Durbin-Hausman-Wu tests, bootstrap Wald tests of the copula terms, fit statistics, and the identification diagnostics (non-normality, exogenous correlation, collinearity, ICON).

Usage

# S3 method for class 'summary.copreg'
print(
  x,
  digits = max(3L, getOption("digits") - 3L),
  signif.stars = getOption("show.signif.stars"),
  ...
)

Arguments

x

an object of class "summary.copreg", as returned by summary.copreg.

digits

number of significant digits to print.

signif.stars

logical, whether to print significance stars next to the p values (via printCoefmat).

...

currently unused.

Value

x, invisibly. Called for the side effect of printing.

References

Qian, Y., A. Koschmann, and H. Xie (2025). A practical guide to endogeneity correction using copulas. Journal of Marketing.

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)

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