如何在不同的时间尺度上计算 RMSE

Posted

技术标签:

【中文标题】如何在不同的时间尺度上计算 RMSE【英文标题】:How to calculate RMSE on different time scale 【发布时间】:2016-11-10 12:35:04 【问题描述】:

我有 18 年的每日模拟和观察数据,我可以使用此代码计算 RMSE;

sqrt( mean( (df$simulated-df$observed)^2 , na.rm = TRUE ) )

但我必须在整个时间段、每年、每月、每周和季节性时间尺度上计算不同时间序列的 RMSE。 此外,我想执行相关系数、方差、偏差和均值,并将所有结果放在一个文件中。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您应该检查 hydroTSMhydroGOF 包。他们应该有你想要的一切

例子:

    # Getting the new numeric goodness-of-fit measures
    gof(sim = Simulated, obs = Observed)

    # Plot 'obs' vs 'sim' for the daily,
    # monthly and annual time series 
    ggof(sim = Simulated, obs = Observed, ylab = "Q (ft3/day)",
         ftype = "dma", FUN = mean)

    ggof(sim = Sim, obs = Obs, ylab = "Q (ft3/day)",
         ftype = "seasonal", FUN = mean)

【讨论】:

是的,我正在使用hydroGOF包,你想分享代码吗? @thecatalyst,由于模拟数据和观测数据都存在缺失值,我们如何处理这些代码中的缺失值? 查看 Mauricio 在他的 Github 上的代码,然后在适用的情况下包含 na.rm = TRUE ggof.R。该函数调用hydroTSM package中的几个函数 我在计算 Mauricio 的代码时收到此错误,如何纠正这些错误 [注意:'sim' & 'obs' 不是动物园对象 => 'ftype' 已更改为 'o ' ] xy.coords(x, y, xlabel, ylabel, log) 中的错误:“x”是一个列表,但没有组件“x”和“y”另外:警告消息:1:“rNSE”可以不可计算:'obs' 中的某些元素为零! 2:“rd”无法计算:“obs”中的某些元素为零!【参考方案2】:

如果缩放是一个问题,那么建议您事先对数据进行标准化和规范化。这可以通过将日期编码为有意义的数字表示来完成。

您可以从拟合模型的摘要中提取大部分所需的统计数据,您可以使用str() 进行探索。您还可以从 Metrics 包中获得很多有用的统计信息,包括 RMSE。

【讨论】:

以上是关于如何在不同的时间尺度上计算 RMSE的主要内容,如果未能解决你的问题,请参考以下文章

Python Dataframe:在一列上使用Groupby计算R ^ 2和RMSE

pls R 的交叉验证中如何计算 R2 和 RMSE

如何将 RMSE、斜率、截距、r^2 添加到 R 图中?

如何获得与R一样的Pandas数据帧的类似摘要?

matlab如何求一副图像的信噪比SNR与均方根误差RMSE

如何在空间和频域的每个尺度和方向上创建 64 个 Gabor 特征