找到合适的截止值
我尝试实现Hampel tanh估计器来规范化高度不对称的数据。为此,我需要执行以下计算:
给定
x
- 排序的数字列表和m
- x
的中位数,我需要找到a
,使得x
中大约70%的值落入(m-a; m+a)
的范围内。我们对x
中的价值分布一无所知。我使用numpy在python中编写,我最好的想法是编写某种随机迭代搜索(例如,如Solis和Wets所描述的),但我怀疑有更好的方法,无论是以形式还是更好的算法或准备好的功能。我搜索了numpy和scipy文档,但找不到任何有用的提示。
编辑
Seth建议使用scipy.stats.mstats.trimboth,但是在我测试偏差分布时,这个建议不起作用:
from scipy.stats.mstats import trimboth
import numpy as np
theList = np.log10(1+np.arange(.1, 100))
theMedian = np.median(theList)
trimmedList = trimboth(theList, proportiontocut=0.15)
a = (trimmedList.max() - trimmedList.min()) * 0.5
#check how many elements fall into the range
sel = (theList > (theMedian - a)) * (theList < (theMedian + a))
print np.sum(sel) / float(len(theList))
输出为0.79(~80%,而不是70)
没有找到相关结果
已邀请:
3 个回复
貉骂
函数:
这样可以得到
的结果。
超可林
,指数较大的指数为
;这些不是独立的。指数列表中的值为
和
。您现在要选择
(因此
),以便
和
尽可能接近。当
最小时会发生这种情况。使用
非常容易。与问题中的示例并行,这是一个说明方法的交互式会话:
死簇
。修剪后,取
。