Skip to content

Instantly share code, notes, and snippets.

@dhotson
Created October 29, 2013 09:09
Show Gist options
  • Save dhotson/7211314 to your computer and use it in GitHub Desktop.
Save dhotson/7211314 to your computer and use it in GitHub Desktop.
<?php
function wilson($p, $n) {
$z = 1.9599;
$z2 = pow($z, 2);
return array(
($p + $z2/(2*$n) - $z * sqrt(($p*(1-$p) + $z2/(4*$n)) / $n)) / (1 + $z2/$n),
($p + $z2/(2*$n) + $z * sqrt(($p*(1-$p) + $z2/(4*$n)) / $n)) / (1 + $z2/$n),
);
}
for ($i=0; $i<4; $i++) {
$n = pow(10, $i);
for ($r=0; $r<=5; $r++) {
$rating = $r*2 / 10;
list($lb, $ub) = wilson($rating, $n);
printf("n=%5d | %5.1f -> %5.1f -> %5.1f\n", $n, $lb*100, $rating*100, $ub*100);
}
printf("\n");
}
@dhotson
Copy link
Author

dhotson commented Oct 29, 2013

n=    n |   low ->   mid ->  upper
----------------------------------
n=    1 |   0.0 ->   0.0 ->  79.3
n=    1 |   1.0 ->  20.0 ->  86.7
n=    1 |   3.6 ->  40.0 ->  92.3
n=    1 |   7.7 ->  60.0 ->  96.4
n=    1 |  13.3 ->  80.0 ->  99.0
n=    1 |  20.7 -> 100.0 -> 100.0

n=   10 |   0.0 ->   0.0 ->  27.8
n=   10 |   5.7 ->  20.0 ->  51.0
n=   10 |  16.8 ->  40.0 ->  68.7
n=   10 |  31.3 ->  60.0 ->  83.2
n=   10 |  49.0 ->  80.0 ->  94.3
n=   10 |  72.2 -> 100.0 -> 100.0

n=  100 |   0.0 ->   0.0 ->   3.7
n=  100 |  13.3 ->  20.0 ->  28.9
n=  100 |  30.9 ->  40.0 ->  49.8
n=  100 |  50.2 ->  60.0 ->  69.1
n=  100 |  71.1 ->  80.0 ->  86.7
n=  100 |  96.3 -> 100.0 -> 100.0

n= 1000 |   0.0 ->   0.0 ->   0.4
n= 1000 |  17.6 ->  20.0 ->  22.6
n= 1000 |  37.0 ->  40.0 ->  43.1
n= 1000 |  56.9 ->  60.0 ->  63.0
n= 1000 |  77.4 ->  80.0 ->  82.4
n= 1000 |  99.6 -> 100.0 -> 100.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment