# estimation.Fepois { #pyfixest.estimation.Fepois }

`estimation.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()](/reference/estimation.fepois.qmd) function.
Note that no demeaning is performed in this class: demeaning is performed in the
[FixestMulti](/reference/estimation.fixest_multi.qmd) 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](#pyfixest.estimation.Fepois.get_fit) | Fit a Poisson Regression Model via Iterated Weighted Least Squares (IWLS). |
| [predict](#pyfixest.estimation.Fepois.predict) | Return predicted values from regression model. |
| [prepare_model_matrix](#pyfixest.estimation.Fepois.prepare_model_matrix) | Prepare model inputs for estimation. |
| [resid](#pyfixest.estimation.Fepois.resid) | Return residuals from regression model. |
| [to_array](#pyfixest.estimation.Fepois.to_array) | Turn estimation DataFrames to np arrays. |

### get_fit { #pyfixest.estimation.Fepois.get_fit }

`estimation.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 { #pyfixest.estimation.Fepois.predict }

`estimation.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 { #pyfixest.estimation.Fepois.prepare_model_matrix }

`estimation.Fepois.prepare_model_matrix()`

Prepare model inputs for estimation.

### resid { #pyfixest.estimation.Fepois.resid }

`estimation.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 { #pyfixest.estimation.Fepois.to_array }

`estimation.Fepois.to_array()`

Turn estimation DataFrames to np arrays.