当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy contingency.crosstab用法及代码示例


本文简要介绍 python 语言中 scipy.stats.contingency.crosstab 的用法。

用法:

scipy.stats.contingency.crosstab(*args, levels=None, sparse=False)#

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

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

参数必须是具有相同长度的序列。第二个返回值,数数, 是一个整数数组len(args)方面。如果水平是无,形状数数(n0, n1, ...),其中nk是唯一元素的数量args[k].

参数

*args 序列

要计算其唯一对齐元素的序列序列。 args 中的序列必须全部具有相同的长度。

levels 顺序,可选

如果水平给定,它必须是一个长度相同的序列参数.中的每个元素水平是序列或无。如果是序列,则给出对应序列中的值参数要计算的。如果序列中的任何值参数不会出现在相应的序列中水平,该值被忽略且不计入返回的数组数数.默认值为水平为了args[i]np.unique(args[i])

sparse 布尔型,可选

如果为 True,则返回一个稀疏矩阵。矩阵将是scipy.sparse.coo_matrix类。因为 SciPy 的稀疏矩阵必须是二维的,所以当是真的。默认为假。

返回

res CrosstabResult

包含以下属性的对象:

元素 numpy.ndarrays 的元组。

长度元组len(args)包含计算在内的元素数组数数.这些可以解释为对应维度的标签数数.如果水平被给定了,那么如果levels[i]不是无,elements[i]将保持给出的值levels[i].

数数 numpy.ndarray 或 scipy.sparse.coo_matrix

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

注意

参考

例子

>>> from scipy.stats.contingency import crosstab

给定列表 a 和 x,创建一个列联表,计算相应对的频率。

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

所以 (‘A’, ‘X’) 出现两次,(‘A’, ‘Y’) 出现 3 次,以此类推。

可以创建更高维的列联表。

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

要计数的值可以通过使用级别参数来设置。它允许显式给出每个输入序列中感兴趣的元素,而不是找到序列的唯一元素。

例如,假设其中一个参数是一个包含调查问题答案的数组,整数值为 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]
>>> res = crosstab(q1, q2, levels=(options, options))
>>> res.count
array([[0, 0, 0, 0],
       [1, 1, 0, 1],
       [1, 4, 0, 1],
       [0, 3, 0, 3]])

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

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

如果我们想忽略出现 4 的对q2,我们可以只给出值 [1, 2] 到水平,并且 4 将被忽略:

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

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

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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.contingency.crosstab。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。