首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对整个数据的意义的测试

对整个数据的意义的测试
EN

Stack Overflow用户
提问于 2022-03-23 11:00:44
回答 1查看 85关注 0票数 0

我计算了以下示例dataframe df1的相关性:

代码语言:javascript
复制
df1 = pd.DataFrame({'A':[1,2,3], 'B':[2,5,3], 'C':[5,2,1] })
df1.head()
代码语言:javascript
复制
    A   B   C
0   1   2   5
1   2   5   2
2   3   3   1

相关数据如下所示:

代码语言:javascript
复制
df2=df1.corr()
df2
代码语言:javascript
复制
        A           B           C
A   1.000000    0.327327    -0.960769
B   0.327327    1.000000    -0.576557
C  -0.960769   -0.576557     1.000000

如何测试一个值是否与我的dataframe/列中的其他值相关联?例如:我想知道A和C之间的高相关性是显著的,还是数据中的高相关性是正常的。

编辑:所需输出:

代码语言:javascript
复制
        A               B              C
A   p-value(A/A)    p-value(A/B)    p-value(A/C)
B   p-value(B/A)    p-value(B/B)    p-value(B/C)
C   p-value(C/A)    p-value(C/B)    p-value(C/C)

我知道pearsonr()返回p-值,但是它没有考虑到df2的其他值:我希望将每种相关性(例如A和C之间的相关性)与df2的其他相关性进行比较。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 11:25:07

请试一下枕包。上面计算出来的相关性是pearson的相关性。对于can包,可以用‘p-value’来计算相同的值:

参考文献:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html

代码语言:javascript
复制
from scipy.stats import pearsonr
pearson_corr_BC = pearsonr(df1['B'],df1['C'])
print("pearson correlation:",pearson_corr_BC[0])
print("p-value:",pearson_corr_BC[1])

要计算p值矩阵,可以尝试以下代码:

代码语言:javascript
复制
import numpy as np
row_index = df2.index
col_index = df2.columns
p_value_array = np.zeros(shape=(len(df1.columns),len(df1.columns)))
for i,a in enumerate(row_index):
  for j,b in enumerate(col_index):
    p_value_array[i,j] = pearsonr(df1[a],df1[b])[1]
pvalue_df = pd.DataFrame(p_value_array,index=row_index,columns=col_index)

现在,要将两个特性的相关性值与其他相关值进行比较,例如,尝试如下:

代码语言:javascript
复制
df2[abs(df2.loc['B','C'])>df2.abs()]

这将给出一个绝对相关值小于绝对相关值bw 'B‘和'C’的矩阵。同样,也可以比较意义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71586070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档