How to create a Chi-square table using python ?

Published: February 20, 2019

DMCA.com Protection Status

Example of python code to create a Chi-square table. Note: the code works only with a degree of freedom (df) greater than 2, since the code is based of the Newton method with starting value the approximation x0=df. This approximation does not work for df =1 and 2 (problem of convergence) but work well with df > 2.

How to create a Chi-square table using python ?
How to create a Chi-square table using python ?

from scipy import misc 
from scipy import stats

PValueList = [0.995, 0.99, 0.975, 0.95, 0.90, 0.10, 0.05, 0.025, 0.01, 0.005]

global pvalue, dfreedom

def newtons_method(f, x, tolerance=0.0001):
    while True:
        x1 = x - f(x) / misc.derivative(f, x) 
        t = abs(x1 - x)
        if t < tolerance:
            break
        x = x1
    return x

def f(x):
    return 1 - stats.chi2.cdf(x, dfreedom) - pvalue

print(  'df\p' , '| ', PValueList[0], ' | ', PValueList[1], ' | ', PValueList[2], ' | ', \
                      PValueList[3], ' | ', PValueList[4], ' | ', PValueList[5], ' | ', \
                      PValueList[6], ' | ', PValueList[7], ' | ', PValueList[8], ' | ', \
                      PValueList[9] )

for i in range(3,10):
    dfreedom = i 
    Result = []
    for pvalue in PValueList:
        x0 = dfreedom  # x0 approximation
        x = newtons_method(f, x0)
        Result.append(x)
    for i in range(10):
        Result[i] = round(Result[i],3)
    print( dfreedom, ' | ', Result[0], ' | ', Result[1], ' | ', Result[2], ' | ', Result[3], ' | ', \
          Result[4], ' | ', Result[5], ' | ', Result[6], ' | ', Result[7], ' | ', \
          Result[8], ' | ', Result[9] )
Image

of