与用户定义函数的协方差和相关性

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函数

概率统计笔记: 协方差与相关系数

线性相关|回归分析|

Excel 公式CORREL算出来应该是啥相关系数?

猿创征文|时间序列分析算法之平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现

度量线性相关性之协方差与相关系数