class_docstr: statistics by groups (another version)
  
  groupstats as a class with lazy evaluation (not yet - decorators are still
  missing)
  
  written this time as equivalent of scipy.stats.rankdata
  gs = GroupsStats(X, useranks=True)
  assert_almost_equal(gs.groupmeanfilter, stats.rankdata(X[:,0]), 15)
  
  TODO: incomplete doc strings
class_docstr_tok: ["statistics","by","groups","(","another","version",")","groupstats","as","a","class","with","lazy","evaluation","(","not","yet","-","decorators","are","still","missing",")","written","this","time","as","equivalent","of","scipy.stats.rankdata","gs","=","GroupsStats","(","X",",","useranks=True",")","assert_almost_equal","(","gs.groupmeanfilter",",","stats.rankdata","(","X","[",":",",0","]",")",",","15",")","TODO",":","incomplete","doc","strings"]
docstr: groupdemean
docstr_tok: ["groupdemean"]
code: def groupdemean(self):
      """groupdemean"""
      return self.xx - self.groupmeanfilter
  
imports: from collections import namedtuple
  from statsmodels.compat.python import lzip, lrange
  import copy
  import math
  import numpy
  from numpy.testing import assert_almost_equal, assert_equal
  from scipy import stats, interpolate
  from statsmodels.iolib.table import SimpleTable
  from statsmodels.stats.multitest import multipletests, _ecdf, fdrcorrection, fdrcorrection_twostage
  from statsmodels.graphics import utils
  from statsmodels.tools.sm_exceptions import ValueWarning
label_desc: Use image node_id 4 for calling the GroupsStats obj's underlying member method code with example usage: obj.groupdemean() and returns: unknown