gpt4 book ai didi

matlab - 两个向量之间的相关性?

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:52 24 4
gpt4 key购买 nike

我有两个向量:

A_1 = 

10
200
7
150

A_2 =
0.001
0.450
0.0007
0.200

我想知道这两个向量之间是否存在相关性。

我可以用向量的平均值减去每个值,然后:

  A_1' * A_2

有没有更好的方法?

最佳答案

给定:

A_1 = [10 200 7 150]';
A_2 = [0.001 0.450 0.007 0.200]';

(正如其他人已经指出的那样)有一些工具可以简单地计算相关性,最明显的是 corr:

corr(A_1, A_2);  %Returns 0.956766573975184  (Requires stats toolbox)

您还可以使用基本 Matlab 的 corrcoef 函数,如下所示:

M = corrcoef([A_1 A_2]):  %Returns [1 0.956766573975185; 0.956766573975185 1];
M(2,1); %Returns 0.956766573975184

其中与cov函数密切相关:

cov([condition(A_1) condition(A_2)]);

正如您在最初的问题中几乎要提到的那样,您可以根据需要自行缩放和调整向量,这样可以稍微更好地理解正在发生的事情。首先创建一个条件函数,它减去均值,然后除以标准差:

condition = @(x) (x-mean(x))./std(x);  %Function to subtract mean AND normalize standard deviation

然后相关性似乎是 (A_1 * A_2)/(A_1^2),如下所示:

(condition(A_1)' * condition(A_2)) / sum(condition(A_1).^2);  %Returns 0.956766573975185

根据对称性,这也应该有效

(condition(A_1)' * condition(A_2)) / sum(condition(A_2).^2); %Returns 0.956766573975185

确实如此。

我相信,但现在没有精力确认,在处理多维输入时,可以使用相同的数学计算相关和互相关项,只要在处理维度时注意和输入数组的方向。

关于matlab - 两个向量之间的相关性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com