疑似问题订单场景:
1.跨地市或超远距离外下单
2.在大于正常距离范围,小于超远距离,下单笔数超过N笔
数据探索:
近一个月店铺与下单位置距离的均值、标准差、最大值、最小值、上下四分位数、偏度和峰度
数据:近一周,广州数据
首先绘制关于距离的直方图和分布图
library(tidyverse)
library(showtext)
showtext_auto()
load("order.RData")
order <- order %>% filter(订单笔数 != 0) %>% filter(店铺经度!=0)
library(ggthemes)
p <- ggplot(order, aes(x=log(店铺与订单距离))) + geom_histogram(aes(y = ..density..,
fill = ..count..), binwidth=0.2) + geom_density() # 绘制密度直方图
p <- p+theme_solarized()
p
## Warning: Removed 166 rows containing non-finite values (stat_bin).
## Warning: Removed 166 rows containing non-finite values (stat_density).
从图中可以看到,关于距离的分布是偏左的,也就是意味着大多数人的订单产生的位置是靠近网点的。
计算统计指标
summary(order$店铺与订单距离)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 64.7 633.1 2347.1 13295.2 10727.2 367271.5 166
print("标准差")
## [1] "标准差"
sd(order$店铺与订单距离,na.rm = T)
## [1] 30242.41
# 偏度
print("偏度")
## [1] "偏度"
mean(((order$店铺与订单距离-mean(order$店铺与订单距离,na.rm = T))/
sd(order$店铺与订单距离,na.rm = T))^3,na.rm = T)
## [1] 4.721915
# 峰度
print("峰度")
## [1] "峰度"
mean(((order$店铺与订单距-mean(order$店铺与订单距,na.rm = T))/sd(order$店铺与订单距,na.rm = TRUE))^4,na.rm = T)-3
## [1] 32.06426
从统计量中可以看到,订单产生与网点的距离,中位数是2347,75%分为数是10727,这意味着超过75%的人订单产生与网点的距离小于10727.2。如果距离超过这个,则需要关注以下。
另外,数据中存在部分缺失值,例如网点位置缺失,订单位置缺失,这一部分也需要查明原因。
首先绘制关于订单的分布图和密度图
p_ordernumber <- ggplot(order, aes(x=log(订单笔数))) + geom_histogram(aes(y = ..density..,
fill = ..count..), binwidth=0.2) + geom_density() # 绘制密度直方图
p_ordernumber <- p_ordernumber + theme_solarized()
p_ordernumber
从图中可以看出,大部分的人订单数量都比较少,约为1单
对不同的订单数量进行计数
table(order$订单笔数)
##
## 1 2 3 4 5 6 7 8 9 10 11 12 13
## 20478 921 299 178 107 70 45 38 25 11 16 16 7
## 14 15 16 17 18 19 20 21 22 23 24 26 27
## 5 4 6 5 5 2 4 3 1 1 1 1 2
## 28 29 33 34 36 41 42 44 45 49 50 51 54
## 2 1 2 1 2 1 1 1 1 1 1 1 1
## 74 75 94 104 110 118 197
## 1 1 1 1 1 1 1
从数据中可以看到,绝大部分人只有1单,但还是有部分人订单数据非常多。
计算相关的统计指标
summary(order$订单笔数)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 1.000 1.277 1.000 197.000
print("标准差")
## [1] "标准差"
sd(order$订单笔数)
## [1] 2.572349
# 偏度
print("偏度")
## [1] "偏度"
mean(((order$订单笔数-mean(order$订单笔数,na.rm = T))/
sd(order$订单笔数,na.rm = T))^3,na.rm = T)
## [1] 37.96309
# 峰度
print("峰度")
## [1] "峰度"
mean(((order$订单笔数-mean(order$订单笔数,na.rm = T))/sd(order$订单笔数,na.rm = TRUE))^4,na.rm = T)-3
## [1] 2135.256
从数据中可以看到,75%的人都只有一单。单量过多的人需要排查原因。