X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=erange.git;a=blobdiff_plain;f=cistematic%2Fcisstat%2Fchi2.py;fp=cistematic%2Fcisstat%2Fchi2.py;h=f6fc3dd9c8b221af54ecf526556b5ea5ba9360eb;hp=0000000000000000000000000000000000000000;hb=bc30aca13e5ec397c92e67002fbf7a103130b828;hpb=0d3e3112fd04c2e6b44a25cacef1d591658ad181 diff --git a/cistematic/cisstat/chi2.py b/cistematic/cisstat/chi2.py new file mode 100644 index 0000000..f6fc3dd --- /dev/null +++ b/cistematic/cisstat/chi2.py @@ -0,0 +1,53 @@ +########################################################################### +# # +# C O P Y R I G H T N O T I C E # +# Copyright (c) 2003-10 by: # +# * California Institute of Technology # +# # +# All Rights Reserved. # +# # +# Permission is hereby granted, free of charge, to any person # +# obtaining a copy of this software and associated documentation files # +# (the "Software"), to deal in the Software without restriction, # +# including without limitation the rights to use, copy, modify, merge, # +# publish, distribute, sublicense, and/or sell copies of the Software, # +# and to permit persons to whom the Software is furnished to do so, # +# subject to the following conditions: # +# # +# The above copyright notice and this permission notice shall be # +# included in all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS # +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN # +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # +# SOFTWARE. # +########################################################################### +# +# + +def chiSquare(A, B, C, D): + """ Chi-square for a 2x2 table, as described in Gopal Kanji's 100 Statistical Tests + note that we only have one degree of freedom, work best if no cell is less than 3. + Table has form: + A | B | A + B + ----------------------------- + C | D | C + D + ----------------------------- + A + C | B + D | A + B + C + D + """ + chiAB = long(A + B) + chiCD = long(C +D) + chiAC = long(A + C) + chiBD = long(B + D) + chiAD = long(A * D) + chiBC = long(B * C) + chiN = long(chiAB + chiCD) + + chiNum = long(chiN - 1) * long(pow(chiAD - chiBC, 2)) + chiDen = long(chiAB * chiAC * chiBD * chiCD) + + return long(chiNum / chiDen) \ No newline at end of file