接下来,我介绍了所做的代码,我创建了DMA函数,它具有绝对平均偏差的公式,另外两个打印程序计算了统计软件包的DMA,并且健壮,因为我们看到这两个结果是不同的,我不明白为什么函数的估计与我手工创建的函数有如此大的不同。
import numpy as np
import scipy.stats as stats
from statsmodels import robust
def MAD (vector):
MAD = np.sum(np.abs(vector-np.mean(vector)))/len(vector)
return(MAD )
print("MAD ",DMA([1.5,0,4,2.5]))
print("MAD function from stats", stats.median_absolute_deviation([1.5,0,4,2.5],axis=0))
print("MAD function from robust", robust.mad([1.5,0,4,2.5]))结果:
MAD 1.25
MAD function from stats 1.8532499999999998
MAD function from robust 1.8532527731320025发布于 2020-06-14 04:17:16
首先,这两个函数应用一个归一化常数,使MAD成为标准差的一致估计。如果我们通过将此因子设置为1.0来关闭此调整,则结果是相同的。
第二,虽然这个特定向量的中值和平均值是相同的,但是如果您想匹配这两个函数的默认行为,则应该使用向量的中值作为中心,而不是平均值。
import numpy as np
import scipy.stats as stats
from statsmodels import robust
def MAD(vector):
MAD = np.mean(np.abs(vector-np.median(vector)))
return MAD
print("MAD",MAD([1.5,0,4,2.5]))
print("MAD function from stats", stats.median_absolute_deviation([1.5,0,4,2.5],axis=0,scale=1.0))
print("MAD function from robust", robust.mad([1.5,0,4,2.5],c=1.0))MAD 1.25
统计量1.25中的MAD函数
鲁棒1.25中的MAD函数
https://stackoverflow.com/questions/62368099
复制相似问题