我計算了以下示例資料幀 df1 的相關性:
df1 = pd.DataFrame({'A':[1,2,3], 'B':[2,5,3], 'C':[5,2,1] })
df1.head()
A B C
0 1 2 5
1 2 5 2
2 3 3 1
相關資料框如下所示:
df2=df1.corr()
df2
A B C
A 1.000000 0.327327 -0.960769
B 0.327327 1.000000 -0.576557
C -0.960769 -0.576557 1.000000
如果某個值與我的資料框/列中的其他值相比顯著,我該如何測驗?例如:我想知道 A 和 C 之間的高相關性是否顯著,或者我的資料中的高相關性是否正常。
編輯:所需的輸出:
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 的所有其他相關性進行比較。
uj5u.com熱心網友回復:
請嘗試 scipy 包。上面計算的相關性是皮爾遜相關性。使用 scipy 包,同樣可以用 'p-value' 計算:
參考:https ://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html
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 值矩陣,您可以嘗試以下代碼:
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)
現在將兩個特征的相關值與其他相關值進行比較,例如,試試這個:
df2[abs(df2.loc['B','C'])>df2.abs()]
這將給出一個絕對相關值小于絕對相關值 bw 'B' 和 'C' 的矩陣。同樣也可以比較意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449138.html
