微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何使用稳健的线性回归或其他用户选择的模型去趋势 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 举报,一经查实,本站将立刻删除。