パンダと加重相関係数を計算する方法はありますか?私はRにそのような方法があることを見ました。 また、相関のp値を取得したいと思います。これは私もRで見つけられませんでした 重み付き相関の説明については、Wikipediaにリンクしてください:https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient#Weighted_correlation_coefficientパンダとの加重相関係数
3
A
答えて
5
これを実装するPythonパッケージはわかりませんが、独自の実装をロールするのはかなり簡単です。 Wikipediaの記事の命名規則を使用して:
def m(x, w):
"""Weighted Mean"""
return np.sum(x * w)/np.sum(w)
def cov(x, y, w):
"""Weighted Covariance"""
return np.sum(w * (x - m(x, w)) * (y - m(y, w)))/np.sum(w)
def corr(x, y, w):
"""Weighted Correlation"""
return cov(x, y, w)/np.sqrt(cov(x, x, w) * cov(y, y, w))
私はできるだけ密接に一致上記の関数を作るためにウィキペディアで数式を試してみましたが、いくつかの潜在的な単純化とパフォーマンスの改善があります。たとえば、@Alberto Garcia-Rabosoが指摘しているように、m(x, w)
は実際にはnp.average(x, weights=w)
なので、実際には関数を書く必要はありません。
この関数は、計算を行うだけでかなり裸である。計算を行う前に、入力を配列にすることを検討することをお勧めします。たとえば、x = np.asarray(x)
は、リストが渡された場合にこれらの関数が機能しないためです。同じ長さ、非ヌル値などを持つすべての入力を検証するための追加チェックも実装できます。
使用例:
# Initialize a DataFrame.
np.random.seed([3,1415])
n = 10**6
df = pd.DataFrame({
'x': np.random.choice(3, size=n),
'y': np.random.choice(4, size=n),
'w': np.random.random(size=n)
})
# Compute the correlation.
r = corr(df['x'], df['y'], df['w'])
p値についての議論hereがあります。ジェネリック計算のようには見えず、実際にウェイトをどのようにしているかによって異なります。
関連する問題
- 1. AMPLとの相関係数
- 2. ピアソン相関係数
- 3. 相互相関係数の混乱
- 4. 重回帰における各独立変数の相関係数
- 5. スピアマンの相関関係とネクタイ
- 6. グループ間の相関関係
- 7. ウェルチの相関関係
- 8. パンダを使って2つのtimeseries間の相関関係を取得する
- 9. パンダのpythonでの変換値の列と分数の関係
- 10. stat_smoothに重みと相関の種類を追加する
- 11. NumPyからDaskへの相関係数関数の変換
- 12. R単一の列間のApriori関数の相関関係
- 13. Scipyとのピアソン多重相関
- 14. 人の相互関係
- 15. パンダのローリング相関の理解
- 16. パンダ:相関行列から自己相関を落とす方法
- 17. スパークとデータフレームとの相関関係を使用するには?
- 18. は相互関係に
- 19. Ruby ORM多相関係、アクティブレコード
- 20. Eloquent ORM多相関係
- 21. SQLのウィンドウ関数に相当するパンダ
- 22. のNeo4j重複関係
- 23. パンダのデータフレーム内の複数の列の加重平均
- 24. 重み付きピアソン相関?
- 25. パンダでの時間加重平均
- 26. 循環依存関係 - 構造体と関数ポインタの相互参照
- 27. パンダで2つの変数の関係をプロットする
- 28. パンダの相関サブクエリに相当する方法
- 29. パンダ:GROUPBYインデックスと、関数
- 30. asp.netとwf4の相関関係の例外
'np.average'は' mights(x、w) 'を' np.average(x、weights = w) 'として定義できるように' weights'引数を受け入れます。 –
@ AlbertoGarcia-Raboso:ありがとう、私はそれについての発言を追加しました。一貫性のために、リンクされたウィキペディアの記事の数式にできるだけ近い形で一致するようにコードをそのまま残しました。 – root