crosstab#
- scipy.stats.contingency.crosstab(*args, уровни=None, разреженный=False)[источник]#
Возвращает таблицу частот для каждой возможной уникальной комбинации в
*args.Когда
len(args) > 1, массив, вычисляемый этой функцией, часто называют таблица сопряженности [1].Аргументы должны быть последовательностями одинаковой длины. Второе возвращаемое значение, count, является целочисленным массивом с
len(args)размерности. Если уровни is None, форма count является(n0, n1, ...), гдеnkэто количество уникальных элементов вargs[k].- Параметры:
- *argsпоследовательности
Последовательность последовательностей, уникальные выровненные элементы которых должны быть подсчитаны. Все последовательности в args должны иметь одинаковую длину.
- уровниsequence, optional
Если уровни если задан, он должен быть последовательностью той же длины, что и args. Каждый элемент в уровни является последовательностью или None. Если это последовательность, она задаёт значения в соответствующей последовательности в args которые должны быть подсчитаны. Если любое значение в последовательностях в args не встречается в соответствующей последовательности в уровни, это значение игнорируется и не учитывается в возвращаемом массиве count. Значение по умолчанию уровни для
args[i]являетсяnp.unique(args[i])- разреженныйbool, необязательно
Если True, вернуть разреженную матрицу. Матрица будет экземпляром класса
scipy.sparse.coo_matrixкласс. Поскольку разреженные матрицы SciPy должны быть двумерными, только две входные последовательности разрешены, когда разреженный имеет значение True. По умолчанию False.
- Возвращает:
- resCrosstabResult
Объект, содержащий следующие атрибуты:
- элементыкортеж numpy.ndarrays.
Кортеж длины
len(args)содержащий массивы элементов, которые подсчитываются в count. Их можно интерпретировать как метки соответствующих измерений count. Если уровни был предоставлен, тогда еслиlevels[i]не является None,elements[i]будет содержать значения, указанные вlevels[i].- countnumpy.ndarray или scipy.sparse.coo_matrix
Количество уникальных элементов в
zip(*args), хранятся в массиве. Также известна как таблица сопряженности когдаlen(args) > 1.
Смотрите также
Примечания
Добавлено в версии 1.7.0.
Ссылки
[1]«Таблица сопряженности», http://en.wikipedia.org/wiki/Contingency_table
Примеры
>>> 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='
>>> xvals array(['X', 'Y', 'Z'], dtype=' >>> res.count array([[2, 3, 0], [1, 0, 4]]) Итак
('A', 'X')встречается дважды,('A', 'Y')встречается три раза и т.д.Можно создавать таблицы сопряженности более высокой размерности.
>>> 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]])
Если уровни задан, но элемент уровни is 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
with 4 stored elements and shape (2, 3)> >>> res.count.toarray() array([[2, 3, 0], [1, 0, 4]])