Python 计算随机分布的概率,有了不完全伽马函数gamma
和完全伽马函数Gamma_Half
,就可以计算 的CDF
值了。该值表示一个给定值是随机还是具有某种相关性。
函数本身十分短小:
该函数包含了一些docstring
注释用于解释参数。我们通过自由度和卡方值 x 创建了合适的Fraction
对象。参数 x 可以是float
值或者Fraction
对象,这种灵活性可用于匹配那些完全使用浮点近似的示例。
可以使用Fraction(x/2).limit_denominator(1000)
将x/2Fraction
方法的大小限制为相对少量的数字。这会计算出一个正确的CDF
值,而不是包含几十位数的庞大分数。
以下是从 表中调取的一些示例数据。更多相关信息,可参考维基百科词条chi-squared distribution。
执行以下命令以计算正确的CDF
值:
在给定 和多个自由度的情况下,CDF
函数生成的值与广泛使用的表格中的值一致。第一个示例展示了1个自由度时 为0.004的概率。第二个示例显示了1个自由度时 为10.38的概率。小的 值意味着预期结果和观测结果几乎没有差别。
下面是 表格中的一整行,由一个简单的生成器表达式计算得到:
这些值显示了在1个自由度下,给定 和结果之间的相对似然度。与已发布的结果相比,计算结果在第三位小数上有一些细微差异。这意味着可以使用CDF
计算结果代替在标准统计参考中查找到的 值。
函数CDF()
给出了随机得到的 的概率值。
从已发布的表中可以看出,6个自由度下概率0.05的 值为12.5916。该CDF()
函数的输出如下,显示出与已发布结果较为一致:
回顾先前示例,当时算出 的实际值是19.18。该值为随机的概率是:
当分母限制为1000时,概率为3/775,说明这些数据不太可能是随机的。这意味着我们可以拒绝零假设,并通过更多的分析来确定造成差异的可能原因。