在 Python 3 中执行卡方检验以检验正态性
Performing a chi-quare test in Python 3 to test normality
我得到了以下文件:
我想测试这个数据集的正态性。
我想通过卡方检验来做到这一点。
我在 excel 中执行了它,得到了以下结果(我想在 Python 中实现):
chisquare = 5.53
p-value = 0.14
我在excel中的公式如下:
我首先计算了每列中每个值的 z 值。
然后,我根据标准正态分布 (n(0,1)) 计算了低于 -1、介于 -1 和 0 之间、介于 0 和 1 之间以及大于 +1 的预期值。然后我计算了这些范围内的实际值(基于 z 值)。
然后我可以通过(观察值-期望值)^2/期望值计算每个范围的卡方值。
对卡方值求和,得出 5.53。
因为我使用了 4 个范围,所以我使用了 3 个自由度。 5.53 和 3 个自由度给出的 p 值为 0.14(公式称为 CHIDIST(卡方值,自由度)。
问题是:如何在 Python 中执行此计算并用多行进行计算?
我制作了一个快速电子表格来测试这些值,它看起来像
a,b,c
1,2,3
然后,Pandas
import pandas as pd
df = pd.read_csv('test.csv') # above
df.iloc[:, 1:].values
> array([[2, 3]], dtype=int64)
但这是一个嵌套数组。 chisquare
的 docs 建议使用扁平数组,因此您可能想尝试
df.iloc[:, 1:].values.flatten()
> array([2, 3], dtype=int64)
我得到了以下文件:
我想测试这个数据集的正态性。 我想通过卡方检验来做到这一点。
我在 excel 中执行了它,得到了以下结果(我想在 Python 中实现):
chisquare = 5.53
p-value = 0.14
我在excel中的公式如下:
我首先计算了每列中每个值的 z 值。 然后,我根据标准正态分布 (n(0,1)) 计算了低于 -1、介于 -1 和 0 之间、介于 0 和 1 之间以及大于 +1 的预期值。然后我计算了这些范围内的实际值(基于 z 值)。
然后我可以通过(观察值-期望值)^2/期望值计算每个范围的卡方值。
对卡方值求和,得出 5.53。 因为我使用了 4 个范围,所以我使用了 3 个自由度。 5.53 和 3 个自由度给出的 p 值为 0.14(公式称为 CHIDIST(卡方值,自由度)。
问题是:如何在 Python 中执行此计算并用多行进行计算?
我制作了一个快速电子表格来测试这些值,它看起来像
a,b,c
1,2,3
然后,Pandas
import pandas as pd
df = pd.read_csv('test.csv') # above
df.iloc[:, 1:].values
> array([[2, 3]], dtype=int64)
但这是一个嵌套数组。 chisquare
的 docs 建议使用扁平数组,因此您可能想尝试
df.iloc[:, 1:].values.flatten()
> array([2, 3], dtype=int64)