我們都知道協方差 可以用來評判多因素間是否具有一相關性,相關相關性的度量也就是皮爾遜系數,皮爾遜系數:
皮爾遜相關性是兩個變量之間的協方差與标準差的商, 那怎麼去理解呢?
通過公式我們來理解一下,是去中心化後的數學期望标準差的商, 分母非負,我們主要關注分子部分就好了,每個點與組内平均值的差就是歸一化的思想,所以我們就是看最後的數學期望對應的向量是不是為正,就可以判斷兩個變量是不是正相關,為了呈現這個過程,我們來看一個例子。
tdf = pd.read_csv('../data/tips.csv')
tdf
這是一組數據,total_bill代表消費者就餐賬單總額,tip為 小費,一般理解,就餐費用越高的消費者會提供更多的小費給服務員,因此賬單總額和小費應該是正相關的,我們按照上面的理解來推演一下:
bill = tdf['total_bill'].values # 消費者就餐賬單總額
tip = tdf['tip'].values # 消費者給服務員的小費
x_mean = list(map(lambda x: x - np.mean(bill), bill)) ### 去中心化
y_mean = list(map(lambda x: x - np.mean(tip), tip)) ### 去中心化
xy_mean = [x_mean[i] * y_mean[i] for i in range(len(x_mean))] ### 點坐标相乘
plt.figure(figsize=(10,6))
plt.subplot(131), plt.scatter(bill, tip, c='r'), plt.title("總賬單分布")
plt.subplot(132), plt.scatter(x_mean, y_mean, c='r'), plt.title("總賬 去中心化結果 ")
plt.subplot(133), plt.scatter(xy_mean, [0]*len(xy_mean), c='r'), plt.title("總賬 去中心化 x*y ")
r = np.corrcoef(bill)
rr = np.mean(xy_mean) ### 大于零 說明X, Y為正相關(基于公式的理解)
print(f" 點相乘結果:{rr}, 皮爾遜相關性:{r}")
我們看到 xy_mean 的平均值為 8.29 ,是大于0的,根據猜想應該是正相關,而我們計算的皮爾遜相關系數為 1.0,為強正相關,和猜想一緻。通過下面的拟合我們可以很清楚的發現,整體上 total_bill 與 tip是正相關的。
import seaborn as sns
sns.regplot(x='total_bill', y='tip', data=tdf)
當然,我們還可以計算sperman相關性,但是基本都一緻規律。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!