code: def kappa_statistic(self):
          r
          if self.population() == 0:
              return float('NaN')
          random_accuracy = (
              (self._tn + self._fp) * (self._tn + self._fn)
              + (self._fn + self._tp) * (self._fp + self._tp)
          ) / self.population() ** 2
          return (self.accuracy() - random_accuracy) / (1 - random_accuracy)
docs: r"""Return κ statistic.
  
          The κ statistic is defined as:
          :math:`\kappa = \frac{accuracy - random~ accuracy}
          {1 - random~ accuracy}`
  
          The κ statistic compares the performance of the classifier relative to
          the performance of a random classifier. :math:`\kappa` = 0 indicates
          performance identical to random. :math:`\kappa` = 1 indicates perfect
          predictive success. :math:`\kappa` = -1 indicates perfect predictive
          failure.
  
          Returns
          -------
          float
              The κ statistic of the confusion table
  
          Example
          -------
          >>> ct = ConfusionTable(120, 60, 20, 30)
          >>> ct.kappa_statistic()
          0.5344129554655871