#!/usr/bin/python import cgi, json import scipy.stats form = cgi.FieldStorage() percentages = [float(x) for x in form.getlist('percentages')] nums = [float(x) for x in form.getlist('nums')] variance = 0.0 # Assumes the percentages sum to 100 degreesOfFreedom = len(nums) - 1 total = 0 for num in nums: total += num for (percentage, num) in zip(percentages, nums): expected = (percentage / 100.0) * total if expected > 0: variance += pow(num - expected, 2)/expected else: degreesOfFreedom -= 1 print "Content-type: application/json\n\n" print json.write({'prob': float(scipy.stats.chisqprob(variance, degreesOfFreedom)), 'variance': variance, 'degreesOfFreedom': degreesOfFreedom})