fsw: Conditional F-statistic of Sanderson and Windmeijer (2016)

View source: R/fsw.R

fswR Documentation

Conditional F-statistic of Sanderson and Windmeijer (2016)

Description

fsw calculates the conditional F-statistic of Sanderson and Windmeijer (2016) for each endogenous variable in the model.

Usage

fsw(object)

## S3 method for class 'ivreg'
fsw(object)

## S3 method for class 'iv_robust'
fsw(object)

## S3 method for class 'fixest'
fsw(object)

## S3 method for class 'fsw'
print(x, digits = getOption("digits"), ...)

Arguments

object

An object of class "ivreg" / "iv_robust" / "fixest" containing the results of an IV model fitted by ivreg::ivreg() / AER::ivreg() / estimatr::iv_robust() / fixest::feols() for which to calculate the conditional F-statistics for each endogenous variable.

x

an object of class "fsw".

digits

minimal number of significant digits, see print.default.

...

further arguments passed to or from other methods.

Value

An object of class "fsw" with the following elements:

fswres

matrix with columns for the conditional F-statistics, degrees of freedom, residual degrees of freedom, and p-value. 1 row per endogenous variable.

namesendog

a character vector of the variable names of the endogenous variables.

nendog

the number of endogenous variables.

n

the sample size used for the fitted model.

References

Sanderson E and Windmeijer F. A weak instrument F-test in linear IV models with multiple endogenous variables. Journal of Econometrics, 2016, 190, 2, 212-221, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.jeconom.2015.06.004")}.

Examples

require(ivreg)
require(AER)
require(estimatr)
require(fixest)
set.seed(12345)
n   <- 4000
z1  <- rnorm(n)
z2  <- rnorm(n)
w1  <- rnorm(n)
w2  <- rnorm(n)
u   <- rnorm(n)
x1  <- z1 + z2 + 0.2*u + 0.1*w1 + rnorm(n)
x2  <- z1 + 0.94*z2 - 0.3*u + 0.1*w2 + rnorm(n)
y   <- x1 + x2 + w1 + w2 + u
dat <- data.frame(w1, w2, x1, x2, y, z1, z2)
mod1 <- ivreg::ivreg(y ~ x1 + x2 + w1 + w2 | z1 + z2 + w1 + w2, data = dat)
mod2 <- AER::ivreg(y ~ x1 + x2 + w1 + w2 | z1 + z2 + w1 + w2, data = dat)
mod3 <- estimatr::iv_robust(y ~ x1 + x2 + w1 + w2 | z1 + z2 + w1 + w2,
        data = dat, se_type = "classical")
mod4 <- fixest::feols(y ~ w1 + w2 | x1 + x2 ~ z1 + z2, data = dat)
fsw(mod1)
fsw(mod2)
fsw(mod3)
fsw(mod4)


OneSampleMR documentation built on July 8, 2026, 5:07 p.m.