質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

1回答

2565閲覧

pandasのcorr()は、ピアソン相関係数なのに何故正規分布でない場合も使用するのか?

TakoyakiOishii

総合スコア16

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

0クリップ

投稿2021/06/30 07:31

編集2021/07/01 05:05

前提・実現したいこと

データが正規分布していない場合のcorr()の扱いを知りたいです。

発生している問題・エラーメッセージ

Pythonのpandasでcorr()を使うと、相関係数が出ますが、これがピアソンの相関係数を元に作られていることがわかりました。

---追記---
<参考記事>
pandas.pydata.org

DataFrame.corr(method='pearson', min_periods=1)

pearson : standard correlation coefficient

pandas.pydata.orgより引用

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corr.html
---追記終了---

ピアソンの相関係数を調べると、条件としてデータが正規分布であることを前提としているとありました。

---追記---
<参考記事>
Pearsonの相関係数はデータが正規分布であることが前提となり、KendallやSpearmanの相関係数はその前提がございません。

IBMサポートよおり引用

https://www.ibm.com/support/pages/2%E5%A4%89%E9%87%8F%E3%81%AE%E7%9B%B8%E9%96%A2%E5%88%86%E6%9E%90-pearson%E3%81%A8spearman%E3%81%AE%E9%81%95%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

---追記終了---

しかし、kaggle等を見ると、元データが正規分布ではないのに、corr()を使用しているような例があります。(特徴データが正規分布かどうか調べる前に、corrで相関を調べてしまうなど)
これはどう言うメリットがあるのでしょうか?
後、恥ずかしながら自分は何も考えずにずっとcorrを使用していました。
ただ、頭のいい方達はしっかりわかった上で使っていると思うので、そのメリットが知れたらいいなと思っています。
それとも、正規分布かどうかって実際そこまで重要視しなくてよかったりしますかね?

数弱な身で申し訳ありませんが、教えていただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/06/30 11:00

> Pythonで、corr()を使うと、相関係数が出ますが、これがピアソンの相関係数を元に作られていることがわかりました。 > ピアソンの相関係数を調べると、条件としてデータが正規分布であることを前提としているとありました。 ソースも一緒に示していただけると良いと思います。(corr()はpandasのものでしょうか??)
TakoyakiOishii

2021/06/30 11:15

失礼しました。 情報をもろもろ追記しました。 pandasのものです! ピアソンは数学なので、とりあえずIBMのサイトから引っ張ってきたものを引用しました。
meg_

2021/06/30 11:16

それほど統計に明るくないので下記は引用です。 >最後に数学的な話となりますが、比較する2つのデータが、いずれも正規分布に従っている事が分かっていないと、通常の相関分析は適しません。 そのような場合には「スピアマンの相関係数」「ケンドールの相関係数」という別の指標を使います。 (今まで話してきた一般的な相関係数は「ピアソンの相関係数」と言います。) ただし、「中心極限定理」という定理があり、多くの場合標本データの分布は正規分布に従います。 「明確に正規分布ではない」と分かる時以外は、正規分布だと見なして大きな問題はないでしょう。 (https://analysis-navi.com/?p=1142) 十分にサンプル数が多い場合におおまかに正規分布だと仮定しているのではないでしょうか?
TakoyakiOishii

2021/06/30 11:29

ありがとうございます! 中心極限定理は、標本平均で成り立つものだと思うのですが... (https://atarimae.biz/archives/17470) その点機械学習で扱うデータは、標本平均のデータではなく、標本そのもののデータなので、それは成り立たないんじゃないかなあと思います。と言うのが僕の理解です。
meg_

2021/06/30 11:49

「統計」の質問タグがありますので付けると回答が付きやすくなるかもしれません。 ただteratailにおいて統計の質問は少ないので、統計に関する質問でしたらhttps://oshiete.goo.ne.jp/articles/qa/2504/などの方が詳細な回答が得られるかもしれません。
TakoyakiOishii

2021/06/30 12:16

ご丁寧にありがとうございます!タグも追加させていただきました。 ありがとうございます!
guest

回答1

0

ベストアンサー

相関係数は、おおまかにいうと1)変数間の因果関係を証明するためのひとつの指標とする、2)機械学習のモデル構築時の参考とする、といった使い方があります。
1)の場合、得られた相関係数そのものの確からしさが重要ですので、変数の特徴(正規分布に従っているといえるかどうか)に合わせて計算方法を変える必要があります。一方、2)の場合は例えば、説明変数として用いると良さそうなものを選定する際の参考指標という使い方になるので相関係数の確からしさは重要でありません。最終的に得られたモデルの性能評価結果が良ければ問題なし、というスタンスです。
TakoyakiOishiiさんの場合、どちらを目的にしているのかによりますが、数学的厳密性を必要としないのであれば、corr()で計算したもので十分ではないでしょうか。

投稿2021/06/30 15:18

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakoyakiOishii

2021/06/30 15:20

ありがとうございます!Spearmanの相関係数も大雑把には同じような値になるよな~と思っていたところだったので、とても納得しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問