分布形态
今天接到老板的需求,需要爬取50多个国外的时尚图片,最近没时间搞了,就先学这吧,等我做了这个需求继续学
一个重要的数值度量被称为偏度。
z-分数
z-分数被称为标准化数值
z-分数 = 平均数的离差 / s代表样本标准差
切比雪夫定理
能使我们指出与平均数的距离在某个特定个数的标准差之内的数据值所占的比例
看实例:
假设100个学生平均成绩70,标准差5
那么你要预估大概58-82的区间人数大概多少
z=(58-70)/5 = -2.4
z =(82-70)/5=+2.4
(1-1/(2.4)^2)=0.826
至少有82.6%的学生考试成绩在58-82分中间。
经验法则
人们发现许多数据具有类似图3-4所示的对称的峰形或钟形分布。当数据被认为近似于这种分布时,就可以运用经验法则。
对于具有钟形分布的数据:
大于68%的数据值与平均数的距离在1个标准差之内
大于95%的数据值与平均数的距离在2个标准差之内
几乎所有的数据值与平均数的距离在3个标准差之内
检测异常值
数据集中有一个或多个数值异常大或异常小,被称为异常值。
异常值可能是一个被错误记录的数据值,也可能是一个被错误包含在数据集中的观测值。如果是这样,则可以删除,也可能就是一个反常的数据值,它被正确记录并且属于数据集,在这种情况下,它应该被保留。
标准化数值(z-分数)可以用来确认异常值。
对钟形分布的数据,建议吧大于或小于3的任何数值都视为异常值。
检测异常值是检查数据有效性的一个工具
练习
- 考虑数据值为10,20,12,17,16的一个样本,计算这5个观测值的每一个的z-分数。
import numpy as np
import pandas as pd
from pandas import Series
test_data = [10,20,12,17,16]
data = Series(test_data)
data
# 标准差
st= data.std()
4.0
# 平均数
mea= data.mean()
15.0
# z-分数
z = (data - mea)/ st
z
0 -1.25
1 1.25
2 -0.75
3 0.50
4 0.25
-
考虑平均数为30,标准差为5的一个样本,利用切比雪夫定理来确定在下列范围内的数据所占的比例。
a. 20 - 40 b. 15-45 c. 22-38 d. 18-42 e. 12-48
test2_data = [20,40,15,45,22,38,18,42,12,48]
data2 = Series(test2_data)
z1 = (data2-30)/5
z1
0 -2.0
1 2.0
2 -3.0
3 3.0
4 -1.6
5 1.6
6 -2.4
7 2.4
8 -3.6
9 3.6
p = 1-1/(z1*z1)
0 0.750000
1 0.750000
2 0.888889
3 0.888889
4 0.609375
5 0.609375
6 0.826389
7 0.826389
8 0.922840
9 0.922840
dtype: float64
a.20-40的比例为75%
b.15-45的比例为88.89%
c.22-38的比例为60.93%
d.18-42的比例为82.6%
e.12-48的比例为92.28%
-
一项全美型的调查结果显示,美国成年人每天平均睡眠6.9小时,假设标准差为1.2小时。
a. 每天睡眠时间在4.5-9.3小时的成年人比例。
b. 3.9-9.9小时的成年人比例。
c. 假设睡眠时间服从钟形分布。利用经验法则计算每天在4.5-9.3小时的成年人比例。这个结果如何与切比雪夫定理得到的结果比较?
test3 = [4.5,9.3,3.9,9.9]
data = Series(test3)
z3 = (data-6.9)/1.2
z3
0 -2.0
1 2.0
2 -2.5
3 2.5
p3 = 1-1/(z3*z3)
p3
0 0.75
1 0.75
2 0.84
3 0.84
4.5-9.3小时的成年人比例75%
3.9-9.9小时的成年人比例84%
根据经验法则,发现95%的人睡眠4.5-9.3小时。
# 算出标准差距离
615-515/100 = 1
# 大约68%的学生超过615分
715-515/100 = 2
# 大约95%的学生超过715分
# 小于615分的大概为32%,里面415-515分比例又在第一个标准间为68%,则在415-515分的比例是25%。
# 315到615的比例为95%*32% = 30%
test5 = [13,12,8,3,8,2,18]
data5 = Series(test5)
data5.mean()
平均数9.14
data5.median()
中位数8
data5.mode()
众数8
data5.max()-data5.min()
极差16
data5.std()
标准差5.66
# 判断是否异常
(18-9.14)/5.66 = 1.56
# 标准差距离在2个以内,不算异常值
d. 无法看出
score = [4.00,4.12,3.82,4.00,4.56,4.32,4.33,4.50,4.64,4.20,4.67,2.14,4.09,4.17,4.88,4.26,2.32,4.50,4.17,2.17]
score_data = Series(score)
score_data.mean()
平均数3.993
score_data.median()
中位数4.18
score_data.quantile([0.25,0.75])
0.25 4.0
0.75 4.5
dtype: float64
score_data.std()
标准差 0.8113672670901033
偏度为-1.67,形态为适度偏左形状,评分偏低的较多。
zAllison = 0.15
zOmni = -2.06
# 判断是否异常值
(2-3.993)/0.81 = -2.460
(5-3.993)/0.81 = 1.24
看见最大和最小的范围内都在第三标准间距,没有异常值