python - 如何测量一组排列的方差?
问题描述
我需要计算排列的总体(数组)中的方差,即
假设我有这个排列数组:
import numpy as np
import scipy.stats as stats
a = np.matrix([[1,2,3,4,5,6], [2,3,4,6,1,5], [6,3,1,2,5,4]])
# distance between a[0] and a[1]
distance = stats.kendalltau(a[0], a[1])[0]
那么,如何(在 Python 中)计算这个数组的方差,即如何测量这些排列彼此之间的距离?
问候
艾美瑞克
ps:我用 kendalltau 度量定义了两个排列之间的距离
解决方案
我不确定这是否是您正在寻找的数学结果。您可以使用stats.kendalltau
计算所有可能对的距离,然后从该结果向量中获取方差。
(a, a-shifted)
为了获得距离向量,我使用以下方法遍历压缩列表np.roll
:
dist = []
for x1, x2 in zip(a, np.roll(a, shift=1, axis=0)):
dist.append(kendalltau(x1, x2)[0])
取所有距离的方差:
np.std(dist)
或者,如果您正在寻找方差(此处讨论),则采用距离向量的范数:
np.linalg.norm(dist)
注意我使用a
的是定义np.array
,而不是np.matrix
:
a = np.array([[1,2,3,4,5,6], [2,3,4,6,1,5], [6,3,1,2,5,4]])
推荐阅读
- authentication - 如何使用 Passport Strategies 正确注销 JWT?
- mysql - MySQL DATEDIFF 函数 VS 比较 INTERVAL DAY
- r - R中的ggplot()中的分面
- javascript - How to edit the table value in React?
- c# - Cisco TSP - 在 C# 中从 32 位到 64 位的工具迁移
- javascript - JavaScript 词法环境
- c# - 为什么我的浮点变量总是为 0,即使我设置了它
- php - 从 CLI 获取输入并在 PHP 中创建数组。这个对吗?
- r - 为什么从 3.5.2 升级到 4.0.0 后,R 的排序会更改使用 load() 导入的数据?
- r - 如何将每年的数据汇总为两年、三年、四年...年的数据