与用户定义函数的协方差和相关性
Posted
技术标签:
【中文标题】与用户定义函数的协方差和相关性【英文标题】:Covariance and Correlation with User Defined Function 【发布时间】:2021-03-20 08:04:26 【问题描述】:我的任务是编写两个用户定义的函数来计算协方差和相关性, 仅使用 numpy.sum、numpy.mean 和 numpy.std。
到目前为止,我已经编写了这些用户定义的函数:
# x and y are two data (series) as input parameters
#the 'mag and 'depth' are from my Data
def cov(x, y):
mean_x,mean_y = np.mean(x), np.mean(y)
n = len(x)
return sum((x - mean_x) * (y - mean_y)) / n
def corr(x,y):
x_std= np.std (x)
y_std= np.std (y)
return cov(x,y) / (np.std(x)*np.std(y))
当我将我的数据与 numpy.corrcoef() 进行比较时,会出现其他结果。
cov(df['mag'],df['depth'])
corr(df['mag'],df['depth'])
np.corrcoef(df['mag'],df['depth'])
我的结果是:
2.144665744323871
0.32569403447524437
array([[1. , 0.32569403],
[0.32569403, 1. ]])
我的数据是: #我使用这里的“mag”和“depth”
data_url ='https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv'
df = pd.read_csv(data_url)
df.dropna(inplace=True)
df.reset_index(drop=True, inplace =True)
df
我找不到错误,有没有人有任何提示?谢谢!
【问题讨论】:
您的相关性是正确的..这里的问题是什么?np.corrcoef
总是返回一个成对的相关矩阵。可以看到对角线值是一样的
是的,现在我注意到了
【参考方案1】:
其实你是对的。 np.corrcoef()
函数似乎返回了相关系数矩阵。如您所见,对角线由 1 组成,因为一个变量与她自己的相关性为 1。至于其他值,它们是变量 x,y 的相关性,这与 y,x 的相关性相同。
【讨论】:
以上是关于与用户定义函数的协方差和相关性的主要内容,如果未能解决你的问题,请参考以下文章
什么是协方差与相关系数?协方差矩阵如何计算?np.cov函数