切り捨てまたはトリミングされた平均を計算するにはどうすればよいですか?10%切り捨てたとしましょうか?
エントリが10個程度ある場合はどうすればよいか想像できますが、多くのエントリに対してはどうすればよいですか。
切り捨てまたはトリミングされた平均を計算するにはどうすればよいですか?10%切り捨てたとしましょうか?
エントリが10個程度ある場合はどうすればよいか想像できますが、多くのエントリに対してはどうすればよいですか。
回答:
トリミングされた平均には、両端からパーセントの観測値をトリミングすることが含まれます。
例:10%トリム平均の計算を求められた場合、です。
一連の観測を前提として、:
場合整数使用でK = N P トリムkの両端の観察。
=残りの観測値= n − 2 k。
トリミングされた平均=
例:の10%トリミングされた平均を見つける
2、4、6、7、11、21、81、90、105、121
ここで、は整数なので、k = 1であるため、両端で1つの観測値を正確にトリミングします。したがって、2と121を削除します。R = n − 2 k = 10 − 2 = 8の観測値が残ります。
10%トリミング平均=(1/8)*(4 + 6 + 7 + 11 + 21 + 81 + 90 + 105)= 40.625
場合は小数部の存在があり、トリム平均は、もう少し複雑です。上記の例で、15%のトリム平均が必要な場合、 P = 15 、p = 0.15 、n = 10 、k = n p = 1.5です。これには整数部1があり、小数部0.5があります。 R = n − 2 k = 10 − 2 ∗ 1.5 = 10 − 3 = 7です。したがって、R = 7 観察は保持されます。
$X_i$
上記の回答に加えて、多くのエントリ(nなど)がある場合、最初のソートには時間がかかりますO(n log n)。ただし、線形時間のソリューションがあります。
P-分位Lと(1-P)-分位Uを計算します。これには、予想される線形時間で実行される単純な(クイックソートのような)アルゴリズムがあります。最悪の場合線形時間で実行されるより複雑なアルゴリズムもあります。どちらも、たとえば、Cormen、Leiserson、Rivest、Stein:Introduction to Algortithmsにあります。
すべての値をスキャンし、LとUの間の値を追加します。これには明らかに線形時間がかかります。
タイがあり、計算された変位値が値の間に数回存在する場合、追加した値が多すぎるか少なすぎる可能性があり、これを適切に修正する必要がある場合があります。手順2で追加した数値の数と、LとUを何回目にしたかがわかっているため、これは一定の時間で実行できます。
合計を加数の数で割ります。
上記のレシピは、nが本当に大きく、それらすべてをソートすると、おそらく数百万のパフォーマンスヒットになる場合にのみ価値があることに注意してください。