pyhdfe.Algorithm.residualize

Algorithm.residualize(matrix, weights=None, errors='raise')

Absorb the fixed effects into a matrix and return the residuals from a regression of each column of the matrix on the fixed effects.

Warning

This function assumes that all of your data have already been cleaned. For example, it will not drop observations with null values. It will also not do any checks on provided weights (e.g., if they are all larger than zero).

Parameters
  • matrix (array-like) – The two-dimensional array to residualize, which should have a number of rows equal to Algorithm.observations (i.e., the number of rows in the ids passed to create()).

  • weights (array-like, optional) – Two-dimensional array with weights, which should have a number of rows equal to Algorithm.observations (i.e., the number of rows in the ids passed to create()), and one column. Currently supported algorithms are 'within', 'dummy', and non-accelerated 'map'.

  • errors (str, optional) – If ‘raise’, the default, any errors raise an exception. If ‘warn’, non-critical errors will generate a warning and residualization will continue. For example, if an iteration limit is hit, ‘raise’ will raise an exception, while ‘warn’ will warn that the limit is hit but still return the non-converged, partially residualized matrix.

Returns

Residuals from a (potentially weighted) regression of each column of matrix on the fixed effects. This matrix has the same number of columns as matrix. If any singleton observations were dropped when initializing the Algorithm (this is the default behavior of create()), the residualized matrix will have correspondingly fewer rows.

Return type

ndarray

Examples