code: def _compute_p_value(self, term_i):
          
          if not self._is_fitted:
              raise AttributeError('GAM has not been fitted. Call fit first.')
  
          idxs = self.terms.get_coef_indices(term_i)
          cov = self.statistics_['cov'][idxs][:, idxs]
          coef = self.coef_[idxs]
  
          # center non-intercept term functions
          if isinstance(self.terms[term_i], SplineTerm):
              coef -= coef.mean()
  
          inv_cov, rank = sp.linalg.pinv(cov, return_rank=True)
          score = coef.T.dot(inv_cov).dot(coef)
  
          # compute p-values
          if self.distribution._known_scale:
              # for known scale use chi-squared statistic
              return 1 - sp.stats.chi2.cdf(x=score, df=rank)
          else:
              # if scale has been estimated, prefer to use f-statisitc
              score = score / rank
              return 1 - sp.stats.f.cdf(score, rank, self.statistics_['n_samples'] - self.statistics_['edof'])
docs: compute the p-value of the desired feature
  
          Arguments
          ---------
          term_i : int
              term to select from the data
  
          Returns
          -------
          p_value : float
  
          Notes
          -----
          Wood 2006, section 4.8.5:
              The p-values, calculated in this manner, behave correctly for un-penalized models,
              or models with known smoothing parameters, but when smoothing parameters have
              been estimated, the p-values are typically lower than they should be, meaning that
              the tests reject the null too readily.
  
                  (...)
  
              In practical terms, if these p-values suggest that a term is not needed in a model,
              then this is probably true, but if a term is deemed ‘significant’ it is important to be
              aware that this significance may be overstated.
  
          based on equations from Wood 2006 section 4.8.5 page 191
          and errata https://people.maths.bris.ac.uk/~sw15190/igam/iGAMerrata-12.pdf
  
          the errata shows a correction for the f-statisitc.