使用两个体重秤减少体重测量误差
问题发现
故事是这样的, 我在PDD花20块大洋买了一个电子体重秤用于测体重, 使用一段时间后发现体重秤可能不准确, 同一时间多次测量每次读数都不相同. 于是又在PDD上花80大洋又买了一个小米牌体重秤, 经测试同样存在同一时间多次测量每次读数都不相同的问题. 于是我就考虑, 如何使用这两个劣质体重秤来获得更精确的读数.
结论如下:
市面的常用的体重秤都有约0.5~1kg的测量偏差, 为了测量更加精准, 我们可以用两个不同的体重秤分别测量再取平均的方式减少方差.
理论分析:
假设有两个正常的体重秤测量的结果基本准确, 但秤的本身存在一定的测量误差.
假设一定时间内的体重是不变的, 用秤A在测量体重时, 测量结果会落在一个高斯分布1上, 均值为$ m_1 \(, 方差为\) o_1^2 $. 同样, 假设秤B在测量体重时, 读数会落在一个均值为 $ m_2 $ , 方差为$ o_2^2 \(的高斯分布2上. 这里我们不失一般性的假设秤A的方差比秤B更少, 即\) o_12<o_22 $.
用两个不同的体重秤分别测量再取平均, 相当于两个高斯分布相加取平均, 那新的虚拟体重秤对体重测量的高斯分布的均值会是 $ \frac{m_1+m_2}{2} $, 方差会是 $ \frac{o_12+o_22}{4} $.
显然新的虚拟体重秤均值会是两个称的平均.
且当$ o_1^2<3 \times o_2^2 $时, 新的虚拟体重秤方差也会比两个秤都更少.
也就是说, 只要两个体重称的质量不要相差的离谱(3倍方差以上), 虚拟体重秤的测量结果都更优的.
进一步扩展
我们还有以下几种提升体重测量精度的方法:
方案一:加权平均(最优解)
多次测量进行统计得到方差.
根据方差倒数加权:
$ X_{best} = \frac{\frac{X_A}{\sigma_A^2} + \frac{X_B}{\sigma_B2}}{\frac{1}{\sigma_A2} + \frac{1}{\sigma_B^2}} $
方差会降到:
$ Var(X_{best}) = \frac{1}{\frac{1}{\sigma_A^2} + \frac{1}{\sigma_B^2}} $
比简单平均还更优。
方案二:多次测量再平均
每次站上去连测 3 次(AABBBA 顺序避免疲劳影响),取 6 个数的平均,方差再除以 6。
如果是土壕可以买更多体重秤.
方案三:校准系统偏差
第一天早上空腹固定姿势测 10 次,记录:
- 秤 A 平均偏高 0.6kg → 以后读数全部减 0.6
- 秤 B 平均偏低 0.3kg → 以后读数全部加 0.3
这样系统偏差也被干掉,只剩随机误差,平均后精度更高。
后记
最后问了一下gpt, 为什么电子体重秤有这么高的误差:
- 传感器是最便宜的应变片+HX711 芯片,24 位 ADC 但实际有效位数只有 14-16 位
- 没有温度补偿,屋里温度变化 2℃ 就漂 0.3kg
- 没有四角误差补偿,站姿稍偏就差 0.5kg
- 廉价算法直接四舍五入到 0.1kg,放大波动感
https://www.codebonobo.tech/post/41#使用两个体重秤减少体重测量误差
https://www.codebonobo.tech/post/41#%E4%BD%BF%E7%94%A8%E4%B8%A4%E4%B8%AA%E4%BD%93%E9%87%8D%E7%A7%A4%E5%87%8F%E5%B0%91%E4%BD%93%E9%87%8D%E6%B5%8B%E9%87%8F%E8%AF%AF%E5%B7%AE