code: def test_statistician_percentile(self):
      self.percentile_sigmas = (0.0, 50.0, 100.0)  # min, median, max
      self.statistician = (
          extensions.variable_statistics_plot.Statistician(
              collect_mean=True,
              collect_std=True,
              percentile_sigmas=self.percentile_sigmas,
          )
      )
      stat = self.statistician(self.x, axis=None, dtype=self.x.dtype)
  
      for s in six.itervalues(stat):
          assert s.dtype == self.x.dtype
  
      testing.assert_allclose(stat["mean"], numpy.mean(self.x))
      testing.assert_allclose(stat["std"], numpy.std(self.x))
  
      percentile = stat["percentile"]
      assert len(percentile) == 3
  
      testing.assert_allclose(percentile[0], numpy.min(self.x))
      testing.assert_allclose(percentile[1], numpy.median(self.x))
      testing.assert_allclose(percentile[2], numpy.max(self.x))
  
file_path: chainer/tests/chainer_tests/training_tests/extensions_tests/test_variable_statistics_plot.py
imports: import os
  import unittest
  import numpy
  import six
  import chainer
  from chainer import testing
  from chainer.training import extensions
label_desc: Use image node_id 2 for calling the TestStatistician obj's underlying member method code with example usage: obj.test_statistician_percentile() without return types