docstr: Returns the profile log likelihood for regression parameters
  'param_num' at 'b0_vals.'
  
  Parameters
  ----------
  b0_vals : list
      The value of parameters to be tested
  param_num : list
      Which parameters to be tested
  maxiter : int, optional
      How many iterations to use in the EM algorithm.  Default is 30
  ftol : float, optional
      The function tolerance for the EM optimization.
      Default is 10''**''-5
  print_weights : bool
      If true, returns the weights tate maximize the profile
      log likelihood. Default is False
  
  Returns
  -------
  
  test_results : tuple
      The log-likelihood and p-pvalue of the test.
  
  Notes
  -----
  
  The function will warn if the EM reaches the maxiter.  However, when
  optimizing over nuisance parameters, it is possible to reach a
  maximum number of inner iterations for a specific value for the
  nuisance parameters while the resultsof the function are still valid.
  This usually occurs when the optimization over the nuisance parameters
  selects parameter values that yield a log-likihood ratio close to
  infinity.
  
  Examples
  --------
  
  >>> import statsmodels.api as sm
  >>> import numpy as np
  
  # Test parameter is .05 in one regressor no intercept model
  >>> data=sm.datasets.heart.load()
  >>> y = np.log10(data.endog)
  >>> x = data.exog
  >>> cens = data.censors
  >>> model = sm.emplike.emplikeAFT(y, x, cens)
  >>> res=model.test_beta([0], [0])
  >>> res
  (1.4657739632606308, 0.22601365256959183)
  
  #Test slope is 0 in  model with intercept
  
  >>> data=sm.datasets.heart.load()
  >>> y = np.log10(data.endog)
  >>> x = data.exog
  >>> cens = data.censors
  >>> model = sm.emplike.emplikeAFT(y, sm.add_constant(x), cens)
  >>> res = model.test_beta([0], [1])
  >>> res
  (4.623487775078047, 0.031537049752572731)
