添加/组合标准差

时间:2011-10-13 10:51:45

标签: database math data-warehouse

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

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计算StandardDeviation而不是触及巨大的fact_table?

2 个答案:

答案 0 :(得分:4)

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

表示:

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)

答案 1 :(得分:0)

不,您无法添加标准偏差。

使用您提供的号码证明自己:

X = 2.645751311,Y = 13.72345923

组合标准偏差:11.48912529

您可以使用标准偏差公式进行更一般的证明。你需要两者的协方差 - 向下滚动到“身份”:

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