添加/组合标准差

2024-01-18

简洁版本:
可以添加/组合标准差吗? IE。

if StdDev(11,14,16,17)=X and StdDev(21,34,43,12)=Y  
can we calculate StdDev(11,14,16,17,21,34,43,12) from X & Y

长版:
我正在设计一个星型模式。该模式有一个fact_table(grain=transaction),它存储单个事务的response_time。该模式还有一个aggregate_table (grain=day),它存储每天的response_time_sum。
在我的报告中,我需要计算给定时间维度(例如日、周、月等)的响应时间的标准偏差。如何使用aggregate_table而不是接触巨大的fact_table来计算标准偏差?


是的,您可以将它们结合起来。您需要知道每天的观察次数、平均值和标准差。方差比标准差更容易处理,因此我将用方差来表达其他所有内容。 (标准差定义为方差的平方根。)

Denote:

n[i] # observations for day i
m[i] # mean for day i
v[i] # variance for day i

您需要计算观察总数N和总体平均值M。这很容易:

days = [day1, day2, ..., day_final]
N = sum(n[i] for i in days)
M = sum(n[i] * m[i] for i in days) / N

总体方差V比较复杂,但仍然可以计算:

s1 = sum(n[i] * v[i] for i in days)
s2 = sum(n[i] * (m[i] - M)**2 for i in days)
V = (s1 + s2) / N

以上是总体方差。如果你有v[i]作为样本方差,一些小的修改s1 and V需要:

s1_sample = sum((n[i] - 1) * v[i] for i in days)
V_sample = (s1_sample + s2) / (N - 1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加/组合标准差 的相关文章