/**
  * Calculates the amount of entropy in the given data.
  *
  * @param mixed $data
  * @return float
  */
 public static function calculateEntropy($data)
 {
     self::$entropyNumEvents = 0;
     self::$entropyTokenFreqs = array();
     self::$entropyTokenProbs = array();
     self::$entropyValue = 0;
     self::$entropyData = $data;
     self::$entropyNumEvents = strlen((string) self::$entropyData);
     self::entropyFrequencies();
     foreach (self::$entropyTokenFreqs as $token => $frequency) {
         self::$entropyTokenProbs[$token] = $frequency / self::$entropyNumEvents;
         self::$entropyValue += self::$entropyTokenProbs[$token] * log(self::$entropyTokenProbs[$token], 2);
     }
     self::$entropyValue = -self::$entropyValue;
     return self::$entropyValue;
 }