你的数据有多精确?——数据标准差研究
 
通知
清除全部

你的数据有多精确?——数据标准差研究


水花七炮
评论: 160
主题创建者
(@shui-hua-qi-pao)
复合运算
注册于: 4年前

一、前言

众所周知,Seml 等使用大样本统计来测定数据的方法会引入随机误差。在不同的样本量下,这些随机误差的数量级会改变,影响数据的有效数字位数乃至数据本身是否有效——例如,后面我们将指出,n=10000 和 n=1000000 的样本量之间测得的数据精度能差一个有效数字,而如果样本量再小到如 n=100,那么测得的数据就几乎不可用了。本文即通过对数据标准差的估算,来估计数据的有效数字数量以及固定样本量下有效数据的边界。

标签
5条评论
水花七炮
评论: 160
主题创建者
(@shui-hua-qi-pao)
复合运算
注册于: 4年前

二、标准差

我们以 Seml 炮伤测试为例。Seml 炮伤测试会重复 n 波,n 为设定的 repeat 数,默认为 10000;每波相当于对单波炮伤 X(随机变量)的一次观测,而产生的样本即为 n 次观测的结果,最终输出的炮伤为样本均值 x̄,作为期望炮伤 μ=E(X) 的一个估计。

为了估计 x̄ 相对于 μ 的偏差,我们引入标准差 σ=√Var(X)。由中心极限定理知,n 较大时样本均值 X̄ 近似服从正态分布 N(μ, σ2/n),因此大部分情况下 x̄ 和 μ 之间的偏差的量级不会超过 σ/√n 的数倍。这一点就是我们之后讨论的基础:用 σ/√n 的数量级划定 x̄ 的精度。例如,如果测得 x̄=1.241 并估计得 σ/√n=0.2,则炮伤数据应保留到与 σ/√n 相同的数量级,也就是 1.2,并且可知小数点后第一位大概率是不准确的。

由于 σ/√n 与 n 的平方根成反比,当 n 增大 100 倍时,σ/√n 才会下降 10 倍,因此要想让炮伤的精度多一个有效数字需要将 n 扩大至整整 100 倍。例如,类似于上面的情况,将 n 增大 100 倍后如果测得 x̄=1.324 并估计得 σ/√n=0.02,则炮伤数据就可以多保留一位小数至 1.32,并且可知十分位基本上是准确的,百分位大概率是不准确的。

回复
水花七炮
评论: 160
主题创建者
(@shui-hua-qi-pao)
复合运算
注册于: 4年前

三、炮伤

在 15~16 s 级冰波无铲、16~17 s 级冰波双预存等语境下,我们会遇到梯损和瞬伤共同组成的炮伤。下面给出一个 1550 冰波无铲的炮伤测定脚本以及十次测定给出的数据。

scene:DE
protect:18 28 38 48 58
repeat:10000

w 0 1350
C 872+266 12345 9
image

在有这种多次测定的数据时,我们无需考虑标准差等问题直接就可以下结论炮伤大约在 0.6~0.8 这个范围内。不过,多次测定毕竟耗费时间:本节使用提前预估标准差的方式,实现无需多次测定即可估计数据精度。

由于单波炮伤是有界的,其标准差亦有界。显然,更倾向于取到极端值炮伤的情况标准差更大;如果单波炮伤在 0~300 这个范围内,则给定期望炮伤 a=E(X) 的情况下标准差最高的分布即为类 0-1 分布,满足 P(X=300) = a/300 和 P(X=0) = 1 - a/300。由 0-1 分布的知识,此时的标准差为 σ=√[a(300-a)],当 a 较小时可用 300 估计 (300-a),于是就有标准差上界

σ=√(300a).

或者,写成与期望炮伤对照的形式并用约值代替精确值,就有

σ/a=17.3/√a.

这表明标准差与期望炮伤之比与期望炮伤成负相关,也就是期望炮伤越大,能保留的有效数字位数越多。下表给出不同的期望炮伤下 σ/a 及 σ 的值,顺便给出了 σ/(√10000·a) 和 σ/√10000 的值,代表 n=10000 下的 (σ/√n)/a 和 σ/√n。

image

