【知识仓库】误差分析(三)误差传递

您所在的位置:网站首页 xy不独立exy怎么算 【知识仓库】误差分析(三)误差传递

【知识仓库】误差分析(三)误差传递

2023-03-31 22:44| 来源: 网络整理| 查看: 265

在 爱XR的麦子:【知识仓库】误差分析(一)何为误差 中一开始写到的那篇文章:突发奇想:π可以这样准确测量吗? 里面聊的内容到目前为止其实还没写到。那就是有关于误差传递 (Error Propagation) 的话题。

误差传递是在讨论一些通过测量值计算出来的值的误差。

例如,对于 z = f(x, y) 而言,测量值 x, y 都会有误差。我们在上次测量误差一文中提过,最好的测量值估计是他们的平均值,因此最好的计算值就会是 \bar z = f(\bar x, \bar y) 。但是测量值又会有误差,那我们计算出来的值也一定会受这样的误差影响。这时就需要误差传递了。

误差传递主要用两种方法:

通过残差去做误差传递通过微分去做误差传递

我们挨个来看。注意,以下说的误差传递都假设了两个条件:测量值 x,y 之间是独立的;以及误差相对较小

残差法

所谓残差,其实就是一个差值。比如 z 因为测量值 x 和 y 所导致的误差就可以分别表示为

\alpha_z^x = f(\bar x + \alpha_x, \bar y) - f(\bar x, \bar y)\\ \alpha_z^y = f(\bar x , \bar y + \alpha_y) - f(\bar x, \bar y)\\因为我们假设了 x,y 之间是独立的,因此可以看成坐标轴上相互垂直的关系。这样的关系就导致了最后我们 z 的误差可以被表示为

(\alpha_z)^2 = (\alpha_z^x)^2 + (\alpha_z^y)^2 \\

就是一个勾股定理

如果函数涉及的变量更多,也无非是做更多的残差,然后勾股而已。

微分法

微分法的思路其实就是对残差法泰勒展开一下。

比如 f(\bar x + \alpha_x, \bar y) = f(\bar x, \bar y) + \left(\frac{\partial f}{\partial x}\right)_{x=\bar x} \alpha_x + \frac{1}{2}\left(\frac{\partial^2 f}{\partial x^2}\right)_{x=\bar x} (\alpha_x)^2 + ... \\ 这里的泰勒展开我们可以分开考虑 x,y 的主要原因也是因为我们认定二者是独立的,否则需要考虑类似 \left(\frac{\partial^2 f}{\partial x \partial y}\right) \alpha_x \alpha_y 这种交叉项。相互独立这些项就会为0。

利用泰勒展开再去做残差

\alpha_z^x = f(\bar x + \alpha_x, \bar y) - f(\bar x, \bar y) =\left(\frac{\partial f}{\partial x}\right)_{x=\bar x} \alpha_x + \frac{1}{2}\left(\frac{\partial^2 f}{\partial x^2}\right)_{x=\bar x} (\alpha_x)^2 + ... \\ 因为我们设定误差是很小的,因此可以估算为 \alpha_z^x \approx \left(\frac{\partial f}{\partial x}\right)_{x=\bar x} \alpha_x\\再代入我们的勾股定理

(\alpha_z)^2 = (\alpha_z^x)^2 + (\alpha_z^y)^2 \approx \left(\frac{\partial f}{\partial x}\right)^2 (\alpha_x)^2 + \left(\frac{\partial f}{\partial y}\right)^2 (\alpha_y)^2\\

有了微分法,我们就可以分析一些简单的式子了。

例如

z = f(x,y) = xy\\ \Rightarrow \frac{\partial f}{\partial x} = y = \frac{z}{x}, \frac{\partial f}{\partial y} = x = \frac{z}{y}\\ (\alpha_z)^2 = \left(\frac{z}{x}\right)^2(\alpha_x)^2 + \left(\frac{z}{y}\right)^2(\alpha_y)^2\\ \Rightarrow \frac{\alpha_z}{z} = \sqrt{\left(\frac{\alpha_x}{x}\right)^2 + \left(\frac{\alpha_y}{y}\right)^2}\\ 再比如

z = f(x,y) = \frac{x^m}{y^n}\\ \Rightarrow \frac{\partial f}{\partial x} = \frac{mx^{m-1}}{y^n} = m\frac{z}{x}, \frac{\partial f}{\partial y} = -n\frac{x^m}{y^{n+1}} = -n\frac{z}{y}\\ (\alpha_z)^2 = \left(m\frac{z}{x}\right)^2(\alpha_x)^2 + \left(-n\frac{z}{y}\right)^2(\alpha_y)^2\\ \Rightarrow \frac{\alpha_z}{z} = \sqrt{\left(m\frac{\alpha_x}{x}\right)^2 + \left(n\frac{\alpha_y}{y}\right)^2}\\

不难看出对于这种简单函数而言,总是会出现的一些组合, \frac{\alpha_z}{z},\frac{\alpha_x}{x}, \frac{\alpha_y}{y} ,而这些又分别在描述误差占原始数据的比值。因此我们将这些总结成一个量:百分数误差 (Percentage Error)

百分数误差

百分数误差可以给我提供很多信息,甚至可以养成一个没事就计算一下百分数误差的习惯。因为可以看出,如果测量值的百分数误差高,便会影响到最后计算值的百分数误差。同时因为它占比高,因此优化这样的测量值带来的收益就更大。

在一组变量中,占比最大的百分数误差又常被称为主要误差 (Dominant Error)

计算误差需要特别注意的点

我们前面介绍了两种计算误差传递的方法,也指出了百分数误差的重要性。但是这些都有一个前提条件:误差相对较小,但是这是可以保证的吗?( x,y 之间的独立性不在这儿讨论,因为这个是你选参数时要注意的)

