【问题标题】:How to remove seasonality from time series data?如何从时间序列数据中去除季节性?
【发布时间】:2020-09-21 20:59:53
【问题描述】:

如何使用存储在 netcdf 文件中的数据从时间序列中删除季节性数据?我想找到一个使用 Linux 的解决方案,而我使用 Grads 和 Ferret 进行可视化。

非常感谢!

【问题讨论】:

    标签: netcdf weather nco cdo-climate


    【解决方案1】:

    您可以使用 CDO 计算一年中每一天/每个月的平均值并从原始文件中减去:

    如果文件包含每日数据:

    cdo sub in.nc -ydaymean in.nc deseasonalized.nc  
    

    如果数据是月度数据,同样如此:

    cdo sub in.nc -ymonmean in.nc deseasonalized.nc  
    

    ydaymean 和 ymonmean 命令计算数据集 in.nc 的年周期,即 ymonmean 返回 12 个时间片,即所有 1 月、2 月等的平均值,然后使用 sub 从原始文件中减去。我用过管道,但分两条线可能更容易理解:

    cdo ymonmean in.nc annual_cycle.nc
    cdo sub in.nc annual_cycle.nc deseasonalized.nc
    

    这完全一样,deseasonalized.nc 将是相同的(几乎,由于 netcdf 全局元数据标头中的“历史”日志不同,会有一些字节差异),但是您还将有一个新文件,其中包含 annual_cycle.nc(可能也有用?)。

    在进行减法时,CDO 检测到要减去的第二个文件中的时间片数较小,因此循环/循环通过它。 注意 因为季节性周期是从与原始数据相同的文件中计算出来的,所以如果数据以例如四月,ymonmean的结果也将从四月开始。但是,如果您想删除从不同来源计算得出的季节性周期,则开始日期/月份可能会有所不同,您最终会减去例如四月意味着从一月开始!为避免这种情况,您可以改用 ymonsub 命令:

    cdo ymonsub full_timeseries.nc seasonal_file.nc deseasonalised.nc 
    

    Edit 2021:我现在有一个关于这个主题的视频,你可以在这里观看https://youtu.be/jKlA1ouoQIs

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 2015-11-24
      • 2014-08-20
      • 2017-03-11
      • 2017-02-26
      • 2019-08-07
      • 2021-03-18
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多