如何使用稳健的线性回归或其他用户选择的模型去趋势 xarray.DataSet或 xarray.DataArray?

问题描述

我的 xarray.DataSet 具有三个维度(纬度、经度和时间)和一个数据变量 (var)。所以,它是每个网格单元的 var 的时间序列。

我想使用鲁棒线性回归(不是通常的最小二乘回归)去趋势每个网格单元的时间序列,例如,sm.RLM()

我发现了一些可能有用的函数,例如 xscale.signal.fitting.detrendhere,但它们都使用了普通的最小二乘法。

我可以使用 for 制作一个脚本,该脚本将 sm.RLM() 应用于网格单元(即对于像素 1,应用 sm.RLM(),连接到 DataArray 以获得结果,然后移动到像素 2, apply sm.RLM(),concatenate,...),但它太慢了(我糟糕的编码技能......)。

这是一个玩具示例 xarray.DataArray()修改https://towardsdatascience.com/basic-data-structures-of-xarray-80bab8094efa

np.random.seed(111)

temperature_3d = 15 + 10 * np.random.randn(3,3,30)    # 3-dimensional
lat = np.random.uniform(low=-90,high=90,size=(3,3))
lon = np.random.uniform(low=-180,high=180,3))
days = np.linspace(1,30,30)

# round to two digits after decimal point
temperature_3d = np.around(temperature_3d,decimals=2)
lat,lon = np.around([lat,lon],decimals=2)

da = xr.DataArray(data=temperature_3d,coords={"lat": (["x","y"],lat),"lon": (["x",lon),"day": days},dims=["x","y","day"])

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)