timeseries pandas データフレームがあり、新しい列を計算しました
df['std_series']= ( df['series1']-df['series1'].rolling(252).mean() )/ df['series1'].rolling(252).std()
ただし、標準化する前に、ローリングベースで 5% レベルにウィンザライズしたいと考えています。したがって、任意のデータポイントについて、5% の分位数の外側にある場合は 252 日を振り返り、5% の分位数にクリップしてから標準化します。で動作させる方法がわかりませんでしたrolling.apply
。
たとえば (10 個の要素をローリング): (と)
df = pd.DataFrame({'series1':[78, 1, 3, 4, 5, 6, 7, 8, 99]})
でクリップするとします。次に、クリップ レベル: . 次に、標準化の前に予想されるウィンザー化されたウィンドウは0.15
0.85
(min=3.2, max=64)
[ 64 3.2 3.2 4 5 6 7 8 64]
私が見つけたすべての例は、データフレームまたは列全体のいずれかを winsorize しました。