在流数据上计算TSS

2024-10-01 10:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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?任何符合逻辑的解释以及解决方案都将受到高度赞赏


Tags: 数据高度np情况逻辑解决方案meanarray
2条回答

您可以在每个步骤中将每个批次添加到累积数组中:

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=sum[(X-sum[X]/N)2]

=sum[X2-2X*sum[X]/N+sum[X]2/N2]

=sum[X2]-2sum[X]2/N+sum[X]2/N

=sum[X2]-sum[X]2/N

您只需要维护X和X2的运行总数,以及到目前为止看到的样本数量的计数N

相关问题 更多 >