code: def cost_function(params, pol, y, alpha):
      # this should be the MSE or log likelihood value
      lin_pred = np.dot(pol.basis, params)
      gaussian = Gaussian()
      expval = gaussian.link.inverse(lin_pred)
      loglike = gaussian.loglike(y, expval)
  
      # this is the vale of the GAM penalty. For the example polynomial
      itg = integral(params)
  
      # return the cost function of the GAM for the given polynomial
      return loglike - alpha * itg, loglike, itg
  
imports: import os
  import numpy
  from numpy.testing import assert_allclose
  import pandas
  from scipy.linalg import block_diag
  import pytest
  from statsmodels.tools.linalg import matrix_sqrt
  from statsmodels.gam.smooth_basis import UnivariatePolynomialSmoother, PolynomialSmoother, BSplines, GenericSmoothers, UnivariateCubicSplines, CyclicCubicSplines
  from statsmodels.gam.generalized_additive_model import GLMGam, LogitGam, make_augmented_matrix, penalized_wls
  from statsmodels.gam.gam_cross_validation.gam_cross_validation import MultivariateGAMCV, MultivariateGAMCVPath, _split_train_test_smoothers
  from statsmodels.gam.gam_penalties import UnivariateGamPenalty, MultivariateGamPenalty
  from statsmodels.gam.gam_cross_validation.cross_validators import KFold
  from statsmodels.genmod.generalized_linear_model import GLM
  from statsmodels.genmod.families.family import Gaussian
  from statsmodels.genmod.generalized_linear_model import lm
label_desc: Use image node_id 5 for calling a global function with example usage: cost_function(params, pol, y, alpha) and returns: unknown,  loglike,  itg