Подготовка

В файле orders.xlsx содержатся данные о деталях заказов крупной торговой компании. Сгруппируйте данные по полям Market и Order ID, чтобы получить данные по заказам.

orders <- read_excel('orders.xlsx')
orders_profit <- orders %>%
  group_by(Market, `Order ID`) %>%
  summarize(profit = sum(Profit))

Задание 1

Проверьте гипотезу о том, что средняя прибыль от заказа на разных рынках различается. Определите, на каких рынках средняя прибыль от заказа существенно отличается, а на каких - нет. Визуализируйте решение

summary(aov(profit ~ Market, orders_profit))
##                Df   Sum Sq Mean Sq F value Pr(>F)    
## Market          6 1.12e+07 1862431    24.8 <2e-16 ***
## Residuals   25065 1.89e+09   75263                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(aov(profit ~ Market, orders_profit))
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = profit ~ Market, data = orders_profit)
## 
## $Market
##                   diff      lwr     upr  p adj
## APAC-Africa    40.3743   20.041  60.708 0.0000
## Canada-Africa  48.8267  -10.738 108.392 0.1913
## EMEA-Africa   -21.9868  -45.627   1.653 0.0880
## EU-Africa      41.3564   20.487  62.226 0.0000
## LATAM-Africa    3.3210  -17.184  23.826 0.9991
## US-Africa      17.3594   -3.225  37.944 0.1641
## Canada-APAC     8.4524  -49.644  66.549 0.9995
## EMEA-APAC     -62.3611  -82.009 -42.713 0.0000
## EU-APAC         0.9822  -15.228  17.192 1.0000
## LATAM-APAC    -37.0532  -52.790 -21.316 0.0000
## US-APAC       -23.0148  -38.856  -7.174 0.0004
## EMEA-Canada   -70.8135 -130.148 -11.479 0.0079
## EU-Canada      -7.4703  -65.757  50.816 0.9998
## LATAM-Canada  -45.5056 -103.662  12.651 0.2404
## US-Canada     -31.4672  -89.652  26.718 0.6860
## EU-EMEA        63.3433   43.140  83.546 0.0000
## LATAM-EMEA     25.3079    5.482  45.134 0.0032
## US-EMEA        39.3463   19.438  59.255 0.0000
## LATAM-EU      -38.0354  -54.460 -21.611 0.0000
## US-EU         -23.9970  -40.521  -7.473 0.0004
## US-LATAM       14.0384   -2.022  30.099 0.1329
profit_compar <- broom::tidy(TukeyHSD(aov(profit ~ Market, orders_profit)))

ggplot(data = profit_compar, aes(x = comparison)) +
  geom_errorbar(aes(y = estimate, 
                    ymin = conf.low, 
                    ymax = conf.high,
                    color = adj.p.value > 0.05)) +
  geom_hline(yintercept = 0, color = 'red', linetype = 'dashed') +
  labs(x = NULL, y = NULL, 
       title = '95% доверительный интервал\nдля средней прибыли по рынку') +
  coord_flip()

Практически на половине рынках средняя прибыль от заказа не различается.

Задание 2

Проверьте гипотезу о том, что сроки доставки заказа при доставках разного класса отличаются. Определите, для каких классов сроки доставки отличаются, а для каких - примерно одинаковые. Визуализируйте решение.

order_class <- orders %>% 
  group_by(Market, `Ship Mode`, `Order ID`) %>%
  summarize(Ltime = mean(`Ship Date` - `Order Date`))

order_class$Ltime <- as.numeric(order_class$Ltime)
order_class$Class <- order_class$`Ship Mode`

class_compar <- broom::tidy(TukeyHSD(aov(Ltime ~ Class, data = order_class))) 

ggplot(data = class_compar, aes(x = comparison)) +
  geom_errorbar(aes(y = estimate, 
                    ymin = conf.low, 
                    ymax = conf.high,
                    color = adj.p.value > 0.05)) +
  geom_hline(yintercept = 0, color = 'red', linetype = 'dashed') +
  labs(x = NULL, y = NULL, 
       title = '95% доверительный интервал\nдля срока доставки по различным классам') +
  coord_flip()

Вывод: сроки доставки заказа при доставках разного класса значительно отличаются

Сделайте выборку по 100 заказов с доставкой каждого типа (всего 400 заказов) и проверьте ту же самую гипотезу. Изменились ли результаты?

set.seed(13)  

first100 <- order_class %>%
  filter(Class %in% "First Class") %>% 
  ungroup() %>%
  sample_n(size = 100)
  
second100 <- order_class %>%
  filter(Class %in% "Second Class") %>% 
  ungroup() %>%
  sample_n(size = 100)

same100 <- order_class %>%
  filter(Class %in% "Same Day") %>% 
  ungroup() %>%
  sample_n(size = 100)

standard100 <- order_class %>%
  filter(Class %in% "Standard Class") %>% 
  ungroup() %>%
  sample_n(size = 100)

order_class400 <- rbind(first100, second100, same100, standard100)
class_compar400 <- broom::tidy(TukeyHSD(aov(Ltime ~ Class, data = order_class400))) 

ggplot(data = class_compar400, aes(x = comparison)) +
  geom_errorbar(aes(y = estimate, 
                    ymin = conf.low, 
                    ymax = conf.high,
                    color = adj.p.value > 0.05)) +
  geom_hline(yintercept = 0, color = 'red', linetype = 'dashed') +
  labs(x = NULL, y = NULL, 
       title = '95% доверительный интервал\nдля срока доставки по различным классам (выборка 400)') +
  coord_flip()

После выборки результаты не изменились. Сроки доставки заказа при доставках разного класса по прежнему отличаются.