Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用卡方检验检查随机性_Python_Random_Statistics_Scipy - Fatal编程技术网

Python 使用卡方检验检查随机性

Python 使用卡方检验检查随机性,python,random,statistics,scipy,Python,Random,Statistics,Scipy,我正在为一个严重依赖随机数生成器的类项目运行一个模拟,因此我们被要求测试随机数生成器,以查看它使用卡方静态的“随机性”。在浏览了这里的一些帖子后,我使用以下代码找到了答案: from random import randint import numpy as np from scipy.stats import chisquare numIterations = 1000 #I've run it with other numbers as well observed = [] for i

我正在为一个严重依赖随机数生成器的类项目运行一个模拟,因此我们被要求测试随机数生成器,以查看它使用卡方静态的“随机性”。在浏览了这里的一些帖子后,我使用以下代码找到了答案:

from random import randint
import numpy as np
from scipy.stats import chisquare
numIterations = 1000  #I've run it with other numbers as well

observed = []
for i in range(0, numIterations):
    observed.append(randint(0, 100))
data = np.array(observed)
print "(chi squared statistic, p-value) with", numOfIter, "samples generated: ", chisquare(data)

然而,当numIterations大于10时,我得到的p值为零,考虑到无效假设是数据是一致的,这是没有意义的。我是否误解了结果?还是我的代码完全错了

卡方检验检查您在一个箱子中观察到的物品数量与您期望在该箱子中看到的物品数量。它是通过将所有料仓中观察到的和预期的偏差平方相加来实现的。您不能只向它提供原始数据,您需要首先使用类似于
scipy.stats.histogram

的方法对其进行存储。根据您可以测试的分布,请记住,拥有更多的样本将更好地近似分布(如果你可以采集无限多的样本,你就会得到实际的分布)。因为在现实生活中,我们不能无限次地运行数字生成器,我们只处理近似的情况,所以我们对分布进行分类(看看一个分类箱中有多少个数字)。现在,如果你运行你的豆机,发现其中一个桶明显高于预期分布(在本例中为高斯分布),那么你会说该过程不是高斯分布。卡方分布的情况相同,但形状不同于高斯分布,因为你的采样倍数正态分布(特殊情况为高斯分布)分布。由于您想知道数据是否为正态/高斯分布(想想形状,形状由分布参数(即平均标准峰度)决定),因此下面是一个如何实现这一点的示例:


我不知道你的数据是什么,所以我不能真正告诉你要寻找什么。总之,你需要知道你给出的统计数据是什么,然后尝试将其拟合到一个模型(在本例中为卡方检验),然后问自己它是否与模型匹配(曲线,你可能试图找出它是否为高斯/正态曲线,你可以用卡方检验)。你应该用谷歌搜索卡方函数、高斯正态函数等。

这就是所有的代码吗?我觉得我们遗漏了一些东西。我刚刚漏掉了锅炉板导入语句。让我把它们加进去。但是关键的
卡方函数在哪里…?对不起,我的IDE把它藏在导入语句下面了。这应该是所有的东西。你知道吗一个
chisquare
测试实际上是在测试吗?我真的不明白你期望从
chisquare(数据)
中得到什么。我认为这毫无意义。