我们来试想这么一个简单的情况啊。 z = x + y ,这时 x = 18 \pm 5 , y = 13 \pm 3 ,那么计算出来的 z 就应该是 \bar z = \bar x + \bar y = 18 + 13= 31\\ \alpha_z = \sqrt{(\alpha_x)^2 + (\alpha_y)^2} = \sqrt{25 + 9} \approx 6\\ \Rightarrow z = \bar z \pm \alpha_z = 31 \pm 6\\看起来没啥问题吧。

但是,如果 z = x - y 会怎样? \bar z = \bar x - \bar y = 18 - 13= 5\\ \alpha_z = \sqrt{(\alpha_x)^2 + (\alpha_y)^2} = \sqrt{25 + 9} \approx 6\\ \Rightarrow z = \bar z \pm \alpha_z = 5 \pm 6\\

这啥意思?误差怎么还比计算值大了?

这种误差就是一个很不好的信号,处理方法一般有两种:

增加测量次数,从而降低测量误差想办法更改实验的测量目标,从而得到一个不需要进行减法或次方的公式

第一点还好说,但是第二点需要很巧妙地去设计实验。这样的策略需要具体情况具体分析,例如某些差值可以被转换为某些角度测量,从而避免进行差值计算。

多次实验与加权平均值

有了上述的误差传递,我们就可以多次进行同一个实验,并得到一个更好的测量值了。这里的“同一个实验”可以是同样的实验进行多次,也可以是测量同一个值的不同实验的结果取平均。

做这样的事也是需要十分小心的,首先必须确认一下所有的结果之间都是相互符合的,同时也要确保每组的离群值都被考虑到了。

加入两次测量的精度都挺高的,但是几次的平均值、分布之间都没有相互重合的情况,比如 k_1 = (16.2 \pm 0.1), k_2 = (5.4 \pm 0.2) 这样的,就可以不用考虑对他们做平均来试图得到一个更“精确”的值了。更有可能的是某次测量存在系统性误差了

而如果两次测量的平均值比较接近,分布有重合,没有系统性误差,那就可以考虑考虑将结果合并了。同时相信你很自然地就觉得:精度高、误差小的测量应该获得更大的权重;相反,精度不高的、误差大的测量权重应该小

一种很常见的策略是使用 w_i = \frac{1}{\alpha_i^2}\\作为权重。

这时 \bar x = \frac{\sum_i w_i x_i}{\sum_i w_i} \\利用下微分法求下平均后的误差

(\alpha_{\bar x})^2 \approx \sum_j \left(\frac{w_j}{\sum_i w_i}\right)^2 (\alpha_{j})^2 = \frac{1}{(\sum_i w_i)^2}\sum_j \left(w_j\right)^2 (\alpha_{j})^2 \\代入一下用标准误差表示的权重 \Rightarrow (\alpha_{\bar x})^2 \approx \frac{1}{(\sum_i w_i)^2}\sum_j \left(\frac{1}{\alpha_j^2}\right)^2 (\alpha_{j})^2 \\ = \frac{1}{(\sum_i w_i)^2}\sum_j \left(\frac{1}{\alpha_j^2}\right) \\ \Rightarrow = \frac{\sum_j w_j }{(\sum_i w_i)^2}\\ \Rightarrow = \frac{\sum_i w_i }{(\sum_i w_i)^2}\\ = \frac{1}{\sum_i w_i}\\所以

\frac{1}{(\alpha_{\bar x})^2} = \sum_i \left(\frac{1}{\alpha_i^2}\right)\\

再来看看标准误差

知道了如何算测量数据值的加权平均数以及平均后的误差,我们就可以翻过来回忆一下标准误差了。爱XR的麦子:【知识仓库】误差分析(二)测量误差 里我们提过,标准误差是平均值的标准偏差。现在来看看是什么意思。

我先思考一下,当我们测量一个值的时候,其实是在母体分布上进行一个采样,而这个值在没有错误或系统性误差的情况下,应该有 \frac{2}{3} 或68%的概率落在一正负 \sigma 的范围内。因此,我们可以认为 \sigma 为每个测量值的误差。

那么,做了 N 次测量时,我们说要对这些测量做个平均,并期待这个采样分布的平均值与母体分布的平均值是近似的。同时,因为我们认为母体分布的 \sigma 是每次测量值的误差,那么每个测量值的权重是一样的。所以我们就有了 \bar x = \frac{\sum_i w_i x_i}{\sum_i w_i} = \frac{\sum_i x_i}{N} \\\frac{1}{(\alpha_{\bar x})^2} = \sum_i \left(\frac{1}{\alpha_i^2}\right) = \sum_i \left(\frac{1}{\sigma^2}\right) = \frac{N}{\sigma^2}\\

平均值没什么好说的,我们看到我们平均值的误差就是 \alpha_{\bar x} = \frac{\sigma}{\sqrt{N}}\\跟我们上次说的一样,这个误差是只有一组数据做完“平均”我们才会使用的。值得一提的是,有些地方会把这个误差写作 \alpha_{\bar x} = \frac{\sigma_{N-1}}{\sqrt{N}}\\

这里的 \sigma_{N-1} 其实就是采样分布的标准偏差( N-1 我们在上次的文章中解释过,是采样分布标准偏差因为自由度导致的),专门标出 N-1 来跟母体分布的标准偏差加以区分。但其实我们上面推导的时候用的就是母体分布的标准偏差。当然,我们并得不到母体的标准偏差,只能认为采样分布的标准偏差是母体分布的标准偏差一个很好的近似。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3