添加/组合标准偏差



简短版本:
可以添加/组合StdDev吗?即

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来计算StandardDeviation?

是的,您可以将它们组合在一起。您需要知道每天的观测次数、平均值和标准偏差。方差比标准差更容易处理,所以我将用方差来表示其他一切。(标准差定义为方差的平方根。(

表示:

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]作为样本方差,则需要对s1V进行一些小的修改:

s1_sample = sum((n[i] - 1) * v[i] for i in days)
V_sample = (s1_sample + s2) / (N - 1)

否,不能添加标准偏差。

用你提供的数字向自己证明:

X=2.6457751311,Y=13.72345923

组合套标准偏差:11.48912529

你可以用标准差公式做一个更一般的证明。你需要两者的协方差-向下滚动到"身份":

http://en.wikipedia.org/wiki/Standard_deviation

最新更新