1.相关系数的计算公式: r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i − y ˉ ) 2 r=\frac{\sum (x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum (x_{i}-\bar{x})^{2}\sum(y_{i}-\bar{y})^{2}} r=∑(xi−xˉ)2∑(yi−yˉ)2∑(xi−xˉ)(yi−yˉ) 2. 统计量: t = r ∗ n − 2 1 − r 2 , 自 由 度 : ( n − 2 ) t=\frac{r*\sqrt{n-2}}{\sqrt{1-r^{2}}} , 自由度:(n-2) t=1−r2r∗n−2,自由度:(n−2) 3.根据 t 统计量来计算显著性水平,从而确认 ( x , y ) (x,y) (x,y)之间的相关性是否显著( H 0 H0 H0:相关系数等于0,即相关性不显著)。
import pandas as pd
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.linear_model import LinearRegression
data=pd.DataFrame()
data=pd.DataFrame(pd.read_excel(r"D:\myfolder\al5-1.xls"))
x=np.array(data[['adv']])
y=np.array(data[['sale']])
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.xlabel('X')
plt.ylabel('Y')
colors1 ='#00CED1'#点的颜色
area = np.pi *16**2# 点面积
plt.scatter(x, y, s=area, c=colors1, alpha=0.4, label='散点图:adv-sale')
plt.plot(linewidth ='0.5',color='#000000')
plt.legend()print(type(x))#<class 'numpy.ndarray'>
x=np.squeeze(x)
y=np.squeeze(y)
corr,pval=stats.pearsonr(x,y)print('相关系数(pearson 间隔量表) = %6.5f 显著性水平 = %6.5f'%(corr, pval))
corr,pval=stats.spearmanr(x,y)print('相关系数(spearman 顺序量表) = %6.5f 显著性水平 = %6.5f'%(corr, pval))