2

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

item_name, total_purchase_count_per_week, previous_day_purchase_count.

例如,

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

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

例如:

  • 5%,这意味着昨天的购买量高于前一周,偏差为 5%
  • -11%,这意味着昨天的购买量低于前一周,偏差为 -11%

这是我尝试过的:

我编写了一个 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. 如果不是,请告诉我正确的方法来得出正确的偏差百分比。如果需要,我可以更改查询以提取更多详细信息。

提前致谢。

4

2 回答 2

5

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

这与标准偏差不同,标准偏差主要衡量一系列数据点相对于它们的平均值的分布程度。(标准偏差定义

于 2019-10-07T16:31:15.990 回答
0

我认为您不需要使用 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% 
于 2019-10-14T10:23:50.140 回答