【问题标题】:Standard Deviation of a percentage change in PythonPython中百分比变化的标准偏差
【发布时间】:2014-06-08 15:59:46
【问题描述】:

我有 2 个数据集。第一个数据集称为 X,具有 m(X) 的平均值和 STD(X) 的标准差,第二个数据集也具有 m(Y) 的平均值和 STD(Y) 的标准差。我想找出数据集 2 与数据集 1 相比的百分比变化(即平均值的变化比旧平均值乘以 100)。所以我有 ((m(Y)−m(X))/m(X))∗100。

现在我的问题是,您如何考虑这个百分比变化值的标准偏差(最好在 Python 中),以便将其作为误差线添加到图中?

【问题讨论】:

  • 请更准确地定义“数据集2相对于数据集1的百分比变化”
  • 你的定义只包括手段,为此你已经有了解决方案
  • 有些指标描述了一种“分布之间的距离”,将均值和标准差都考虑在内,例如Kullback-Leibler divergence
  • 计算百分比变化仅包括平均值。但是,现在我想用它们的误差线(从它们的标准偏差或标准误差得出)绘制这些值。我如何计算这些,因为原始标准差现在处于不同的范围内。

标签: python numpy statistics scipy


【解决方案1】:

我不知道您要查找的数量是否有单一定义,但估计错误的正常规则是:

  • 在添加或减去时添加绝对误差。
  • 在乘法或除法时添加相对误差。

假设您遵循这一点,m(Y) - m(X) 中的错误为std(X) + std(Y),相对错误为(std(X) + std(Y)) / (m(Y) - m(X))。在分母中加上相对误差——std(X) / m(X)——你就有了整体的相对误差。如果你想要你的百分比误差,然后乘以实际值。

有些事情抵消了,结果是:

 100 * (std(X) + std(Y)) / m(X) + 100 * std(X) / (m(Y) - m(X))

【讨论】:

  • 感谢@otus 的回复。当我实现这一点时,我开始为没有意义的估计错误获取有线数字。例如:以m(X)=0.395782562659m(Y)= 0.405592455839STD(X)=0.115443410751STD(Y)= 0.117531156174作为函数的输入,输出为1235.6702747695215
  • 在这种情况下,变化百分比是2.47,估计误差是1235.6?
  • @amaatouq: >>> mx,my,sx,sy=0.395782562659,0.405592455839,0.115443410751,0.117531156174 >>> 100*(sx+sy)/mx + 100*sx/(mx+my) 73.26994906387056
  • @amaatouq,我得到 2.47 +/- 73.3,如上所述,这似乎是意料之中的,考虑到如果你尝试通过他们的 STD 改变手段,你得到的手段的相对差异。跨度>
  • 整体的相对误差是什么意思? (std(X) + std(Y)) / (m(Y) - m(X)) 代表什么的相对误差?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
相关资源
最近更新 更多