- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在研究两个相对较小的时间序列之间的互相关性,但在尝试完成的过程中,我遇到了一个我无法调和的问题。首先,我了解 plt.xcorr 和 np.correlate 之间的依赖关系。但是,我无法协调零延迟时的 plt.xcorr
和 np.corrcoef
之间的差异?
a = np.array([ 7.35846410e+08, 8.96271634e+08, 6.16249222e+08,
8.00739868e+08, 1.06116376e+09, 9.05690167e+08,
6.31383600e+08])
b = np.array([ 1.95621617e+09, 2.06263134e+09, 2.27717015e+09,
2.27281916e+09, 2.71090116e+09, 2.84676385e+09,
3.19578883e+09])
np.corrcoef(a,b)
# returns:
array([[ 1. , 0.02099573],
[ 0.02099573, 1. ]])
plt.xcorr(a,b,normed=True, maxlags=1)
# returns:
array([-1, 0, 1]),
array([ 0.90510941, 0.97024415, 0.79874158])
我预计它们会返回相同的结果。我显然不明白 plt.xcorr
是如何规范的,有人可以帮我纠正一下吗?
最佳答案
标准“ PIL 逊积矩相关系数”的计算是使用按平均值移动的样本。互相关系数不使用归一化样本。除此之外,计算是相似的。但这些系数仍然具有不同的公式和不同的含义。仅当样本 a
和 b
的平均值等于 0
时,它们才相等(如果按平均值移动不会改变样本)。
import numpy as np
import matplotlib.pyplot as plt
a = np.array([7.35846410e+08, 8.96271634e+08, 6.16249222e+08,
8.00739868e+08, 1.06116376e+09, 9.05690167e+08, 6.31383600e+08])
b = np.array([1.95621617e+09, 2.06263134e+09, 2.27717015e+09,
2.27281916e+09, 2.71090116e+09, 2.84676385e+09, 3.19578883e+09])
y = np.corrcoef(a, b)
z = plt.xcorr(a, b, normed=True, maxlags=1)
print("Pearson product-moment correlation coefficient between `a` and `b`:", y[0][1])
print("Cross-correlation coefficient between `a` and `b` with 0-lag:", z[1][1], "\n")
# Calculate manually:
def pearson(a, b):
# Length.
n = len(a)
# Means.
ma = sum(a) / n
mb = sum(b) / n
# Shifted samples.
_ama = a - ma
_bmb = b - mb
# Standard deviations.
sa = np.sqrt(np.dot(_ama, _ama) / n)
sb = np.sqrt(np.dot(_bmb, _bmb) / n)
# Covariation.
cov = np.dot(_ama, _bmb) / n
# Final formula.
# Note: division by `n` in deviations and covariation cancel out each other in
# final formula and could be ignored.
return cov / (sa * sb)
def cross0lag(a, b):
return np.dot(a, b) / np.sqrt(np.dot(a, a) * np.dot(b, b))
pearson_coeff = pearson(a, b)
cross_coeff = cross0lag(a, b)
print("Manually calculated coefficients:")
print(" Pearson =", pearson_coeff)
print(" Cross =", cross_coeff, "\n")
# Normalized samples:
am0 = a - sum(a) / len(a)
bm0 = b - sum(b) / len(b)
pearson_coeff = pearson(am0, bm0)
cross_coeff = cross0lag(am0, bm0)
print("Coefficients for samples with means = 0:")
print(" Pearson =", pearson_coeff)
print(" Cross =", cross_coeff)
输出:
Pearson product-moment correlation coefficient between `a` and `b`: 0.020995727082
Cross-correlation coefficient between `a` and `b` with 0-lag: 0.970244146831
Manually calculated coefficients:
Pearson = 0.020995727082
Cross = 0.970244146831
Coefficients for samples with means = 0:
Pearson = 0.020995727082
Cross = 0.020995727082
关于python - 0-lag 时的标准化 plt.xcorr 和 np.corrcoef 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628497/
np.corrcoef 的作用 计算 Pearson 乘积矩相关系数。它可以用来分析给定数据集中各个变量之间的线性相关程度,返回一个相关系数矩阵,相关系数矩阵中的值介于 -1 到 1
我试图计算从文本中读取的大量数据之间的相关性。对于非常大的数据集,程序会出现内存错误。谁能告诉我如何解决这个问题。谢谢 以下是我的代码: enter code here import numpy fr
我正在尝试计算多个值的相关矩阵。这些值包括一些“nan”值。我正在使用 numpy.corrcoef。对于输出相关矩阵的元素(i,j),我想使用变量 i 和变量 j 存在的所有值计算相关性。 这是我现
np.corrcoef 返回一个矩阵对我来说似乎很奇怪。 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns) [[ 1.
我想计算矩阵A的每个列向量与矩阵B列向量之间的相关性强>. 考虑: vectorsize = 777 A = np.random.rand(vectorsize, 64) B = np.random.
我正在尝试计算一个像素与整个图像的相关系数。我有以下有效的代码 #load picture from serialized data 21 channels, ~500 x ~900 px pic=p
我对生成相关随机变量有疑问...有没有一种方法可以生成 x1(0, 1)、x2(0, 1),它们通常具有 rho = 0;或生成x3(0, 1), x4(0, 1) 有 rho = 0.75 还是其他
我需要两个矩阵 X,Y 之间的 PIL 逊相关系数。如果我运行代码 corr=numpy.corrcoef(X,Y) 我的输出是一个具有相关系数的矩阵。但是我需要一个值来表示两个矩阵之间的相关性。 我
我需要两个矩阵 X,Y 之间的 PIL 逊相关系数。如果我运行代码 corr=numpy.corrcoef(X,Y) 我的输出是一个具有相关系数的矩阵。但是我需要一个值来表示两个矩阵之间的相关性。 我
我正在尝试按列关联两个矩阵。即,将第一个矩阵的第一列与第二个矩阵的第一列相关联,依此类推。在 numpy 中我这样做: np.corrcoef(x, y, axis=0) 效果很好。该命令的 Tens
我使用 scipy 的 pdist 和相关度量来构建相关矩阵,但这些值与我从 numpy 的 corrcoef 获得的值不匹配。 我将 pdist 应用于一个非常简单的两个具有相同值的一维数组:[1,
我有两个一维数组,我想看看它们之间的相互关系。我应该在 numpy 中使用什么程序?我正在使用 numpy.corrcoef(arrayA, arrayB) 和 numpy.correlate(arr
为什么使用 np.corrcoef(x) 和 df.corr() 时 numpy 相关系数矩阵和 Pandas 相关系数矩阵不同? x = np.array([[0, 2, 7], [1, 1, 9]
我正在研究两个相对较小的时间序列之间的互相关性,但在尝试完成的过程中,我遇到了一个我无法调和的问题。首先,我了解 plt.xcorr 和 np.correlate 之间的依赖关系。但是,我无法协调零延
我正在尝试在 Python 中使用 Numpy 进行时间序列分析。 我有两个中等大小的系列,每个都有 20k 值,我想检查滑动相关性。 corrcoef 给了我一个自相关/相关系数矩阵作为输出。在我的
我希望有人能帮我回答为什么numpy.cov()和np.std()计算的相关结果与直接计算的结果不同>np.corrcoef(). 下面的代码显示了差异 import numpy as np impo
似乎 numpy 中的 corrcoef 在常量列表传递给 corrcoef() 时抛出一个 RuntimeWarning函数,例如下面的代码抛出警告: import numpy as np X =
我是一名优秀的程序员,十分优秀!