public function testChiSquareSimple() { $this->assertEquals(1.44, PearsonChiSquare::chiSquare(array(44, 56), array(0.5, 0.5)), '', 1.0E-5); $this->assertEquals(4.54, PearsonChiSquare::chiSquare(array(14, 21, 25), array(0.167, 0.483, 0.35)), '', 0.01); $this->assertEquals(135.93, PearsonChiSquare::chiSquare(array(700, 790, 30, 40), array(0.54, 0.4, 0.05, 0.01)), '', 0.01); $this->assertEquals(0.35, PearsonChiSquare::chiSquare(array(423, 133), array(0.75, 0.25)), '', 0.1); }
/** * Checks that resulting distribution of binary values is * approximately same. * * @param string $bytes to check */ public static function pvalue($bytes) { $hist = array(); // histogram $freq = array(); // expected frequency $N = 256; for ($i = 0; $i < $N; $i++) { $hist[$i] = 0; $freq[$i] = 1.0 / $N; } foreach (unpack('C*', $bytes) as $char) { $hist[$char]++; } $chisqr = PearsonChiSquare::chiSquare($hist, $freq); return PearsonChiSquare::pvalue($N - 1, $chisqr); }