# estimation.fepois_.Fepois

`estimation.fepois_.Fepois(self, FixestFormula, data, ssc_dict, drop_singletons, drop_intercept, weights, weights_type, collin_tol, fixef_tol, lookup_demeaned_data, tol, maxiter, solver='np.linalg.solve', store_data=True, copy_data=True, lean=False)`

Estimate a Poisson regression model.

Non user-facing class to estimate a Poisson regression model via Iterated Weighted Least Squares (IWLS).

Inherits from the Feols class. Users should not directly instantiate this class, but rather use the fepois() function. Note that no demeaning is performed in this class: demeaning is performed in the FixestMulti class (to allow for caching of demeaned variables for multiple estimation).

The method implements the algorithm from Stata’s `ppmlhdfe` module.

## Attributes

Name | Type | Description
--- | --- | ---
Y | np.ndarray | Dependent variable, a two-dimensional numpy array.
X | np.ndarray | Independent variables, a two-dimensional numpy array.
fe | np.ndarray | Fixed effects, a two-dimensional numpy array or None.
weights | np.ndarray | Weights, a one-dimensional numpy array or None.
coefnames | list[str] | Names of the coefficients in the design matrix X.
drop_singletons | bool | Whether to drop singleton fixed effects.
collin_tol | float | Tolerance level for the detection of collinearity.
maxiter | Optional[int], default=25 | Maximum number of iterations for the IRLS algorithm.
tol | Optional[float], default=1e-08 | Tolerance level for the convergence of the IRLS algorithm.
solver | (str, default is np.linalg.solve) | Solver to use for the estimation. Alternative is ‘np.linalg.lstsq’.
fixef_tol | float, default = 1e-08. | Tolerance level for the convergence of the demeaning algorithm.
solver |  |
weights_name | Optional[str] | Name of the weights variable.
weights_type | Optional[str] | Type of weights variable.
_data | pd.DataFrame | The data frame used in the estimation. None if arguments `lean = True` or `store_data = False`.

## Methods

Name | Description
--- | ---
get_fit | Fit a Poisson Regression Model via Iterated Weighted Least Squares (IWLS).
predict | Return predicted values from regression model.
prepare_model_matrix | Prepare model inputs for estimation.
resid | Return residuals from regression model.
to_array | Turn estimation DataFrames to np arrays.

### get_fit

`estimation.fepois_.Fepois.get_fit()`

Fit a Poisson Regression Model via Iterated Weighted Least Squares (IWLS).

#### Returns

Type | Description
--- | ---
None |

#### Attributes

Name | Type | Description
--- | --- | ---
beta_hat | np.ndarray | Estimated coefficients.
Y_hat | np.ndarray | Estimated dependent variable.
u_hat | np.ndarray | Estimated residuals.
weights | np.ndarray | Weights (from the last iteration of the IRLS algorithm).
X | np.ndarray | Demeaned independent variables (from the last iteration of the IRLS algorithm).
Z | np.ndarray | Demeaned independent variables (from the last iteration of the IRLS algorithm).
Y | np.ndarray | Demeaned dependent variable (from the last iteration of the IRLS algorithm).

### predict

`estimation.fepois_.Fepois.predict(newdata=None, atol=1e-06, btol=1e-06, type='link')`

Return predicted values from regression model.

Return a flat np.array with predicted values of the regression model. If new fixed effect levels are introduced in `newdata`, predicted values for such observations will be set to NaN.

#### Parameters

Name | Type | Description | Default
--- | --- | --- | ---
`newdata` | Union[None, pd.DataFrame] | A pd.DataFrame with the new data, to be used for prediction. If None (default), uses the data used for fitting the model. | `None`
`atol` | Float | Stopping tolerance for scipy.sparse.linalg.lsqr(). See https://docs.scipy.org/doc/ scipy/reference/generated/scipy.sparse.linalg.lsqr.html | `1e-6`
`btol` | Float | Another stopping tolerance for scipy.sparse.linalg.lsqr(). See https://docs.scipy.org/doc/ scipy/reference/generated/scipy.sparse.linalg.lsqr.html | `1e-6`
`type` | str | The type of prediction to be computed. Can be either “response” (default) or “link”. If type=“response”, the output is at the level of the response variable, i.e., it is the expected predictor E(Y|X). If “link”, the output is at the level of the explanatory variables, i.e., the linear predictor X @ beta. | `'link'`
`atol` | Float | Stopping tolerance for scipy.sparse.linalg.lsqr(). See https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.lsqr.html | `1e-6`
`btol` | Float | Another stopping tolerance for scipy.sparse.linalg.lsqr(). See https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.lsqr.html | `1e-6`

#### Returns

Type | Description
--- | ---
np.ndarray | A flat array with the predicted values of the regression model.

### prepare_model_matrix

`estimation.fepois_.Fepois.prepare_model_matrix()`

Prepare model inputs for estimation.

### resid

`estimation.fepois_.Fepois.resid(type='response')`

Return residuals from regression model.

#### Parameters

Name | Type | Description | Default
--- | --- | --- | ---
`type` | str | The type of residuals to be computed. Can be either “response” (default) or “working”. | `'response'`

#### Returns

Type | Description
--- | ---
np.ndarray | A flat array with the residuals of the regression model.

### to_array

`estimation.fepois_.Fepois.to_array()`

Turn estimation DataFrames to np arrays.