如何在Python中执行卡方拟合优度检验
介绍
数据科学家通常使用统计方法进行假设测试,以从数据集中获取信息。虽然有多种统计方法可用,但本文将讨论卡方拟合优度检验及其在Python中的实现。卡方检验验证分类变量的观察分布是否与期望分布一致。它告诉我们可用的事件值是否与期望值不同。
卡方检验
您可以执行卡方检验来验证观测事件的数据集分布。卡方检验做出了一些假设,这些假设如下:
-
变量独立。
-
只有一种分类特征。
-
每个变量必须包含超过五个频率计数的类别。
-
随机抽样的数据集。
-
每个数据组必须在频率计数中显示相互排斥。
卡方检验统计量
卡方检验使用以下公式进行统计输出:
其中
-
v表示自由度
-
O表示样本观察值
-
E表示总体期望值
-
n表示变量类别计数。
现在让我们学习如何执行卡方检验。
假设测试步骤
执行卡方检验的几个步骤如下:
-
首先,您需要创建Null假设H0和Alternate假设H1。
-
然后,您需要决定接受或拒绝零假设的概率阈值。此阈值的典型值为5%,相应的临界值取决于分布。
-
使用上述公式计算卡方统计量。
-
最后,与临界值进行比较。如果测试静态值大于临界值,则拒绝零假设;否则,无法拒绝零假设。
让我们使用上述步骤实现测试-
在这里,零假设是变量以预定方式分布。而备择假设是变量的分布没有不同。我们将使用两种方法实现卡方检验,如下所述-
使用内置函数实现卡方
语法
此函数接受两个特征,对它们应用卡方公式,并返回卡方检验统计量和p_value。
算法
-
加载所需的依赖项,如scipy和numpy。
-
将要应用测试统计量的特征传递给scipy.stats的卡方函数。
-
获取测试统计量和p_value。
-
基于p-value和卡方统计量接受或拒绝零假设和备用假设。
示例
过程始于加载所有必要的依赖项。
让我们准备演示数据,其中我们将有两列“experience_in_years”和“salary”。 对于此数据,我们将执行卡方检验。
解释
以上代码是Python使用Scipy库内置函数实现卡方检验的实现。从stats导入了chisquare方法,它返回两个值:卡方检验统计量和p-值。此方法取两个特征,并将比较两个变量并应用上述卡方公式来计算卡方统计量。在这里,我们比较的是工作年限和年薪包的关系。
输出
我们可以看到,p-值为0.54,临界值为12.59。检验统计量小于临界值,因此我们可以接受原假设并拒绝备择假设。
从零开始实现卡方检验
语法
使用上述公式计算数据集中每个样本的卡方值,并将它们加在一起得到最终的得分。
算法
-
加载所需的依赖项,如numpy。
-
初始化一个值为0的变量,该变量将存储统计量的最终值。
-
遍历数据中的每个样本,并计算每个样本的统计量,并将其添加到包含统计量最终值的变量中。
-
计算统计量后,接受或拒绝原假设和备择假设。
示例
该方法将使用公式实现卡方适合度检验,这种方法将产生与上述方法相同的结果。
解释
上述代码已在Python中实现了卡方检验。在此方法中,我们仅在Python中实现了卡方统计公式,而不是导入内置方法。for循环有助于遍历数据集。然后,我们使用NumPy实现了上述公式,并将得分与先前得分相加以获取整个数据集的总分数。最后,我们检查使用此方法得到的卡方统计量。
输出
如我们所预期的,结果与使用之前的方法得到的结果相同。这个结果还表明,我们不应该拒绝原假设,但是我们可以拒绝备择假设。
总结
我们已经学习了卡方拟合优度检验以及如何使用Python实现它。让我们用几个关键点总结本文 –
-
卡方检验验证观测到的分类变量与期望的变量分布之间的关系。
-
卡方检验有一些假设,包括只有一个分类变量,独立变量,至少五个独特类别以及随机采样的数据。
-
我们通过接受或拒绝零假设来得出检验结果。
-
阈值必须小于临界值,才能接受零假设。