xtile
関数を使用してベクトル内の観測値を分位数 (この場合は、標準の 5 つの分位数、20%、40%、60%、80%、100%) で分類する古い Stata コード (Stata11) を継承しました。 .
Python でコードの一部を複製しようとしており、計算に SciPy.stats.mstats 関数mquantiles()
を使用しています。
Stata のドキュメントとオンライン検索からわかる限り、Stata のxtile
方法はデータの経験的 CDF を逆にしようとし、CDF がフラットであるすべての観測値の均等加重平均を使用してカットポイントを作成します。これは、分位点を分類する方法としては非常に貧弱に思えますが、実際にはそうであり、これが正しい方法である場合もあると確信しています。
私の質問はmquantiles()
、同じ種類の慣習を壊す方法です。alphap
この関数には 2 つのパラメーターがあることに気付きましたbetap
(ドキュメントではそれらalpha
を呼び出してbeta
いますが、それを機能させるには追加の 'p' が必要です。少なくとも私はそうしています... 'alpha' と ' beta' と Python 2.7.1 および SciPy 0.10.0)。しかし、SciPy のドキュメントでも、フラットな CDF 範囲で平均を生成するこれらのパラメーターの組み合わせがあるかどうかはわかりません。
この範囲の中央値またはモードとして計算するオプションのように見えますが、平均値ではありません (アルファとベータを含むこれらの SciPy 中央値/モード オプションが、観測値またはフラット CDF 値を生成する範囲)。
これらのさまざまなオプションのあいまいさを解消し、Python で Stata 規則を再作成するのに役立つドキュメントを見つけてください。「独自の分位数関数を記述してください」というだけの回答は控えてください。第一に、それは Stata や SciPy の慣例を理解するのに役立ちません。第二に、これらの数値ライブラリを考えると、独自の分位関数を作成するのは最後の手段です。私は確かにそれを行うことができますが、必要に応じて全体的に悪いでしょう.