多指标相关性

2024-09-28 21:37:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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之间的相关系数。我的真实数据集比这大得多(每个参与者有数百个反应时间,而且参与者也很多)。有没有一个通用的方法来计算这一点,并将系数放入一个新的df中

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

谢谢:)


Tags: 数据方法dfindex情况condition参与者系数
1条回答
网友
1楼 · 发布于 2024-09-28 21:37:27

你可以用np.corrcoefreset_index试一下groupbyapply,然后:

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],因为它返回一个对称矩阵,其中对角元素被规范化为1,非对角元素相同,并且每个元素都给出所需的系数(因此也可以使用[1, 0]进行索引)。就是

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

是一个示例返回值,我们对非对角项感兴趣

为什么在您的案例中返回所有+/- 1:因为每个参与者&;条件对每个反应只有2个条目,它们总是完全相关,符号是通过它们的方向确定的,即如果一个从一个坐标增加到另一个坐标,那么另一个坐标是增加还是减少

相关问题 更多 >