"ivreg"
ObjectsR/ivregDiagnostics.R
ivregDiagnostics.Rd
Methods for computing deletion and other regression diagnostics for 2SLS regression.
It's generally more efficient to compute the deletion diagnostics via the influence
method and then to extract the various specific diagnostics with the methods for
"influence.ivreg"
objects. Other diagnostics for linear models, such as
added-variable plots (avPlots
) and component-plus-residual
plots (crPlots
), also work, as do effect plots
(e.g., predictorEffects
) with residuals (see the examples below).
The pointwise confidence envelope for the qqPlot
method assumes an independent random sample
from the t distribution with degrees of freedom equal to the residual degrees of
freedom for the model and so are approximate, because the studentized residuals aren't
independent.
For additional information, see the vignette Diagnostics for 2SLS Regression.
# S3 method for class 'ivreg'
influence(
model,
sigma. = n <= 1000,
type = c("stage2", "both", "maximum"),
applyfun = NULL,
ncores = NULL,
...
)
# S3 method for class 'ivreg'
rstudent(model, ...)
# S3 method for class 'ivreg'
cooks.distance(model, ...)
# S3 method for class 'influence.ivreg'
dfbeta(model, ...)
# S3 method for class 'ivreg'
dfbeta(model, ...)
# S3 method for class 'ivreg'
hatvalues(model, type = c("stage2", "both", "maximum", "stage1"), ...)
# S3 method for class 'influence.ivreg'
rstudent(model, ...)
# S3 method for class 'influence.ivreg'
hatvalues(model, ...)
# S3 method for class 'influence.ivreg'
cooks.distance(model, ...)
# S3 method for class 'influence.ivreg'
qqPlot(
x,
ylab = paste("Studentized Residuals(", deparse(substitute(x)), ")", sep = ""),
distribution = c("t", "norm"),
...
)
# S3 method for class 'ivreg'
influencePlot(model, ...)
# S3 method for class 'influence.ivreg'
influencePlot(model, ...)
# S3 method for class 'ivreg'
infIndexPlot(model, ...)
# S3 method for class 'influence.ivreg'
infIndexPlot(model, ...)
# S3 method for class 'influence.ivreg'
model.matrix(object, ...)
# S3 method for class 'ivreg'
avPlots(model, terms, ...)
# S3 method for class 'ivreg'
avPlot(model, ...)
# S3 method for class 'ivreg'
mcPlots(model, terms, ...)
# S3 method for class 'ivreg'
mcPlot(model, ...)
# S3 method for class 'ivreg'
Boot(
object,
f = coef,
labels = names(f(object)),
R = 999,
method = "case",
ncores = 1,
...
)
# S3 method for class 'ivreg'
crPlots(model, terms, ...)
# S3 method for class 'ivreg'
crPlot(model, ...)
# S3 method for class 'ivreg'
ceresPlots(model, terms, ...)
# S3 method for class 'ivreg'
ceresPlot(model, ...)
# S3 method for class 'ivreg'
plot(x, ...)
# S3 method for class 'ivreg'
qqPlot(x, distribution = c("t", "norm"), ...)
# S3 method for class 'ivreg'
outlierTest(model, ...)
# S3 method for class 'ivreg'
spreadLevelPlot(x, main = "Spread-Level Plot", ...)
# S3 method for class 'ivreg'
ncvTest(model, ...)
# S3 method for class 'ivreg'
deviance(object, ...)
# S3 method for class 'rivreg'
influence(model, ...)
A "ivreg"
or "influence.ivreg"
object.
If TRUE
(the default for 1000 or fewer cases), the deleted value
of the residual standard deviation is computed for each case; if FALSE
, the
overall residual standard deviation is used to compute other deletion diagnostics.
If "stage2"
(the default), hatvalues are for the second stage regression;
if "both"
, the hatvalues are the geometric mean of the casewise hatvalues for the
two stages; if "maximum"
, the hatvalues are the larger of the casewise
hatvalues for the two stages. In computing the geometric mean or casewise maximum hatvalues,
the hatvalues for each stage are first divided by their average (number of coefficients in
stage regression/number of cases); the geometric mean or casewise maximum values are then
multiplied by the average hatvalue from the second stage.
Optional loop replacement function that should work like
lapply
with arguments function(X, FUN, ...)
. The default
is to use a loop unless the ncores
argument is specified (see below).
Numeric, number of cores to be used in parallel computations. If set
to an integer the applyfun
is set to use either parLapply
(on Windows) or
mclapply
(otherwise) with the desired number of cores.
arguments to be passed down.
The vertical axis label.
"t"
(the default) or "norm"
.
Terms for which added-variable plots are to be constructed; the default,
if the argument isn't specified, is the "regressors"
component of the model formula.
see Boot
.
only "case"
(case resampling) is supported: see Boot
.
Main title for the graph.
In the case of influence.ivreg
, an object of class "influence.ivreg"
with the following components:
coefficients
the estimated regression coefficients
model
the model matrix
dfbeta
influence on coefficients
sigma
deleted values of the residual standard deviation
dffits
overall influence on the regression coefficients
cookd
Cook's distances
hatvalues
hatvalues
rstudent
Studentized residuals
df.residual
residual degrees of freedom
In the case of other methods, such as rstudent.ivreg
or
rstudent.influence.ivreg
, the corresponding diagnostic statistics.
Many other methods (e.g., crPlot.ivreg
, avPlot.ivreg
, Effect.ivreg
)
draw graphs.
kmenta.eq1 <- ivreg(Q ~ P + D | D + F + A, data = Kmenta)
summary(kmenta.eq1)
#>
#> Call:
#> ivreg(formula = Q ~ P + D | D + F + A, data = Kmenta)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -3.4305 -1.2432 -0.1895 1.5762 2.4920
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 94.63330 7.92084 11.947 1.08e-09 ***
#> P -0.24356 0.09648 -2.524 0.0218 *
#> D 0.31399 0.04694 6.689 3.81e-06 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
#> Residual standard error: 1.966 on 17 degrees of freedom
#> Multiple R-Squared: 0.7548, Adjusted R-squared: 0.726
#> Wald test: 23.81 on 2 and 17 DF, p-value: 1.178e-05
#>
car::avPlots(kmenta.eq1)
#> Error in avPlot.lm(model, term, main = "", ...): P is not a column of the model matrix.
car::mcPlots(kmenta.eq1)
car::crPlots(kmenta.eq1)
car::ceresPlots(kmenta.eq1)
car::influencePlot(kmenta.eq1)
#> StudRes Hat CookD
#> 1 -1.7359357 0.09079703 0.06956671
#> 2 -1.3686682 0.26453459 0.21973049
#> 3 -2.0995532 0.13849570 0.17147564
#> 4 -0.2010944 0.39711512 0.01508349
#> 5 -0.4505155 0.46498004 0.05257374
car::influenceIndexPlot(kmenta.eq1)
car::qqPlot(kmenta.eq1)
#> 1937 1929
#> 16 8
car::spreadLevelPlot(kmenta.eq1)
#>
#> Suggested power transformation: -2.44685
plot(effects::predictorEffects(kmenta.eq1, residuals = TRUE))
set.seed <- 12321 # for reproducibility
confint(car::Boot(kmenta.eq1, R = 250)) # 250 reps for brevity
#> Bootstrap bca confidence intervals
#>
#> 2.5 % 97.5 %
#> (Intercept) 74.1021451 107.77780398
#> P -0.4454188 0.02161098
#> D 0.1902243 0.40024278
car::outlierTest(kmenta.eq1)
#> No Studentized residuals with Bonferroni p < 0.05
#> Largest |rstudent|:
#> rstudent unadjusted p-value Bonferroni p
#> 1937 -2.099553 0.051985 NA
car::ncvTest(kmenta.eq1)
#> Non-constant Variance Score Test
#> Variance formula: ~ fitted.values
#> Chisquare = 0.2390325, Df = 1, p = 0.62491