Расчет стандартного отклонения - я придерживаюсь правильного подхода? Как мы находим процент SD? - PullRequest
2 голосов
/ 03 октября 2019

У меня есть запрос, который дает мне данные ниже.

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. Если нет, пожалуйста, посоветуйте мне правильный подход, чтобы придумать правильный процент отклонения. Я могу изменить запрос, чтобы при необходимости получить дополнительную информацию.

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 07 октября 2019

Я думаю, что вы хотите найти отклонение вчерашнего счета от среднего значения за последнюю неделю. В основном это (yesterdayCount - (sumOfLastWeekCount/numberOfDaysLastWeek))/(sumOfLastWeekCount/numberOfDaysLastWeek)

Это отличается от стандартного отклонения, которое в основном измеряет степень разброса между сериями точек данных относительно их среднего значения. ( Определение стандартного отклонения )

0 голосов
/ 14 октября 2019

Я не думаю, что вам нужно использовать 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% 
...