Py学习  »  Python

Python-时空超前滞后相关分析

happy科研 • 1 年前 • 817 次点击  

今天决定来记录一下新的知识,那就是三维格点数据的超前和滞后(lead & lag)相关系数的计算与制图


再次之前已经测试过三维格点数据的常见的皮尔逊相关和斯皮尔曼,还有偏相关分析,如果没有阅读过的话可以点击如下内容跳转阅读。1.空间场的相关性分析,2,改进的相关性分析测试




So,常见的网格的相关性分析还是很容易搞定的,后期绘图即使使用Python还是GIS软件都可以很方便地可视化出来。But,现在需要研究的是超前和滞后的相关性分析,数据格式是netCDF。我相信大家都认识时间序列的自相关分析,该方法用来研究时间序列本身之间的相关性,比如今天天气的平均温和它自己过去一周的平均温之间的关系,结果图称为自相关图。那么针对一个空间场数据来说,我们要研究超前和滞后的相关关系,也是在时间维度上操作。


往往在做这类分析的时候需要找点关键的一个点。既然一维的时间序列可以做超前与之后分析,那么三维的按道理来说也是可以的,仅仅需要在时间维上做出相应的处理就行了。


我们知道netCDF中一般都有time维,So,这就好处理了。我们可以利用xarray来操作netCDF数据的时间维,corr_lead = xr.corr(1d序列,3维格点.shift(+-n),dim='time')。这样的话就实现了滞后和超前相关性分析。返回的结果是一个二维的相关系数场数据,因为时间维被缩减了。由于cartopy这个库比较难安装,所以我在colab中测试了一下,结果是可以的,写出nc文件用ArcGIS打开可以看看大概是什么一个样子。下图的那个reg是超前回归的,正在显示的这个是超前18个月的相关性分析。So,它的操作原理已经清楚了,但是时间有限,后面更多的操作和图形美化需要自己去实践了。




然后还可以通过公式计算出sig95 显著性水平,最后将相关系数和显著性值一起绘制到地图上就搞定了。Xarray虽然有corr这个方法,但是没有提供计算p值的方法,所以这里需要自己计算t值来获得p-value。最后预期得到的图形是这种样子的[https://www.nature.com/articles/s41598-018-33191-7]。



希望上述内容对三维netCDF格点数据的超前和滞后相关性分析有所启发。



往 期 推 荐
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135711
 
817 次点击