class_docstr: a wrapper class for two way anova type of analysis with OLS
  
  
  currently mainly to bring things together
  
  Notes
  -----
  unclear: adding multiple test might assume block design or orthogonality
  
  This estimates the full dummy version with OLS.
  The drop first dummy representation can be recovered through the
  transform method.
  
  TODO: add more methods, tests, pairwise, multiple, marginal effects
  try out what can be added for userfriendly access.
  
  missing: ANOVA table
class_docstr_tok: ["a","wrapper","class","for","two","way","anova","type","of","analysis","with","OLS","currently","mainly","to","bring","things","together","Notes","--","--","-","unclear",":","adding","multiple","test","might","assume","block","design","or","orthogonality","This","estimates","the","full","dummy","version","with","OLS",".","The","drop","first","dummy","representation","can","be","recovered","through","the","transform","method",".","TODO",":","add","more","methods",",","tests",",","pairwise",",","multiple",",","marginal","effects","try","out","what","can","be","added","for","userfriendly","access",".","missing",":","ANOVA","table"]
docstr: ttests for no-interaction terms are zero
          
docstr_tok: ["ttests","for","no-interaction","terms","are","zero"]
code: def ttest_interaction(self):
      """ttests for no-interaction terms are zero"""
      # use self.r_nointer instead
      nia = self.n_interaction
      R_nointer = np.hstack(
          (np.zeros((nia, self.nvars - nia)), np.eye(nia))
      )
      # inter_direct = resols_full_dropf.tval[-nia:]
      R_nointer_transf = self.transform.inv_dot_right(R_nointer)
      self.R_nointer_transf = R_nointer_transf
      t_res = self.resols.t_test(R_nointer_transf)
      return t_res
  
imports: from numpy.testing import assert_equal
  import numpy
label_desc: Use image node_id 3 for calling the TwoWay obj's underlying member method code with example usage: obj.ttest_interaction() and returns: t_res