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 。的默认值 levels 为
args[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
。
参见
注意事项
1.7.0 新版功能.
参考文献
示例
>>> 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'] >>> (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]])