【问题标题】:Pearson correlation matrix in Python, ValueErrorPython中的皮尔逊相关矩阵,ValueError
【发布时间】:2019-08-31 00:22:34
【问题描述】:

我正在尝试获取一个矩阵,(lat, lon) 大小,每个网格点的 Pearson 系数值,对于

x : 一个 3D DataArray (time, lat, lon) (时间大小为 30)

y : 一个 DataArray 列向量,其中包含 30 个值系列

所以我想为 x 的 30 个元素的列向量计算每个 (lat,lon) 的 pearson 系数。

我试过了:

corrmap = xr.DataArray(x2)
for i in range(len(corrmap['lat']))
     for j in range(len(corrmap['lon']))
          corrmap[i, j], p_value = pearsonr(x[:, i, j], y)

但我收到此错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我无法完全理解其含义。我的方法不正确吗?我应该使用其他类型的代码来解决我的问题吗?

任何帮助将不胜感激。

【问题讨论】:

  • 什么是y.shape? (我假设 DataArray 对象具有 shape 属性。)
  • pearsonr 是从scipy.stats 导入的吗?如果不是,它是在哪里定义的?
  • 对不起,我忘了说 y.shape 是 (30, 1),所以是列向量。是的,我做到了,我从 scipy.stats 正确导入了 pearsonr
  • "... y.shape 是 (30, 1),所以是列向量。" 这就是问题所在。请参阅@JulianGiles 的回答。

标签: python python-3.x correlation python-xarray pearson


【解决方案1】:

假设您使用的是scipy.stats.pearsonr。 PearsonR 的参数应该是一维数组。

那就试试吧:

corrmap[i, j], p_value = pearsonr(x[:, i, j].ravel(), y)

ravel() 所做的是返回连续的扁平数组, Numpy ravel()

这里还有一些关于您遇到的错误的背景信息,evaluate array in boolean context。换句话说,额外的维度可能导致某些操作被应用于数组而不是标量。 此问题与您的问题相同:SO: PearsonR ValueError

【讨论】:

  • 非常感谢您的回答。是的,我从 scipy.stats 正确导入了 pearsonr。无论如何,进行您建议的更正(我理解并批准)我得到一个 AttributeError,因为“'DataArray object'没有属性'ravel'。在开始时将 corrmap 初始化为 xr 是错误的吗?具有 (lat, lon) 形状的 DataArray?
【解决方案2】:

问题是您使用的是y,它有两个维度,pearsonr 无法处理。指定y[:,0] 即可。那就是:

corrmap = np.zeros(((len(corrmap['lat']), len(corrmap['lon'])))

for i in range(len(corrmap['lat'])):
     for j in range(len(corrmap['lon'])):
          corrmap[i, j], p_value = pearsonr(x[:, i, j], y[:,0])

另外,我将只使用一个 numpy 数组来代替 xarray,至少要获取值,然后您可以将其转换为 xarray。

【讨论】:

    【解决方案3】:

    您可以使用以下方法计算 Pearson 相关系数:

    import numpy
    numpy.corrcoef(list1, list2)[0, 1]
    

    【讨论】:

      猜你喜欢
      • 2015-07-18
      • 2014-11-13
      • 2016-08-24
      • 2014-04-11
      • 2011-09-13
      • 2020-05-23
      • 1970-01-01
      • 2021-08-29
      • 2011-08-20
      相关资源
      最近更新 更多