标准差计算——我采用的方法是否正确?我们如何找到 SD 百分比?

Standard deviation calculation - Am I following the right approach? How do we find SD percentage?

我有一个查询,它提供了以下数据。

item_name, total_purchase_count_per_week, previous_day_purchase_count.

例如,

iPhone , 4800, 200 
Samsung, 3000, 470
Moto, 1700, 80

现在,我想知道昨天的购买量与前一周的每件商品的购买量有多少偏差。

例如:

这是我试过的:

我写了一个java方法,它将avg(total_purchase_count_per_week)previous_day_purchase_count作为SummaryStatistics的输入并计算SD和方差。

 SummaryStatistics txnCountSummary = new SummaryStatistics();

 txnCountSummary.addValue(totalCount);
 txnCountSummary.addValue(avgCountPWeek);

 Double sd = txnCountSummary.getStandardDeviation();

这种情况下,SummaryStatistics 采用 685(即 4800/7 - 前一周的平均计数)和 200(昨天的计数)给我 SD 作为 342.94

  1. 我是否使用正确的输入计算 SD?只取平均值 上周的和用昨天的计数计算 SD 是 足够?
  2. 如果是,我们如何计算百分比偏差? 比如昨天的购买量与之前的相比有5%或-2%的偏差 上例中提到的前一周平均值。
  3. 如果没有,请告诉我正确的方法来想出正确的方法 偏差百分比。我可以更改查询以拉取额外的 如果需要,请提供详细信息。

提前致谢。

我想你想要的是找出昨天的计数与上周的平均值的偏差。这基本上是 (yesterdayCount - (sumOfLastWeekCount/numberOfDaysLastWeek))/(sumOfLastWeekCount/numberOfDaysLastWeek)

这与标准偏差不同,标准偏差主要衡量一系列数据点相对于其平均值的分布程度。(Standard Deviation definition)

我认为您不需要使用 SummaryStatistics 来实现这一点。有一个简单的计算。你只需要这样的东西:

lastWeekMedian = total_pruchase_count_per_week / 7;
difference = previous_day_purchase_count - lastWeekMedian; // this can be positive or negative
sd = (100*difference)*1./lastWeekMedian; // your variables should be double/float.
System.out.print(sd + "%"); // print value; for example: 34%;

基本上,此代码计算前一天计数与上周中位数计数的差值。然后我们计算这种差异的百分比意味着什么。

例如:

If 50 Iphones sold means ..... 100%

Then 25 Iphones difference means .... x%