code: def test_basic(self):
      res1 = self.res1
      res2 = self.res2
  
      assert_allclose(res1.llf, res2.ll, rtol=1e-8)
      assert_allclose(res1.llnull, res2.ll_0, rtol=5e-6)
      pt2 = res2.params_table
      # Stata has different parameterization of alpha for negbin
      k = res1.model.exog.shape[1]
      assert_allclose(res1.params[:k], res2.params[:k], atol=1e-5)
      assert_allclose(res1.bse[:k], pt2[:k, 1], atol=1e-5)
      assert_allclose(
          res1.tvalues[:k], pt2[:k, 2], rtol=5e-4, atol=5e-4
      )
      assert_allclose(
          res1.pvalues[:k], pt2[:k, 3], rtol=5e-4, atol=1e-7
      )
  
      assert_equal(res1.df_model, res2.df_m)
      assert_allclose(res1.aic, res2.icr[-2], rtol=1e-8)
      assert_allclose(res1.bic, res2.icr[-1], rtol=1e-8)
      nobs = res1.model.endog.shape[0]
      assert_equal((res1.model.endog < 1).sum(), 0)
      # df_resid not available in Stata
      assert_equal(res1.df_resid, nobs - len(res1.params))
  
imports: import warnings
  import numpy
  from numpy.testing import assert_allclose, assert_equal
  from statsmodels import datasets
  from statsmodels.tools.tools import add_constant
  from statsmodels.tools.testing import Holder
  from statsmodels.tools.sm_exceptions import ConvergenceWarning
  from statsmodels.distributions.discrete import truncatedpoisson, truncatednegbin
  from statsmodels.discrete.truncated_model import TruncatedLFPoisson, TruncatedLFNegativeBinomialP, HurdleCountModel
  from statsmodels.sandbox.regression.tests.test_gmm_poisson import DATA
  from .results.results_discrete import RandHIE
  from .results import results_truncated
  from .results import results_truncated_st
label_desc: Use image node_id 1 for calling the CheckTruncatedST obj's underlying member method code with example usage: obj.test_basic() without return types