![]() |
1
5
注: 看起来你不是在计算方差。 方差是通过从每个元素中减去平均值并计算这些差异的加权和来计算的。 所以你需要做的是:
请注意,这是样本方差,当基础分布未知时使用(因此我们假设为均匀分布)。 另外,经过一番调查,我发现这不是一个公正的估计。 Wolfram Alpha 有话要说,但作为一个例子,当 MATLAB 计算方差,返回“偏差校正样本方差”。
偏差校正方差可以通过将每个元素除以
还要注意的是,
|
![]() |
2
3
首先,如果你只是想弄清楚什么是“合理的”方差,记住方差基本上就是标准方差的平方。标准差粗略地测量数据点到预期值的典型距离。 所以,如果你的数据的平均值是4692,而你计算出来的方差是1483780,这意味着你的标准差是1218,这意味着你的数字倾向于在3474-5910之间。所以,如果你的数字的范围是0-10000,方差对我来说似乎有点低,但这显然取决于你的数据分布。 至于计算本身:当您第一次读取数据时(不必事先知道平均值),您可以使用运行计算来计算方差。 Welford's Method :
|
![]() |
3
3
为了好玩,使用std::valarray而不是std::vector和(各种)算法实现相同结果的路径略有不同:
正如雅各布所暗示的,方差计算实际上有两种可能的版本。现在,这假设你的输入是“宇宙”。如果您只采集了整个宇宙的一个样本,最后一行应该使用:
|
![]() |
4
2
可能使用不同的公式?
输出: 平均值=5036.71 方差=3.16806E+07 |
![]() |
5
1
样本方差计算:
|
![]() |
6
0
因为您处理的是大量的数据,然后对它们执行浮点运算,所以您可能希望以双精度形式执行所有操作;这样可以节省大量的强制转换。
使用
如果你在做除法,觉得有必要投,投 操作数 (即分子和/或分母)加倍而不是结果。如果你分割整数,你就失去了准确性。 我不确定你的方差公式是否正确。例如,你可能想看看维基百科中的解释。但我也不是数学专家,所以我不确定你有错。 |
![]() |
7
0
因为方差是标准差的平方,所以 SO 1174984 应该有帮助。简短的诊断是,您需要计算值的平方和以及值的总和,而您似乎没有这样做。 既然你有10个 六 值,任何值的平方都可以达到10 八 ,你可以得到10个平方和 十四 ;64位整数最多可存储10个 十八 ,因此,您仍然可以处理10000倍的输入,或者最大为100万而不是仅为10000的值,而不会出现溢出。因此,没有迫切需要转移到纯双计算。 |
![]() |
RSW · Python-检查序列中的最后一个值是否相对高于其余值 1 年前 |
![]() |
mayen · Z-Score作为差异值的度量 1 年前 |
![]() |
John Philips · Python中的重命名函数 1 年前 |
![]() |
Yneedtobeserious · 给定的数据点,形成它们的关系 1 年前 |
![]() |
Idan Hazan · 转换总和为1的列表并保持值之间的关系[重复] 1 年前 |
|
Jimmy3421 · 为什么pd.cut会产生NaN值 1 年前 |
|
JoRayMe · 有没有办法从数据数组中识别浮点数中的小数位数? 1 年前 |