somersd#
- scipy.stats.somersd(x, y=None, alternative='two-sided')[source]#
计算 Somers' D,这是有序关联的不对称度量。
与 Kendall 的 \(\tau\)一样,Somers' \(D\)是衡量两个排名之间对应关系的指标。两种统计量都考虑两个排名 \(X\)和 \(Y\)中一致对和不一致对数量之间的差异,并且都被标准化,以便接近 1 的值表示强烈一致,而接近 -1 的值表示强烈不一致。它们的标准化方式不同。为了展示这种关系,可以根据 Kendall 的 \(\tau_a\)对 Somers' \(D\) 进行定义
\[D(Y|X) = \frac{\tau_a(X, Y)}{\tau_a(X, X)}\]假设第一个排名 \(X\) 有 \(r\) 个不同的排名,第二个排名 \(Y\) 有 \(s\) 个不同的排名。这两个 \(n\) 个排名的列表也可以看作一个 \(r \times s\) 列联表,其中元素 \(i, j\) 是排名 \(i\) 在排名 \(X\) 中与排名 \(j\) 在排名 \(Y\) 中的排名对数量。相应地,
somersd
也允许输入数据作为单个、2D 列联表提供,而不是两个单独的、1D 排名。请注意 Somers’ \(D\) 的定义是不对称的:一般来说,\(D(Y|X) \neq D(X|Y)\)。
somersd(x, y)
会计算 Somers’ \(D(Y|X)\):“行”变量 \(X\) 被视为自变量,“列”变量 \(Y\) 被视为因变量。对于 Somers’ \(D(X|Y)\),交换输入列表或转置输入表格。- 参数:
- xarray_like
排名的 1D 数组,被视为(行)自变量。或者,2D 列联表。
- yarray_like, 可选
如果 x 是排名的 1D 数组,y 是相同长度的排名的 1D 数组,被视为(列)因变量。如果 x 是 2D,y 会被忽略。
- alternative{‘two-sided’, ‘less’, ‘greater’}, 可选
定义备用假设。默认值为“two-sided”。以下选项可用:* ‘two-sided’:等级相关系数不为零* ‘less’:等级相关系数为负(小于零)* ‘greater’:等级相关系数为正(大于零)
- 返回:
- resSomersDResult
一个 SomersDResult 对象包含以下字段
- statisticfloat
Somers’ \(D\) 统计量。
- pvaluefloat
零假设为无关联的假设检验的 p 值\(D=0\)。有关更多信息,请参阅注释。
- table2D 数组
由排名x 和 y (或给定的列联表,如果 x 是一个二维数组)形成的列联表
另请参阅
kendalltau
计算 Kendall 的 tau,另一种相关测量。
weightedtau
计算 Kendall 的 tau 的加权版本。
spearmanr
计算 Spearman 等级相关系数。
pearsonr
计算 Pearson 相关系数。
注释
此函数遵循 [2] 和 [3] 的列联表方法。p 值根据原假设 \(D=0\) 下检验统计分布的渐近近似值计算。
从理论上讲,基于 Kendall 的 \(tau\) 和 Somers 的 \(D\) 的假设检验应该相同。但是,由
kendalltau
返回的 p 值基于 \(X\) 和 \(Y\) 之间的独立性的原假设(即从中对 \(X\) 和 \(Y\) 中的对进行抽样的总体包含所有可能的对的数量相等),它比这里使用的原假设 \(D=0\) 更加具体。如果期望独立性原假设,可以使用kendalltau
返回的 p 值和somersd
返回的统计量,反之亦然。有关更多信息,请参阅 [2]。列联表按照 SAS 和 R 使用的约定进行格式化:提供的第一个排名(
x
)是“行”变量,而提供的第二个排名(y
)是“列”变量。这与 Somers 的原始论文 [1] 的惯例相反。参考
[1]罗伯特·H·萨默斯,“有序变量的新型非对称关联测量”,《美国社会学评论》,第 27 卷,第 6 期,第 799-811 页,1962 年。
[3]SAS Institute, Inc.,“FREQ 过程(摘录)”,《SAS/STAT 9.2 用户指南,第二版》,SAS 出版社,2009 年。
[4]Laerd Statistics,“使用 SPSS 统计数据计算 Somers d”,SPSS 统计教程和统计指南,https://statistics.laerd.com/spss-tutorials/somers-d-using-spss-statistics.php,于 2020 年 7 月 31 日访问。
示例
对于 [4] 中给出的示例,我们计算了 Somers D 值,在该示例中,酒店连锁店老板寻求确定酒店客房清洁度和顾客满意度之间的联系。自变量,即酒店客房清洁度,按序数标度进行排序:“低于平均水平 (1)”、“平均 (2)”或“高于平均水平 (3)”。因变量,即顾客满意度,按第二个标度进行排序:“非常不满意 (1)”、“比较不满意 (2)”、“既不满意也不不满意 (3)”、“比较满意 (4)”,或“非常满意 (5)”。189 名顾客对调查问卷作出了回应,结果被转换为列联表,其中酒店客房清洁度作为“行”变量,而顾客满意度作为“列”变量。
27
25
14
7
0
7
14
18
35
12
1
3
2
7
17
例如,27 名顾客将自己房间的清洁度评级为“低于平均水平 (1)”,相应满意度为“非常不满意 (1)”。我们按如下方式执行分析操作。
>>> from scipy.stats import somersd >>> table = [[27, 25, 14, 7, 0], [7, 14, 18, 35, 12], [1, 3, 2, 7, 17]] >>> res = somersd(table) >>> res.statistic 0.6032766111513396 >>> res.pvalue 1.0007091191074533e-27
Somers D 统计量的值为约 0.6,表明样本中客房清洁度和顾客满意度之间存在正相关。p 值非常小,表明在空假设(我们的 189 位顾客样本所选取的总体统计量为零)下观察到这种极端统计量值出现的概率非常小。这支持了这样的备择假设:总体的 Somers D 真实值为非零。