code: def computeTopDownHistoricalProportions(self, iAllLevelsDataset):
      self.mAvgHistProp = {}
      self.mPropHistAvg = {}
      # Compute these proportions only on Estimation.
      lEstim = self.getEstimPart(iAllLevelsDataset)
      for level in sorted(self.mStructure.keys()):
          if level > 0:
              for col in sorted(self.mStructure[level].keys()):
                  self.mAvgHistProp[col] = {}
                  self.mPropHistAvg[col] = {}
                  for col1 in sorted(self.mStructure[level][col]):
                      self.mAvgHistProp[col][col1] = (
                          lEstim[col1] / lEstim[col]
                      ).mean()
                      self.mPropHistAvg[col][col1] = (
                          lEstim[col1].mean() / lEstim[col].mean()
                      )
      # print("AvgHitProp\n", self.mAvgHistProp);
      # print("PropHistAvg\n", self.mPropHistAvg);
      pass
  
imports: import pandas
  import numpy
  from ..None import ForecastEngine
  from .None import Options
  from .None import Perf
  from .None import Utils
  from .None import Plots
  import time
label_desc: Use image node_id 18 for calling the cSignalHierarchy obj's underlying member method code with example usage: obj.computeTopDownHistoricalProportions(iAllLevelsDataset) without return types