使用Python计算扩散度量
#初学者 #python #datascience #statistics

传播措施

在本文中,我将讨论一组摘要统计信息:差异。

什么是传播?

传播听起来像是这样 - 它描述了数据点如何分开或结合在一起。就像中心的度量一样,有几种不同的扩展度量。

Image description

方差

第一个度量,方差,测量从每个数据点到数据平均值的平均距离。

计算方差

计算方差:

  1. 从每个数据点减去平均值。
dists = msleep['sleep_total'] -
        np.mean(msleep['sleep_total'])
print(dists)
0 1.666265
1 6.566265
2 3.966265
3 4.466265
4 -6.433735
...

因此,我们为每个数据点获得一个数字。

  1. 每个距离平方。
sq_dists = dists ** 2
print(sq_dists)
0   2.776439
1   43.115837
2   15.731259
3  19.947524
4  41.392945
...
  1. 总和距离。
sum_sq_dists = np.sum(sq_dists)
print(sum_sq_dists))
1624.065542
  1. 除以数据点的数量-1
variance = sum_sq_dists / (83 - 1)
print(variance)
19.805677

最后,我们将平方距离的总和除以数据点的数量减去1,从而为我们提供了差异。差异越高,数据的分布越多。重要的是要注意,差异单位是平方的,因此在这种情况下,是19点-8小时的平方。
我们可以使用 np.var 在一个步骤中计算差异,将** ddof **参数设置为1。

np.var(msleep['sleep_total'], ddof=1)
19.805677

如果我们不指定 ddof 等于1,则使用略有不同的公式来计算仅应在全部人群而不是样本中使用的方差。

np.var(msleep['sleep_total'])
19.567055

Image description

标准偏差

标准偏差是通过差异方差的平方根计算得出的另一个量度。可以使用 np.std 进行计算,就像 np.var 一样,我们需要将DDOF设置为1。关于标准偏差的好处是,这些单位通常更容易要理解,因为它们没有平方。比19.8小时的平方更容易包裹头4.5小时。

np.sqrt(np.var(msleep['sleep_total'], ddof=1))
4.450357
np.std(msleep['sleep_total'], ddof=1)
4.450357


平均绝对偏差

均值绝对偏差将距离的绝对值带到平均值,然后将这些差异的平均值占据。尽管这类似于标准偏差,但并不完全相同。标准偏差正方形的距离,因此较长的距离比较短的距离更大,而平均绝对偏差会平等地惩罚每个距离。一个并不比另一个更好,但是SD比疯狂更普遍。
冷0冷1 Cold0
Cold0 Cold4 Cold0

分位数

在讨论下一个差异之前,让我们快速通过分位数。分位数,也称为百分位数,将数据分为一定数量的相等部分。在这里,我们称 np.quantile 在感兴趣的列中,其次是0.5。这给了我们10.1个小时,因此数据集中有50%的哺乳动物每天入睡不到10.1小时,而其他50%的睡眠时间超过10.1小时,因此与中位数完全相同。我们还可以通过数字列表一次获得多个分位数。在这里,我们将数据分为4个相等的部分。这些也称为四分之一。这意味着25%的数据在1.9和7.85之间,另有25%在7.85和10.10之间,依此类推。

cold0 cold7 chold0
Cold0 Cold10 Cold0

盒子图使用四分位数

框图中的框表示四分位数。盒子的底部是第一个四分位数,框的顶部是第三个四分位数。中线是第二四分位数或中间线。

Python
import matplotlib.pyplot as plt
plt.boxplot(msleep['sleep_total'])
plt.show()

Image description

使用np.linspace()分位数

在这里,我们将数据分为五个相等的片段,但是我们也可以将 np.linspace 用作快捷方式,该快捷方式占据了起始数,停止数和数字间隔。我们可以使用 np.linspace
冷0 Cold16 Cold0
Cold0 Cold19 Cold0
Cold0Python
np.linspace(start, stop, num)
np.quantile(msleep['sleep_total'], np.linspace(0, 1, 5))

Cold0
array([ 1.9 , 7.85, 10.1 , 13.75, 19.9 ])

四边形范围(IQR)

四分位间范围或IQR是另一个扩展的量度。这是第25%和第75个百分位之间的距离,这也是盒装中盒子的高度。我们可以使用分位数函数进行计算,或者使用 scipy.stats 获得5.9小时的 iqr 函数。
Cold0 Cold28 Cold0
Cold0
5.9

冷0冷34 Cold0
cold0
5.9

异常值

离群值是与其他数据点大不相同的数据点。
但是我们怎么知道什么是实质性的差异?经常使用的规则是,任何数据点都比第一个四分位数少-1.5倍IQR是离群值的1.5倍,并且任何点都大于第三四分位数 + iqr的1.5倍。

  • 数据

  • 数据> Q3 + 1.5 X IQR

寻找离群值

要查找离群值,我们将从计算哺乳动物体重的IQR开始。然后,我们可以按照上一个幻灯片的公式计算上下阈值。现在,我们可以将数据框架子集以找到其体重低于阈值或高于阈值的哺乳动物。该数据集中有11个体重异常值,包括牛和亚洲大象。
Cold0 Cold40 Cold0

msleep[(msleep['bodywt'] < lower_threshold) | (msleep['bodywt'] > upper_threshold)]


name vore sleep_total bodywt
4 Cow herbi 4.0 600.000
20 Asian elephant herbi 3.9 2547.000
22 Horse herbi 2.9 521.00

使用.deScribe()方法

到目前为止,我们涵盖的许多摘要统计数据都可以使用 DeScribe 方法在一行代码中计算出来,因此当您想获得一般性的感觉时,可以方便地使用您的数据。
Cold0 Cold49 Cold0
Cold0 Cold52 Cold0