fixest (version 0.8.4)

i: Create, or interact variables with, factors

Description

Treat a variable as a factor, or interacts a variable with another treated as a factor. Values to be dropped/kept from the factor can be easily set. Note that to interact fixed-effects, this function should not be used: instead use directly the syntax fe1^fe2.

Usage

i(var, f, f2, ref, drop, keep, drop2, keep2)

interact(var, f, f2, ref, drop, keep, drop2, keep2)

Arguments

var

A vector to be interacted with f. If the other argument f is missing, then this vector will be treated as the argument f.

f

A vector (of any type) that will be treated as a factor. Must be of the same length as var if var is not missing.

f2

A vector (of any type) that will be treated as a factor. Must be of the same length as f.

ref

A single value that belongs to the interacted variable (f). Can be missing, can also be a logical: if TRUE, then the first value of f will be removed..

drop

A vector of regular expressions or integers (if f is integer). If provided, all values from f that match drop will be removed.

keep

A vector of regular expressions or integers (if f is integer). If provided, only the values from f that match keep will be kept.

drop2

A vector of regular expressions or integers (if f2 is integer). If provided, all values from f2 that match drop2 will be removed.

keep2

A vector of regular expressions or integers (if f2 is integer). If provided, only the values from f2 that match keep2 will be kept.

Value

It returns a matrix with number of rows the length of var. The number of columns is equal to the number of cases contained in f minus the reference(s).

Shorthand in <code>fixest</code> estimations

In fixest estimations, instead of using i(var, f, ref), you can instead use the following writing var::f(ref). Note that this way of doing interactions is not endorsed any more and will likely be deprecated in the future.

Details

To interact fixed-effects, this function should not be used: instead use directly the syntax fe1^fe2 in the fixed-effects part of the formula. Please see the details and examples in the help page of feols.

See Also

coefplot to plot interactions, feols for OLS estimation with multiple fixed-effects.

Examples

Run this code
# NOT RUN {
#
# Simple illustration
#

x = 1:10
y = rep(1:4, 3)[1:10]

# interaction
cbind(x, y, i(x, y, 1))

# without interaction
cbind(x, y, i(y, ref = 1))

# You can interact factors too
z = rep(c("a", "b", "c"), c(5, 3, 2))
data.frame(z, y, i(z, y))

#
# In fixest estimations
#

data(base_did)
# We interact the variable 'period' with the variable 'treat'
est_did = feols(y ~ x1 + i(treat, period, 5) | id + period, base_did)

# => special treatment in coefplot
coefplot(est_did)

# Using i() for factors
est_bis = feols(y ~ x1 + i(period, keep = 3:6) + i(treat, period, 5) | id, base_did)

coefplot(est_bis, only.inter = FALSE)

# => special treatment in etable
etable(est_bis, dict = c("6" = "six"))

#
# Interact two factors => f2
#

# To interact two factor, use the argument f2
data(airquality)
aq = airquality
aq$week = aq$Day %/% 7 + 1

# Interacting Month and week:
res_2F = feols(Ozone ~ Solar.R + i(Month, f2 = week), aq)

# Same but dropping the 5th Month and 1st week
res_2F_bis = feols(Ozone ~ Solar.R + i(Month, f2 = week, drop = 5, drop2 = 1), aq)

etable(res_2F, res_2F_bis)

# }

Run the code above in your browser using DataLab