多个指标的相关性

Correlations for multiple indexes

我是 Python 的新手,我在计算多个参与者的相关系数时遇到了问题。 我有一个像这样的数据框:

|Index|Participant|Condition|ReactionTime1|ReactionTime2|
|:---:|:---------:|:-------:|:-----------:|:-------------:|
|1|1|A|320|542|
|2|1|A|250|623|
|3|1|B|256|547|
|4|1|B|301|645|
|5|2|A|420|521|
|6|2|A|123|456|
|7|2|B|265|362|
|8|2|B|402|631|

我想知道如何计算每个条件下参与者 1 和参与者 2 的反应时间 1 和反应时间 2 之间的相关系数。我的真实数据集比这大得多(每个参与者有数百个反应时间,而且参与者也很多)。有没有通用的方法来计算这个并将 coeff 放在这样的新 df 中?

|Index|Participant|Condition|Correlation coeff|
|:---:|:---------:|:-------:|:-----------:|
|1|1|A|?|
|2|1|B|?|
|3|2|A|?|
|4|2|B|?|

谢谢:)

您可以尝试 groupbyapplynp.corrcoef,然后 reset_index

result = (df.groupby(["Participant", "Condition"])
            .apply(lambda gr: np.corrcoef(gr["ReactionTime1"], gr["ReactionTime2"])[0, 1])
            .reset_index(name="Correlation coeff"))

这给出了

   Participant Condition  Correlation coeff
0            1         A               -1.0
1            1         B                1.0
2            2         A                1.0
3            2         B                1.0

我们在 np.corrcoef 的返回值上使用 [0, 1],因为它 returns 是一个对称矩阵,其中对角线元素归一化为 1,非对角线元素相同,每个都给出所需的系数(也可以使用 [1, 0] 进行索引)。也就是说,

array([[1.        , 0.25691558],
       [0.25691558, 1.        ]])

是一个示例返回值,我们对非对角线条目感兴趣。

为什么在你的情况下它返回所有 +/- 1:因为每个参与者和条件对每个反应只有 2 个条目,它们 总是 完全相关并且符号通过它们的方向确定,即如果一个坐标从一个坐标增加到另一个坐标,另一个是增加还是减少。