赞
踩
如果两组数据
X
:
{
X
1
,
X
2
,
⋯
,
X
n
}
X:\left\{X_{1}, X_{2}, \cdots, X_{n}\right\}
X:{X1,X2,⋯,Xn} 和
Y
:
{
Y
1
,
Y
2
,
⋯
,
Y
n
}
Y:\left\{Y_{1}, Y_{2}, \cdots, Y_{n}\right\}
Y:{Y1,Y2,⋯,Yn} 是总体数据
那么总体均值:
E
(
X
)
=
∑
i
=
1
n
X
i
n
,
E
(
Y
)
=
∑
i
=
1
n
Y
i
n
E(X)=\frac{\sum_{i=1}^{n} X_{i}}{n}, E(Y)=\frac{\sum_{i=1}^{n} Y_{i}}{n}
E(X)=n∑i=1nXi,E(Y)=n∑i=1nYi
总协方差:
Cov
(
X
,
Y
)
=
∑
i
=
1
n
(
X
i
−
E
(
X
)
)
(
Y
i
−
E
(
Y
)
)
n
\operatorname{Cov}(X, Y)=\frac{\sum_{i=1}^{n}\left(X_{i}-E(X)\right)\left(Y_{i}-E(Y)\right)}{n}
Cov(X,Y)=n∑i=1n(Xi−E(X))(Yi−E(Y))
直观理解协方差:如果X、Y变化方向相同,即当X大于(小于)其均值时,Y也大于(小于)其均值,在这两种情况下,乘积为正。如果X、Y的变化方向一直保持相同,则协方差为正;同理,如果X、Y变化方向一直相反,则协方差为负;如果X、Y变化方向之间相互无规律,即分子中有的项为正,有的项为负,那么累加后正负抵消。
注意:协方差的大小和两个变量的量纲有关,因此不适合做比较。
总体 Pearson 相关系数:
ρ
X
Y
=
Cov
(
X
,
Y
)
σ
X
σ
Y
=
∑
i
=
1
n
(
X
i
−
E
(
X
)
)
σ
X
(
Y
i
−
E
(
Y
)
)
σ
Y
n
\rho_{X Y}=\frac{\operatorname{Cov}(X, Y)}{\sigma_{X} \sigma_{Y}}=\frac{\sum_{i=1}^{n} \frac{\left(X_{i}-E(X)\right)}{\sigma_{X}} \frac{\left(Y_{i}-E(Y)\right)}{\sigma_{Y}}}{n}
ρXY=σXσYCov(X,Y)=n∑i=1nσX(Xi−E(X))σY(Yi−E(Y))
其中
σ
X
,
σ
Y
{{\sigma }_{X}},{{\sigma }_{Y}}
σX,σY 是
X
,
Y
X,Y
X,Y 的标准差
σ
X
=
∑
i
=
1
n
(
X
i
−
E
(
X
)
)
2
n
,
σ
Y
=
∑
i
=
1
n
(
Y
i
−
E
(
Y
)
)
2
n
\sigma_{X}=\sqrt{\frac{\sum_{i=1}^{n}\left(X_{i}-E(X)\right)^{2}}{n}}, \sigma_{Y}=\sqrt{\frac{\sum_{i=1}^{n}\left(Y_{i}-E(Y)\right)^{2}}{n}}
σX=n∑i=1n(Xi−E(X))2
,σY=n∑i=1n(Yi−E(Y))2
可以证明,
∣
ρ
X
Y
∣
≤
1
\left|\rho_{X Y}\right| \leq 1
∣ρXY∣≤1, 且当
Y
=
a
X
+
b
Y=a X+b
Y=aX+b 时,
ρ
X
Y
=
{
1
,
a
>
0
−
1
,
a
<
0
\rho_{X Y}=\left\{
假设有两组数据
X
:
{
X
1
,
X
2
,
⋯
,
X
n
}
X:\left\{X_{1}, X_{2}, \cdots, X_{n}\right\}
X:{X1,X2,⋯,Xn} 和
Y
:
{
Y
1
,
Y
2
,
⋯
,
Y
n
}
Y:\left\{Y_{1}, Y_{2}, \cdots, Y_{n}\right\}
Y:{Y1,Y2,⋯,Yn} (一般调查得到的数据均为样本数据)
样本均值:
X
ˉ
=
∑
i
=
1
n
X
i
n
,
Y
ˉ
=
∑
i
=
1
n
Y
i
n
\bar{X}=\frac{\sum_{i=1}^{n} X_{i}}{n}, \bar{Y}=\frac{\sum_{i=1}^{n} Y_{i}}{n}
Xˉ=n∑i=1nXi,Yˉ=n∑i=1nYi
样本协方差:
Cov
(
X
,
Y
)
=
∑
i
=
1
n
(
X
i
−
X
ˉ
)
(
Y
i
−
Y
ˉ
)
n
−
1
\operatorname{Cov}(X, Y)=\frac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)\left(Y_{i}-\bar{Y}\right)}{n-1}
Cov(X,Y)=n−1∑i=1n(Xi−Xˉ)(Yi−Yˉ)
样本Pearson 相关系数:
r
X
Y
=
Cov
(
X
,
Y
)
S
X
S
Y
r_{X Y}=\frac{\operatorname{Cov}(X, Y)}{S_{X} S_{Y}}
rXY=SXSYCov(X,Y)
其中:
S
X
,
S
Y
{{S}_{X}},{{S}_{Y}}
SX,SY 是的样本标准差
S
X
=
∑
i
=
1
n
(
X
i
−
X
ˉ
)
2
n
−
1
,
S
Y
=
∑
i
=
1
n
(
Y
i
−
Y
ˉ
)
2
n
−
1
S_{X}=\sqrt{\frac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^{2}}{n-1}},S_{Y}=\sqrt{\frac{\sum_{i=1}^{n}\left(Y_{i}-\bar{Y}\right)^{2}}{n-1}}
SX=n−1∑i=1n(Xi−Xˉ)2
,SY=n−1∑i=1n(Yi−Yˉ)2
注:为什么除以n-1? 如果除以n,对样本方差的估计不是无偏估计,比总体方 差要小,要想是无偏估计就要调小分母,所以除以n-1
四个散点图对应的数据的皮尔逊相关系数均为0.816(图1-4)
冰激凌的销量和温度之间的关系,相关系数计算结果为0(图5)blog.csdn
这里的相关系数只是用来衡量两个变量线性相关程度的指标;也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何。
(1)非线性相关也会导致线性相关系数很大,例如图2。
(2)离群点对相关系数的影响很大,例如图3,去掉离群点后,相关系数为0.98。
(3)如果两个变量的相关系数很大也不能说明两者相关,例如图4,可能是受到了异常值的影响。
(4)相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关),例如图5。
(1)如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱;
(2)在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明那两个变量线性相关,甚至不能说他们相关,我们一定要画出散点图来看才行。
在判断样本的 r \mathrm{r} r 是否有意义,需与总体相关系数 ρ = 0 \rho=0 ρ=0 进行比较,看两者的差别有无统计学意义。这就要对进行假设检验,判断不等于 0 是 由于抽样误差所致,还是两个变量之间确实存在相关关系。 步骤:
t检验法
计算检验统计量
t
r
t_r
tr,查界值表,得到
P
P
P 值
t
r
=
∣
r
−
0
∣
1
−
r
2
n
−
2
t_r=\frac{|r-0|}{\sqrt{\frac{1-r^2}{n-2}}}
tr=n−21−r2
∣r−0∣
# %% import numpy as np import pandas as pd from scipy.stats import pearsonr import seaborn as sns import matplotlib.pyplot as plt from scipy import stats # 2.0.1无法读取xlsx文件,降低版本到1.2.0 pip install xlrd==1.2.0 test_data = pd.read_excel(r"八年级女生体测数据.xlsx") # 数据统计 Desc = test_data.describe() """ 方式一: Dataframe.corr() 计算两两之间的相似度,返回Dataframe类型 Series.corr(other) 计算该序列与传入序列相关度,返回一个数值 例如:data['身高'].corr(data['体重']) DataFrame.corr(method='pearson', min_periods=1) 参数说明: method:可选值为{‘pearson’, ‘kendall’, ‘spearman’} Pearson相关系数样本必须是正态分布,衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。 kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据 spearman:非线性的,非正太分布的数据的相关系数 min_periods:样本最少的数据量,最少为1 """ result_1 = test_data.corr(method='pearson') """ 方式二: 将Dataframe转换为array,array.corrcoef(data),返回相关度二维数组 """ data = np.array(test_data) # numpy自带函数,rowvar=False代表以列为变量 result_2 = np.corrcoef(data, rowvar=False) """ 方式三: scipy.stats中的pearsonr(X,Y)分析两个变量,无法计算相关矩阵 返回值: r : float,皮尔逊相关系数,[-1,1]之间。 p-value : float,Two-tailed p-value(双尾P值)。 注:p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。可以理解为显著性水平。 """ result_3 = pearsonr(test_data['身高'], test_data['体重']) """ 数据可视化 """ # 相关性热力图可视化 ax = sns.heatmap(result_1, vmax=1, cmap='RdYlGn', annot=True) ax.set_xticklabels(list(test_data)) ax.set_yticklabels(list(test_data)) # 设置中文标签显示 plt.rcParams['font.sans-serif'] = ['Kaitt', 'SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.show() # 生成散点图,可以初步判断正态分布 ax_1 = sns.pairplot(test_data) plt.show() for i in list(test_data): index_i = list(test_data).index(i) plt.subplot(3,2,index_i+1) sns.histplot(test_data[i], kde=True) plt.show() """ 正态分布KS检验 满足p > 0.05的情况,服从正态分布。 """ print(Desc) All_mean = Desc.loc['mean'] All_std = Desc.loc['std'] for i in list(test_data): statistic, pvalue = stats.kstest(test_data[i], 'norm', (All_mean.loc[i], All_std.loc[i])) print(pvalue)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。