我试图计算 xarray 中两个数据集之间沿时间维度的相关性。我的数据集都是lat x lon x time。其中一个数据集数据缺失太多,因此插值和消除缺失并不合理,相反,我希望忽略缺失值。我有一些简单的代码,但都不符合我的具体情况。例如:
def covariance(x,y,dims=None):
return xr.dot(x-x.mean(dims), y-y.mean(dims), dims=dims) / x.count(dims)
def correlation(x,y,dims=None):
return covariance(x,y,dims) / (x.std(dims) * y.std(dims))
在没有数据缺失的情况下效果很好,但当然不能用于 nans。虽然这里有一个为xarray写的很好的例子,但即使使用这段代码,我也很难计算出pearson相关性而不是spearman相关性。
import numpy as np
import xarray as xr
import bottleneck
def covariance_gufunc(x, y):
return ((x - x.mean(axis=-1, keepdims=True))
* (y - y.mean(axis=-1, keepdims=True))).mean(axis&