В файле orders.xlsx содержатся данные о деталях заказов крупной торговой компании. Сгруппируйте данные по полям Market и Order ID, чтобы получить данные по заказам.
orders <- read_excel('orders.xlsx')
orders_profit <- orders %>%
group_by(Market, `Order ID`) %>%
summarize(profit = sum(Profit))
Проверьте гипотезу о том, что средняя прибыль от заказа на разных рынках различается. Определите, на каких рынках средняя прибыль от заказа существенно отличается, а на каких - нет. Визуализируйте решение
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()
Практически на половине рынках средняя прибыль от заказа не различается.
Проверьте гипотезу о том, что сроки доставки заказа при доставках разного класса отличаются. Определите, для каких классов сроки доставки отличаются, а для каких - примерно одинаковые. Визуализируйте решение.
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()
После выборки результаты не изменились. Сроки доставки заказа при доставках разного класса по прежнему отличаются.