scipy.stats.随机表#
- scipy.stats.random_table = <scipy.stats._multivariate.random_table_gen object>[源代码]#
独立样本的列联表,具有固定的边际和。
这是具有给定行和列向量和的随机表的分布。该分布表示在行和列独立的零假设下的随机表集合。它用于独立性假设检验。
由于假设的独立性,每个表格元素的期望频率可以从行和列的总和计算得出,因此分布完全由这两个向量决定。
- 参数:
- 行array_like
每行表格条目的总和。
- colarray_like
每列表格条目的总和。
- 种子{None, int, np.random.RandomState, np.random.Generator}, 可选
用于绘制随机变量。如果 seed 是 None,则使用 RandomState 单例。如果 seed 是整数,则使用新的
RandomState
实例,并以 seed 为种子。如果 seed 已经是RandomState
或Generator
实例,则使用该对象。默认值为 None。
方法
logpmf(x)
表 x 在分布中出现的对数概率。
pmf(x)
表 x 在分布中出现的概率。
mean(行, 列)
平均表。
rvs(row, col, size=None, method=None, random_state=None)
根据给定的行和列向量和绘制随机表格。
注释
行向量和列向量必须是一维的,非空的,并且它们的和必须相等。它们不能包含负数或非整数项。
分布中的随机元素可以通过 Boyett 的 [1] 或 Patefield 的算法 [2] 生成。Boyett 的算法具有 O(N) 的时间和空间复杂度,其中 N 是表中条目的总和。Patefield 的算法具有 O(K x log(N)) 的时间复杂度,其中 K 是表中的单元格数量,并且只需要一个小的常量工作空间。默认情况下,rvs 方法根据输入选择最快的算法,但您可以使用关键字 method 指定算法。允许的值为 “boyett” 和 “patefield”。
Added in version 1.10.0.
参考文献
[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.]])