非対称性の高いデータを正規化するために、Hampeltanh推定量を実装しようとしています。これを行うには、次の計算を実行する必要があります。
x
-ソートされた数値のリストとm
-の中央値が与えられた場合、の値の約70%が範囲内に収まるようx
に見つける必要があります。の値の分布については何も知りません。私はnumpyを使用してPythonで記述します。私が持っていた最善のアイデアは、ある種の確率的反復検索を記述することです(たとえば、Solis and Wetsによって説明されたように)が、次のいずれかの形式で、より良いアプローチがあると思います。より良いアルゴリズムまたは準備ができた関数として。numpyとscipyのドキュメントを検索しましたが、役立つヒントが見つかりませんでした。a
x
(m-a; m+a)
x
編集
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です(70ではなく〜80%)