python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)
生活随笔
收集整理的這篇文章主要介紹了
python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、相關關系和相關系數
世上除了因果關系,還有相關關系。
有一個叫“相關系數”的指標來量化兩個事物之間的相關程度。
其中相關系數用“r”表示,取值范圍介于-1和1之間。
當(X,Y)正相關的時候,r=1;當(X,Y)負相關的時候,r=-1;當(X,Y)不相關的時候,r=0。
當然一般的線性相關有更嚴格的劃分:
- r|<0.3 不存在線性關系
- 0.3<|r|<0.5 低度線性關系
- 0.5<|r|<0.8 顯著線性關系
- |r|>0.8 高度線性關系
二、相關性和假設檢驗
有指標來衡量兩者之間的相關程度,不代表能夠去衡量相關程度。
因引入兩個概念:
現在,針對我們分析的兩組數據(X,Y)(兩組數據被稱為抽樣),我們的疑問來了:
抽樣的(X,Y)是否可以正確反應總體的情況呢?
這里涉及:假設檢驗。
具體操作如下:
零假設H0:總體的數據不呈相關性(相關系數為0),并先認為H0正確 備選假設H1:總體的數據呈現相關性(相關系數不為0) 引入一個指標:顯著性水平p,一般將其設定為0.05或者0.01 當p<0.05,拒絕原假設,備選假設正確; 當p>0.05,原假設正確。 所以,在進行相關性分析實驗的之前,我們需要分兩步走: 1.進行假設檢驗,獲得p值<0.05,得到結論:總體的數據呈現相關性 2.進行相關性分析,得到r值 如果p值>0.05(或者0.01),則實驗失敗,抽樣數據無法反應整體情況。不管r值表現如何都是偶然事件。 只有在p值<0.05(或者0.01)的前提下,才可以參考r值,進而判斷相關程度。三、兼談假設檢
假設檢驗的3種類型
假設檢驗的套路:
四、利用Python進行相關性分析
判定兩者相關的方式有兩種:
我們用第二種
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from scipy.stats import kstest from scipy import stats #讀入數據 data=pd.read_csv('http://jse.amstat.org/datasets/normtemp.dat.txt',header=None,sep='s+',names=['Temperature','sex','heart'])print(data.describe())Temperature_data = data['Temperature'] u = data['Temperature'].mean() std = data['Temperature'].std()r,p = stats.pearsonr(data.Temperature, data.heart) print('相關系數r為 = %6.3f,p值為 = %6.3f'%(r,p))相關系數r為 = 0.254,p值為 = 0.004得到:相關系數r=0.021,p值為=0.004
結論:總體的數據呈相關性,且相關系數為:0.021,但不是線性相關。
五、拓展
對于多維數據,需要計算兩兩之間的相關性。
比如是思維數據,列名分別為:A、B、C、D
就需要計算:
A:B、C、D
B:A、C、D
C:A、B、D
D:A、B、C
代碼如下:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import scipy.stats as stats# 導入數據 data = pd.DataFrame(數據地址) #或者 data=pd.read_csv(數據地址) # 相關性計算 print(data.corr()) # 繪圖 fig = pd.plotting.scatter_matrix(data,figsize=(6,6),c ='blue',marker = 'o',diagonal='',alpha = 0.8,range_padding=0.2) # diagonal只能為'hist'/'kde' plt.show()假設檢驗
Python真香:用Python作假設檢驗?zhuanlan.zhihu.com總結
以上是生活随笔為你收集整理的python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是方向图乘积定理_初中数学竞赛试题—
- 下一篇: c++ substr截取中间部分字符串_