计算流式数据的 TSS
Calculating TSS on streaming data
TSS 的计算公式为 (x - mean) **2
,如果您可以轻松获得所有数据,则计算起来很容易。但就我而言,数据是连续流式传输的,我需要计算此数据的移动 TSS。例如,假设整个数据是x=np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
。但是这个数据是分批流式传输的,像这样:
batch1: [1, 2, 3]
batch2: [4, 5, 6, 7]
batch3: [8, 9, 10]
在这种情况下如何计算移动 TSS?任何合乎逻辑的解释以及解决方案将不胜感激
您可以在每个步骤中将每个批次添加到一个累积数组中:
cum_array = numpy.concatenate((cum_array, batch))
然后计算 TSS 为:
tss = (cum_array - numpy.mean(cum_array))**2
每次都会重写TSS数组。如果你只是想添加新计算的值,你需要这样的东西:
cum_array = numpy.concatenate((cum_array, batch))
tss = numpy.concatenate((tss, numpy.zeros_like(batch)))
tss[-batch_len:] = (cum_array[-batch_len:] - numpy.mean(cum_array))**2
编辑:如果您只想在每批结束时为 TSS 提供一个值,您可以这样做:
running_total += numpy.sum(batch)
N += len(batch)
tss = (batch[-1] - running_total/N)**2
TSS 可以分为两项,每一项都可以很容易地递增计算:
TSS = 总和[ ( X - 总和[X]/N )2 ]
= 总和[ X2 - 2X*总和[X]/N + 总和[X]2/N2]
= 总和[X2] - 2总和[X]2/N + 总和[X]2 /N
=总和[X2] - 总和[X]2/N
您只需要维护 运行 X 和 X2 的总和,以及到目前为止您已经看到的样本数量 N。
TSS 的计算公式为 (x - mean) **2
,如果您可以轻松获得所有数据,则计算起来很容易。但就我而言,数据是连续流式传输的,我需要计算此数据的移动 TSS。例如,假设整个数据是x=np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
。但是这个数据是分批流式传输的,像这样:
batch1: [1, 2, 3]
batch2: [4, 5, 6, 7]
batch3: [8, 9, 10]
在这种情况下如何计算移动 TSS?任何合乎逻辑的解释以及解决方案将不胜感激
您可以在每个步骤中将每个批次添加到一个累积数组中:
cum_array = numpy.concatenate((cum_array, batch))
然后计算 TSS 为:
tss = (cum_array - numpy.mean(cum_array))**2
每次都会重写TSS数组。如果你只是想添加新计算的值,你需要这样的东西:
cum_array = numpy.concatenate((cum_array, batch))
tss = numpy.concatenate((tss, numpy.zeros_like(batch)))
tss[-batch_len:] = (cum_array[-batch_len:] - numpy.mean(cum_array))**2
编辑:如果您只想在每批结束时为 TSS 提供一个值,您可以这样做:
running_total += numpy.sum(batch)
N += len(batch)
tss = (batch[-1] - running_total/N)**2
TSS 可以分为两项,每一项都可以很容易地递增计算:
TSS = 总和[ ( X - 总和[X]/N )2 ]
= 总和[ X2 - 2X*总和[X]/N + 总和[X]2/N2]
= 总和[X2] - 2总和[X]2/N + 总和[X]2 /N
=总和[X2] - 总和[X]2/N
您只需要维护 运行 X 和 X2 的总和,以及到目前为止您已经看到的样本数量 N。