多个指标的相关性
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|?|
谢谢:)
您可以尝试 groupby
和 apply
与 np.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 个条目,它们 总是 完全相关并且符号通过它们的方向确定,即如果一个坐标从一个坐标增加到另一个坐标,另一个是增加还是减少。
我是 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|?|
谢谢:)
您可以尝试 groupby
和 apply
与 np.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 个条目,它们 总是 完全相关并且符号通过它们的方向确定,即如果一个坐标从一个坐标增加到另一个坐标,另一个是增加还是减少。