适用条件:变量需要满足正态分布 计算表达式:
r
=
∑
(
x
−
m
x
)
(
y
−
m
y
)
∑
(
x
−
m
x
)
2
∑
(
y
−
m
y
)
2
r=\frac{\sum\left(x-m_{x}\right)\left(y-m_{y}\right)}{\sqrt{\sum\left(x-m_{x}\right)^{2} \sum\left(y-m_{y}\right)^{2}}}
r=∑(x−mx)2∑(y−my)2∑(x−mx)(y−my) pytho代码,两个返回值,分别返回:相关系数和pvalue。pvalue空假设是两变量相关系数为0,pvalue越小越拒绝原假设,故越线性相关
from scipy import stats
a = np.array([0,0,0,1,1,1,1])
b = np.arange(7)
stats.pearsonr(a, b)
from scipy import stats
a = np.array([0,0,0,1,1,1,1])
b = np.arange(7)
stats.spearmanr(a, b)
线性拟合/回归
定量描述两个变量间依存关系的统计分析方法。 适用条件:
两变量变化关系呈线性趋势;
每个数据样本之间相互独立;
X和Y服从正态分布;
求线性回归方程主要依据最小二乘法(least square method)
最小二乘法(optimize.least_squares)
在曲线拟合问题中, 使得剩余平方和(residual sum of squares)
S
S
r
e
s
=
∑
i
(
y
i
−
f
i
)
2
SS_{\mathrm{res}}=\sum_{i}\left(y_{i}-f_{i}\right)^{2}
SSres=∑i(yi−fi)2最小的方法。 当
f
i
f_{i}
fi为线性函数时,称为线性最小二乘问题;对于线性问题,可以直接通过线性方程组求出使得
S
S
r
e
s
SS_{\mathrm{res}}
SSres最小的系数。 当
f
i
f_{i}
fi为非线性函数时,称为非线性最小二乘问题。对非线性问题据需要适用不同的优化算法(梯度下降等)进行求解。
注意并不是相关系数的平方 学术名词,决定系数(Coefficient of determination),一个统计量用来评价模型预测量与观测值的变异(variation) 计算表达式:
R
2
=
1
−
S
S
res
S
S
tot
R^{2}=1-\frac{S S_{\text {res }}}{S S_{\text {tot }}}
R2=1−SStot SSres 式中,剩余平方和
S
S
r
e
s
=
∑
i
(
y
i
−
f
i
)
2
SS_{\mathrm{res}}=\sum_{i}\left(y_{i}-f_{i}\right)^{2}
SSres=∑i(yi−fi)2 总的平方和
S
S
t
o
t
=
∑
(
y
i
−
y
ˉ
)
2
S S_{\mathrm{tot}}=\sum\left(y_{i}-\bar{y}\right)^{2}
SStot=∑(yi−yˉ)2
代码实现
from sklearn.metrics import r2_score
R_square = r2_score(a, b)