code: def test_ceres_poisson(self, close_figures):
      np.random.seed(3446)
  
      n = 100
      p = 3
      exog = np.random.normal(size=(n, p))
      exog[:, 0] = 1
      lin_pred = 4 + exog[:, 1] + 0.2 * exog[:, 2] ** 2
      expval = np.exp(lin_pred)
      endog = np.random.poisson(expval)
  
      model = sm.GLM(endog, exog, family=sm.families.Poisson())
      results = model.fit()
  
      for focus_col in 1, 2:
          for j in 0, 1:
              if j == 0:
                  fig = plot_ceres_residuals(results, focus_col)
              else:
                  fig = results.plot_ceres_residuals(focus_col)
              ax = fig.get_axes()[0]
              add_lowess(ax)
              ax.set_position([0.1, 0.1, 0.8, 0.77])
              effect_str = [
                  "Intercept",
                  "Linear effect, slope=1",
                  "Quadratic effect",
              ][focus_col]
              ti = "CERES plot"
              if j == 1:
                  ti += " (called as method)"
              ax.set_title(ti + "\nPoisson regression\n" + effect_str)
              close_or_save(pdf, fig)
  
imports: import numpy
  from numpy.testing import assert_array_less, assert_equal, assert_raises
  from pandas import DataFrame, Series
  import pytest
  import statsmodels.api
  from statsmodels.graphics.regressionplots import abline_plot, add_lowess, influence_plot, plot_added_variable, plot_ccpr, plot_ccpr_grid, plot_ceres_residuals, plot_fit, plot_leverage_resid2, plot_partial_residuals, plot_partregress_grid, plot_regress_exog
label_desc: Use image node_id 1 for calling the TestCERESPlot obj's underlying member method code with example usage: obj.test_ceres_poisson(close_figures) without return types