导入numpy库
import numpy as np
,NumPy提供了大量的数学函数和矩阵运算功能,可以方便地处理数组、计算模长、点积等操作。定义函数included_angle(a, b)
np.dot(a, b)
,这代表了两个向量在方向上的相似程度。np.arccos
)将余弦值转换为弧度表示的夹角。实例化多个向量对
included_angle
函数计算它们之间的夹角。计算向量夹角.py
included_angle
的函数,用于计算两个输入向量(a, b)之间的夹角。首先,利用NumPy库计算两个向量的模长,然后通过点积公式求出两向量间余弦值,再利用反余弦函数得到弧度表示的夹角,并转换为角度。接下来,作者实例化了三个不同的二维数组对(x, y),分别计算它们的夹角并打印输出。夹角大小反映了向量间的相关性:锐角表明正相关,钝角负相关,直角则不相关。计算向量相关系数是统计学中用于衡量两个随机变量之间线性关联程度的方法。在多变量分析和数据分析领域,尤其是在处理数值型数据时,相关系数是一个非常重要的工具。对于向量形式的数据,可以将每个变量看作一个维度上的分量,通过计算这些向量之间的相关系数来评估它们在统计意义上的相互依赖关系。
样本相关系数:对于两个一维向量(或者说变量)X和Y,其样本相关系数(记作r)是通过计算协方差与各自标准差的乘积之比得到的。
r x y = ∑ i = 1 n ( x i ? x ˉ ) ( y i ? y ˉ ) ∑ i = 1 n ( x i ? x ˉ ) 2 ∑ i = 1 n ( y i ? y ˉ ) 2 \displaystyle r_{xy} = \frac{\displaystyle\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\displaystyle\sum_{i=1}^{n}(x_i - \bar{x})^2}\sqrt{\displaystyle\sum_{i=1}^{n}(y_i - \bar{y})^2}} rxy?=i=1∑n?(xi??xˉ)2?i=1∑n?(yi??yˉ?)2?i=1∑n?(xi??xˉ)(yi??yˉ?)?
r的取值范围在-1到1之间,正值表示正相关,负值表示负相关,0表示无线性相关。
计算向量相关系数.py
"""
功能:计算向量相关系数
作者:华卫
日期:2024年01月11日
"""
import numpy as np
def r(x, y):
xm = x.mean()
ym = y.mean()
numerator = np.mean(((x- xm) * (y - ym)))
denominator = np.std(x) * np.std(y)
return numerator / denominator
x = np.array([12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9])
y = np.array([21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5])
print(f'x = {x}')
print(f'y = {y}')
print(f'x与y的相关系数: {r(x, y)}')
该代码段定义了一个名为r
的函数,用于计算两个一维NumPy数组(向量)x
和y
之间的皮尔逊样本相关系数。首先,通过调用NumPy库中的mean()
方法分别计算两向量的平均值xm
和ym
。接着,计算协方差的估计值作为分子部分,即求取(x-xm) * (y-ym)
的元素积后取均值。然后,通过求解两向量的标准差并相乘得到分母部分。最后,将分子除以分母得到相关系数,并返回结果。
在实际应用中,示例创建了两个包含10个浮点数元素的一维数组x
和y
,并调用r(x, y)
函数计算它们的相关系数,将结果输出到控制台。通过这个相关系数,可以判断x
与y
之间是否存在线性关系及其强度(正相关、负相关或无相关)。
included_angle
用于求解向量夹角,并实例化多个向量对进行演示。然后,介绍了计算样本相关系数的方法,并在代码中实现了皮尔逊相关系数的计算函数r(x, y)
,该函数利用协方差与各自标准差的比值来衡量变量间的线性依赖。最后,通过对具体一维数组(向量)x和y应用此函数,得出它们具有高度正相关的结论。这些统计工具在数据分析、机器学习等众多领域中都有着广泛的应用价值。