如何在python中计算绝对中位数偏差
中值绝对偏差衡量数据集中观测值的分布。
这是一个特别有用的度量,因为与标准差和方差等其他离散度量相比,它受异常值的影响较小。
绝对中位偏差(通常缩写为 MAD)的计算公式为:
MAD = 中位数 (|x i – x m |)
金子:
- x i :数据集的第 i 个值
- x m :数据集中的中值
以下示例展示了如何使用statsmodels mad函数在 Python 中计算中值绝对偏差。
示例 1:计算表的 MAD
以下代码展示了如何在 Python 中计算单个 NumPy 数组的中值绝对偏差:
import numpy as np from statsmodels import robust #define data data = np. array ([1, 4, 4, 7, 12, 13, 16, 19, 22, 24]) #calculate MAD robust. mad (data) 11.1195
数据集的中值绝对偏差为11.1195 。
值得注意的是,用于计算 MAD 的公式通过将结果缩放约 0.67 倍来计算假设正态分布的标准差的稳健估计值。
要避免使用此缩放因子,只需按如下方式设置 c = 1:
#calculate MAD without scaling factor robust. mad (data, c=1) 7.5
示例 2:计算 DataFrame 的 MAD
以下代码显示了如何计算 pandas DataFrame 中单列的 MAD:
#make this example reproducible n.p. random . seeds (1) #create pandas DataFrame data = pd. DataFrame ( np.random.randint (0,10,size=(5,3)),columns = [' A ',' B ',' C ']) #view DataFrame data A B C 0 5 8 9 1 5 0 0 2 1 7 6 3 9 2 4 4 5 2 4 #calculate MAD for column B data[[' B ']]. apply (robust. mad ) B 2.965204 dtype:float64
B列的绝对中值偏差为2.965204 。
我们可以使用类似的语法来计算 pandas DataFrame 中多列的 MAD:
#calculate MAD for all columns
data[[' A ',' B ',' C ']]. apply (robust. mad )
At 0.000000
B 2.965204
C 2.965204
dtype:float64
A 列的绝对中位偏差为0 ,B 列的绝对中位偏差为2.965204 ,C 列的绝对中位偏差为2.965204 。