问题描述
我的 xarray.DataSet
具有三个维度(纬度、经度和时间)和一个数据变量 (var)。所以,它是每个网格单元的 var 的时间序列。
我想使用鲁棒线性回归(不是通常的最小二乘回归)去趋势每个网格单元的时间序列,例如,sm.RLM()
我发现了一些可能有用的函数,例如 xscale.signal.fitting.detrend
或 here,但它们都使用了普通的最小二乘法。
我可以使用 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 (将#修改为@)