--- title: "Introduction to hcinfer" vignette: > %\VignetteIndexEntry{Introduction to hcinfer} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4.5 ) options(hcinfer.use_emoji = FALSE) ``` This vignette gives a compact overview of `hcinfer`; no prior reading is needed. ## Data and model The examples use the `PublicSchools` data included with the package. The model is the quadratic income model used in the HCbeta application; the `lm()` call omits observations with missing model variables (Wisconsin expenditure is missing, so the model fits 50 of the 51 observations). ```{r} library(hcinfer) schools <- PublicSchools schools$income_scaled <- schools$income / 10000 schools$income_scaled_sq <- schools$income_scaled^2 fit <- lm(expenditure ~ income_scaled + income_scaled_sq, data = schools) fit ``` ## Available estimators Use `hc_methods()` to list the estimators and their default arguments. ```{r} hc_methods() ``` ## Robust inference Use `hcinfer()` to perform heteroskedasticity-robust inference for an `lm()` object. The default estimator is HCbeta. ```{r} result <- hcinfer(fit) result ``` Use `summary()` for a readable report with tests on regression coefficients, confidence intervals, leverage diagnostics, and heteroskedasticity-robust diagnostics. ```{r} summary(result) ``` You can choose another covariance matrix estimator with `type`. ```{r} result_hc3 <- hcinfer(fit, type = "hc3") result_hc3 ``` ## Test extraction Use `tests()` to extract coefficient-level Wald tests as a tibble. ```{r} tests(result) ``` Select a single coefficient by name or position. ```{r} tests(result, parm = "income_scaled_sq") tests(result, parm = 3) ``` Change the significance level (`alpha`) to update the rejection decision. The test statistic and p-value are not recomputed. ```{r} tests(result, alpha = 0.10) ``` ## Confidence interval extraction Use `confint()` to extract heteroskedasticity-robust confidence intervals. ```{r} confint(result) ``` You can select a coefficient and change the confidence level. ```{r} confint(result, parm = "income_scaled_sq") confint(result, parm = "income_scaled_sq", level = 0.90) ``` ## Coefficients and covariance matrices The `coef()` method returns the OLS estimates stored in `result`. ```{r} coef(result) ``` The `vcov()` method extracts the robust covariance matrix stored in the `hcinfer` object. ```{r} robust_vcov <- vcov(result) robust_vcov ``` Heteroskedasticity-robust standard errors are the square roots of the diagonal entries. ```{r} sqrt(diag(robust_vcov)) ``` ## Covariance-only workflow Use `vcov_hc()` when you only need the heteroskedasticity-robust covariance matrix and diagnostics. ```{r} cov_hcbeta <- vcov_hc(fit) cov_hcbeta ``` The same `summary()` and `vcov()` generics work for covariance objects. ```{r} summary(cov_hcbeta) vcov(cov_hcbeta) ``` You can also choose another estimator and pass its method constants. ```{r} cov_hc5 <- vcov_hc(fit, type = "hc5", k = 0.7) cov_hc5 ``` ## Plots Use `plot()` on an `hcinfer` object to display robust confidence intervals. ```{r intro-ci-plot, fig.alt = "Robust confidence intervals for the public-schools regression coefficients."} plot(result) ``` Select one coefficient with `parm`. ```{r intro-ci-single-plot, fig.alt = "Robust confidence interval for the quadratic income coefficient."} plot(result, parm = "income_scaled_sq") ``` Use `plot()` on a `vcov_hc()` object to show leverage values and HC adjustment factors. ```{r intro-vcov-plot, fig.alt = "HCbeta adjustment factors plotted against leverage values for the public-schools regression."} plot(cov_hcbeta) ``` Set `label_top` to control how many observations with the largest adjustment factors are labeled. ```{r intro-hc3-plot, fig.alt = "HC3 adjustment factors plotted against leverage values with the two largest weights labeled."} plot(vcov_hc(fit, type = "hc3"), label_top = 2) ``` ## Typical workflow The routine analysis fits a model, passes it to `hcinfer()`, and inspects the results with `summary()`, `tests()`, `confint()`, and `plot()`. ```{r, eval = FALSE} fit <- lm(y ~ x1 + x2, data = data) result <- hcinfer(fit, type = "hcbeta") summary(result) tests(result) confint(result) plot(result) ```