scipy.stats.random_table#

scipy.stats.random_table = <scipy.stats._multivariate.random_table_gen object>[源代码]#

具有固定边际和的独立样本的列联表。

这是具有给定行和列向量和的随机表的分布。此分布表示在行和列独立的零假设下的随机表集合。它用于独立性的假设检验。

由于假设的独立性,每个表元素的预期频率可以从行和列和计算得出,因此分布完全由这两个向量确定。

参数:
rowarray_like

每行中表条目的总和。

colarray_like

每列中表条目的总和。

seed{None, int, np.random.RandomState, np.random.Generator}, 可选

用于绘制随机变量。如果 seedNone,则使用 RandomState 单例。如果 seed 是一个整数,则使用一个新的 RandomState 实例,并使用 seed 进行播种。如果 seed 已经是 RandomStateGenerator 实例,则使用该对象。默认值为 None

说明

行和列向量必须是一维的,不能为空,并且每个向量的和都必须相同。它们不能包含负数或非整数条目。

分布中的随机元素可以使用 Boyett 的 [1] 或 Patefield 的算法 [2] 生成。Boyett 的算法具有 O(N) 的时间和空间复杂度,其中 N 是表中条目的总和。Patefield 的算法具有 O(K x log(N)) 的时间复杂度,其中 K 是表中的单元格数,并且只需要一个小的常数工作空间。默认情况下,rvs 方法根据输入选择最快的算法,但可以使用关键字 method 指定算法。允许的值为“boyett”和“patefield”。

在 1.10.0 版本中添加。

参考

[1]
  1. Boyett, AS 144 Appl. Statist. 28 (1979) 329-332

[2]

W.M. Patefield, AS 159 Appl. Statist. 30 (1981) 91-97

示例

>>> from scipy.stats import random_table
>>> row = [1, 5]
>>> col = [2, 3, 1]
>>> random_table.mean(row, col)
array([[0.33333333, 0.5       , 0.16666667],
       [1.66666667, 2.5       , 0.83333333]])

或者,可以调用该对象(作为函数)来固定行和列向量和,从而返回“冻结”分布。

>>> dist = random_table(row, col)
>>> dist.rvs(random_state=123)
array([[1, 0, 0],
       [1, 3, 1]])

方法

logpmf(x)

x 在分布中出现的对数概率。

pmf(x)

x 在分布中出现的概率。

mean(row, col)

平均表。

rvs(row, col, size=None, method=None, random_state=None)

绘制具有给定行和列向量和的随机表。