docstr_tok: ["Returns","the","profile","log","likelihood","for","regression","parameters","'param_num","'","at","'b0_vals",".","'","Parameters","--","--","--","--","--","b0_vals",":","list","The","value","of","parameters","to","be","tested","param_num",":","list","Which","parameters","to","be","tested","maxiter",":","int",",","optional","How","many","iterations","to","use","in","the","EM","algorithm",".","Default","is","30","ftol",":","float",",","optional","The","function","tolerance","for","the","EM","optimization",".","Default","is","10","''","*","*","''","-5","print_weights",":","bool","If","true",",","returns","the","weights","tate","maximize","the","profile","log","likelihood",".","Default","is","False","Returns","--","--","--","-","test_results",":","tuple","The","log-likelihood","and","p-pvalue","of","the","test",".","Notes","--","--","-","The","function","will","warn","if","the","EM","reaches","the","maxiter",".","However",",","when","optimizing","over","nuisance","parameters",",","it","is","possible","to","reach","a","maximum","number","of","inner","iterations","for","a","specific","value","for","the","nuisance","parameters","while","the","resultsof","the","function","are","still","valid",".","This","usually","occurs","when","the","optimization","over","the","nuisance","parameters","selects","parameter","values","that","yield","a","log-likihood","ratio","close","to","infinity",".","Examples","--","--","--","--",">",">",">","import","statsmodels.api","as","sm",">",">",">","import","numpy","as","np","#","Test","parameter","is",".05","in","one","regressor","no","intercept","model",">",">",">","data=sm.datasets.heart.load","(",")",">",">",">","y","=","np.log10","(","data.endog",")",">",">",">","x","=","data.exog",">",">",">","cens","=","data.censors",">",">",">","model","=","sm.emplike.emplikeAFT","(","y",",","x",",","cens",")",">",">",">","res=model.test_beta","(","[","0","]",",","[","0","]",")",">",">",">","res","(","1.4657739632606308",",","0.22601365256959183",")","#","Test","slope","is","0","in","model","with","intercept",">",">",">","data=sm.datasets.heart.load","(",")",">",">",">","y","=","np.log10","(","data.endog",")",">",">",">","x","=","data.exog",">",">",">","cens","=","data.censors",">",">",">","model","=","sm.emplike.emplikeAFT","(","y",",","sm.add_constant","(","x",")",",","cens",")",">",">",">","res","=","model.test_beta","(","[","0","]",",","[","1","]",")",">",">",">","res","(","4.623487775078047",",","0.031537049752572731",")"]
code: def test_beta(
      self,
      b0_vals,
      param_nums,
      ftol=10**-5,
      maxiter=30,
      print_weights=1,
  ):
      """
      Returns the profile log likelihood for regression parameters
      'param_num' at 'b0_vals.'
  
      Parameters
      ----------
      b0_vals : list
          The value of parameters to be tested
      param_num : list
          Which parameters to be tested
      maxiter : int, optional
          How many iterations to use in the EM algorithm.  Default is 30
      ftol : float, optional
          The function tolerance for the EM optimization.
          Default is 10''**''-5
      print_weights : bool
          If true, returns the weights tate maximize the profile
          log likelihood. Default is False
  
      Returns
      -------
  
      test_results : tuple
          The log-likelihood and p-pvalue of the test.
  
      Notes
      -----
  
      The function will warn if the EM reaches the maxiter.  However, when
      optimizing over nuisance parameters, it is possible to reach a
      maximum number of inner iterations for a specific value for the
      nuisance parameters while the resultsof the function are still valid.
      This usually occurs when the optimization over the nuisance parameters
      selects parameter values that yield a log-likihood ratio close to
      infinity.
  
      Examples
      --------
  
      >>> import statsmodels.api as sm
      >>> import numpy as np
  
      # Test parameter is .05 in one regressor no intercept model
      >>> data=sm.datasets.heart.load()
      >>> y = np.log10(data.endog)
      >>> x = data.exog
      >>> cens = data.censors
      >>> model = sm.emplike.emplikeAFT(y, x, cens)
      >>> res=model.test_beta([0], [0])
      >>> res
      (1.4657739632606308, 0.22601365256959183)
  
      #Test slope is 0 in  model with intercept
  
      >>> data=sm.datasets.heart.load()
      >>> y = np.log10(data.endog)
      >>> x = data.exog
      >>> cens = data.censors
      >>> model = sm.emplike.emplikeAFT(y, sm.add_constant(x), cens)
      >>> res = model.test_beta([0], [1])
      >>> res
      (4.623487775078047, 0.031537049752572731)
      """
      censors = self.model.censors
      endog = self.model.endog
      exog = self.model.exog
      uncensored = (censors == 1).flatten()
      censored = (censors == 0).flatten()
      uncens_endog = endog[uncensored]
      uncens_exog = exog[uncensored, :]
      reg_model = OLS(uncens_endog, uncens_exog).fit()
      llr, pval, new_weights = reg_model.el_test(
          b0_vals, param_nums, return_weights=True
      )  # Needs to be changed
      km = self.model._make_km(endog, censors).flatten()  # when merged
      uncens_nobs = self.model.uncens_nobs
      F = np.asarray(new_weights).reshape(uncens_nobs)
      # Step 0 ^
      params = self.params()
      survidx = np.where(censors == 0)
      survidx = survidx[0] - np.arange(len(survidx[0]))
      numcensbelow = np.int_(np.cumsum(1 - censors))
      if len(param_nums) == len(params):
          llr = self._EM_test(
              [],
              F=F,
              params=params,
              param_nums=param_nums,
              b0_vals=b0_vals,
              survidx=survidx,
              uncens_nobs=uncens_nobs,
              numcensbelow=numcensbelow,
              km=km,
              uncensored=uncensored,
              censored=censored,
              ftol=ftol,
              maxiter=25,
          )
          return llr, chi2.sf(llr, self.model.nvar)
      else:
          x0 = np.delete(params, param_nums)
          try:
              res = optimize.fmin(
                  self._EM_test,
                  x0,
                  (
                      params,
                      param_nums,
                      b0_vals,
                      F,
                      survidx,
                      uncens_nobs,
                      numcensbelow,
                      km,
                      uncensored,
                      censored,
                      maxiter,
                      ftol,
                  ),
                  full_output=1,
                  disp=0,
              )
  
              llr = res[1]
              return llr, chi2.sf(llr, len(param_nums))
          except np.linalg.LinAlgError:
              return np.inf, 0
  
imports: import warnings
  import numpy
  from scipy import optimize
  from scipy.stats import chi2
  from statsmodels.regression.linear_model import OLS, WLS
  from statsmodels.tools import add_constant
  from statsmodels.tools.sm_exceptions import IterationLimitWarning
  from .descriptive import _OptFuncts
label_desc: Use image node_id 3 for calling the AFTResults obj's underlying member method code with example usage: obj.test_beta(b0_vals, param_nums, ftol, maxiter, print_weights) and returns: llr,  chi2, llr,  chi2, np,  int