由表可知,n=10000 时 0.1~1 量级的炮伤的 σ/√n 可达期望炮伤的一半或数个十分之一,在此基础上如果测得的炮伤偏差 σ/√n 的数倍,可能导致整个测得的炮伤的值的浮动和测得的炮伤本身在同一个量级,也就是“零个有效数字”,要精确测定这种情况下的炮伤宜增大样本量。1~10 量级的炮伤的 σ/√n 大约在炮伤的 1/10 左右,例如期望炮伤为 1 时 σ/√n 为 0.173,代表浮动数倍的 σ/√n 带来的只是小数点后一位的浮动。这种量级的炮伤可以认为有一到两个有效数字,个位基本是准确的,而十分位可能有较大浮动。10 以上的炮伤同上,可以认为测得的炮伤有两个有效数字,也就是十位和个位,且个位会有一定的浮动。

实际上,标准差并不总是上文所说的最大值。分析炮伤来源可知,瞬伤一定服从上文所说的类 0-1 分布,其标准差正是如上文中标准差上界描述的一般,但损伤更倾向于取到 4、8、12 这种不太极端的值,标准差应小于瞬伤。不过,由于小丑的威胁一般大于扶梯,一般来说测得的瞬伤在数量级上与测得的炮伤大致相近,因此用上文中的标准差上界估算得的标准差在数量级上与实际的标准差应当大致相近。

回复
水花七炮
评论: 160
主题创建者
(@shui-hua-qi-pao)
复合运算
注册于: 4年前

四、坐标分布

首先需要指出,Seml 坐标分布的样本的单位是 1 只僵尸而非 1 波,因此样本量 n 和 repeat 里填的数不相等,而是等于 repeat 里填的数乘 50,在默认的 repeat:20000 下就有 n=1000000,是炮伤测定常用的 n=10000 的一百倍而非仅仅两倍。

时刻 min、时刻 max 等量子化的数据为论外,我们能用标准差衡量的数据很大程度上只是到达率一个数据,可能存活率也能。我们测得的到达率 Π 为 n 个 0-1 分布的独立同分布随机变量 Xi 的平均值,它们取 1 的概率为实际到达率 p。由 0-1 分布的知识知,X 的标准差为 σ=√[p(1-p)],在不同的 p 值下就有 σ 以及 σ/√1000000 的值如下。

image

可以看到,在 n=1000000 时 0.1~0.9 这个量级下 σ/√n 的量级最多只到小数点后第四位,也就是说测得的到达率从十分位到千分位都可以认为是基本准确的,总共三到四个有效数字;当到达率靠近 0 或 1 时,有近似 σ=√p 或 σ=√(1-p),此时由于 σ 的下降速率小于 p 接近 0 或 1 的速率,有效数字的位数会降低。

回复
水花七炮
评论: 160
主题创建者
(@shui-hua-qi-pao)
复合运算
注册于: 4年前

五、结论省流

  • 测得的数据每要增多一个有效数字需要增加一百倍的样本量。
  • n=10000 下 Seml 测得的 0.1~1 量级的炮伤的唯一的有效数字都可能有较大浮动,再小一些可能出现“零个有效数字”的不可用数据。
  • n=10000 下 Seml 测得的 1~10 量级的炮伤有一到两个有效数字,其个位是基本准确的,十分位可能有较大浮动。
  • n=10000 下 Seml 测得的 10 以上炮伤有两个有效数字,其十位是基本准确的,个位可能有一定浮动。
  • repeat:20000 下 Seml 坐标分布测得的 0.1~0.9 的到达率有三到四个有效数字,其十分位到千分位是基本准确的,万分位可能有较大浮动。

或者再省流一点:铃仙说他通常把炮伤只保留到个位,其实这是对的,因为当前默认设置下炮伤的精度到不了小数点以后。

完。

回复
水花七炮
评论: 160
主题创建者
(@shui-hua-qi-pao)
复合运算
注册于: 4年前

铃仙老师刚刚发布了 Seml v1.16.1,支持了布尔 std 选项以控制是否输出测得数据的标准差,善哉。贴一个买家秀(?

scene:DE
protect:18 28 38 48 58
repeat:10000
std:true

w 0 1350
C 872+266 12345 9
image
回复
Scroll to Top
zh_CN简体中文
Powered by TranslatePress »