scipy.stats.contingency.crosstab

scipy.stats.contingency.crosstab(*args, levels=None, sparse=False)[源代码]

中每个可能的唯一组合的计数值的返回表。 *args

什么时候 len(args) > 1 ,则此函数计算的数组通常称为 列联表 [1].

参数必须是长度相同的序列。第二个返回值, count ,是一个整数数组,带有 len(args) 尺寸标注。如果 levels 为None,其形状为 count(n0, n1, ...) ,在哪里 nk 中的唯一元素数。 args[k]

参数
args序列

其唯一排列的元素要被计数的一系列序列。ARG中的序列必须都具有相同的长度。

levels序列,可选

如果 levels ,则该序列的长度必须与 args 。中的每个元素 levels 要么是序列,要么不是。如果它是一个序列,则它给出相应序列中的值 args 那是要统计的。中的序列中的任何值 args 中的相应序列中不会出现 levels ,则忽略该值,并且不将其计入返回的数组中 count 。的默认值 levelsargs[i]np.unique(args[i])

sparse布尔值,可选

如果为True,则返回稀疏矩阵。矩阵将是 scipy.sparse.coo_matrix 班级。因为SciPy的稀疏矩阵必须是2-d,所以在以下情况下只允许两个输入序列 sparse 是真的。默认值为False。

退货
elementsNumpy.ndarray的元组。

长度元组 len(args) 包含被计入的元素数组的 count 。这些可以解释为的相应维度的标签 count 。如果 levels 给出了,那么如果 levels[i] 不是没有, elements[i] 将保存中给出的值 levels[i]

countnumpy.ndarray或scipy.parse.coo_Matrix

中唯一元素的计数 zip(*args) ,存储在数组中。也称为 列联表 什么时候 len(args) > 1

参见

numpy.unique

注意事项

1.7.0 新版功能.

参考文献

1

“联想表”,http://en.wikipedia.org/wiki/Contingency_table

示例

>>> from scipy.stats.contingency import crosstab

在给出名单的情况下 ax ,创建计算对应对的频率的偶联表。

>>> a = ['A', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B']
>>> x = ['X', 'X', 'X', 'Y', 'Z', 'Z', 'Y', 'Y', 'Z', 'Z']
>>> (avals, xvals), count = crosstab(a, x)
>>> avals
array(['A', 'B'], dtype='<U1')
>>> xvals
array(['X', 'Y', 'Z'], dtype='<U1')
>>> count
array([[2, 3, 0],
       [1, 0, 4]])

所以 ('A', 'X') 发生了两次, ('A', 'Y') 发生三次,等等。

可以创建更高维列联表。

>>> p = [0, 0, 0, 0, 1, 1, 1, 0, 0, 1]
>>> (avals, xvals, pvals), count = crosstab(a, x, p)
>>> count
array([[[2, 0],
        [2, 1],
        [0, 0]],
       [[1, 0],
        [0, 0],
        [1, 3]]])
>>> count.shape
(2, 3, 2)

要计数的值可以使用 levels 论点。它允许显式地给出每个输入序列中感兴趣的元素,而不是找到序列的唯一元素。

例如,假设其中一个参数是一个包含调查问题答案的数组,其整数值为1到4。即使值1没有出现在数据中,我们也希望在表中为其输入一个条目。

>>> q1 = [2, 3, 3, 2, 4, 4, 2, 3, 4, 4, 4, 3, 3, 3, 4]  # 1 does not occur.
>>> q2 = [4, 4, 2, 2, 2, 4, 1, 1, 2, 2, 4, 2, 2, 2, 4]  # 3 does not occur.
>>> options = [1, 2, 3, 4]
>>> vals, count = crosstab(q1, q2, levels=(options, options))
>>> count
array([[0, 0, 0, 0],
       [1, 1, 0, 1],
       [1, 4, 0, 1],
       [0, 3, 0, 3]])

如果 levels 是给定的,但其中的一个元素 levels 为NONE,则使用相应参数的唯一值。例如,

>>> vals, count = crosstab(q1, q2, levels=(None, options))
>>> vals
[array([2, 3, 4]), [1, 2, 3, 4]]
>>> count
array([[1, 1, 0, 1],
       [1, 4, 0, 1],
       [0, 3, 0, 3]])

如果我们想要忽略出现4的对 q2 ,我们可以只给出价值 [1, 2] 至 levels ,4将被忽略:

>>> vals, count = crosstab(q1, q2, levels=(None, [1, 2]))
>>> vals
[array([2, 3, 4]), [1, 2]]
>>> count
array([[1, 1],
       [1, 4],
       [0, 3]])

最后,让我们重复第一个示例,但返回一个稀疏矩阵:

>>> (avals, xvals), count = crosstab(a, x, sparse=True)
>>> count
<2x3 sparse matrix of type '<class 'numpy.int64'>'
        with 4 stored elements in COOrdinate format>
>>> count.A
array([[2, 3, 0],
       [1, 0, 4]])