【Python】pandasとscipyで相関係数とp値を算出し統計分析する方法【実践】

Python

前回の記事で、

  1. 中小企業診断士第一次試験の統計情報(10年分:h22~h31)をサンプルに、
  2. tabulaライブラリをつかって、PDFから表データを抽出し、
  3. describe()メソッドで要約統計量を確認してみました。

【Python】tabulaでPDFの『表』を抽出して統計分析する方法

【Python】tabulaでPDFの『表』を抽出して統計分析する方法
Pythonのtabulaを使い、PDF内の『表』を抽出整形した後、describeメソッドで要約統計量を取得します。Jupyter notebookでmatplotlibやseabornを使い、統計情報をもとに美しいグラフを描画する方法を解説します。

 

きょうは、そのつづき、

  1. 『Jupyter Notebook(Python)』を使って pandasscipyライブラリから、相関係数とp値を計算し、
  2. 2変数(科目)間の関係の強さ(相関関係)を確認してみようと思います。また、
  3. 算出した統計量をもとに、 matplotlibseaborn で、グラフを作成し、相関関係の分析

をやってみようと思います。

今回も前回同様、例として中小企業診断士第一次試験の統計情報(10年分:h22~h31)を使って分析します。

スポンサード リンク

相関係数とp値の算出

必要なライブラリをインポート

まずはライブラリの import

 

 

統計分析前のデータ分布の確認

前回の記事で作成した統計表 pandas.DataFrame(データフレーム) df2[0] を使います。

 

統計分析前にデータ分布を確認。

seaborn.distplotメソッドで全科目のヒストグラムを重ねて表示。

kdeオプションを Trueにして、カーネル密度関数のグラフ(曲線)を表示します。

 

このようなヒストグラムが表示されます↓↑データ数は比較的少ないですが、15%~25%付近にデータが集中していることがわかります。

要約統計量の確認

ここで、前回の記事.describe メソッドから算出した要約統計量をもういちど確認します。

↑各科目とも平均値 mean と中央値 50% が近い数値となっており、おおよそ釣り鐘型のデータ分布となっています。データ数が少ないため左右対称とまではいきませんね。。。

 

pandasの.corrメソッドで相関係数を算出

それでは、 pandas.corr メソッド(ピアソンの積率相関係数=デフォルト)で相関係数を算出します↓

 

このような pandas.DataFrameになります↓

 

相関係数の値と相関の目安はこちら↓

相関係数の値と相関(目安)
相関係数  の値 相関
−1.0≤r≤−0.7 強い負の相関
−0.7≤r≤−0.4 負の相関
−0.4≤r≤−0.2 弱い負の相関
−0.2≤r≤0.2 ほとんど相関がない
弱い正の相関
正の相関
強い正の相関

 

相関係数を可視化する

seabornの.hatmapメソッドで相関係数を可視化

pandas.DataFrameだけでは特徴をつかみにくいので、 seaborn.hatmap メソッドを使って、データを可視化します。

このようなヒートマップが作成されます↓

↑暖色は正の相関、寒色は負の相関を表します。

読み取れる特徴は、

  1. 経営法務と経営情報システムは正の相関(暖色)、
  2. 経済政策と経営法務は負の相関(寒色)
  3. 経済政策と経営情報システムは負の相関(寒色)

という点でしょうか。

さらに分析します。

seabornの.pairplotメソッドでペアプロット図(散布図行列)を作成

seaborn.hatmap メソッドだけでは、詳細な分析はできません。もう少し掘り下げます。

seaborn.pairplot メソッドでペアプロット図(散布図行列)を作成し、データ間の特徴を分析します。

このようなグラフができます↓

正の相関:右肩上がりの直線的分布、負の相関:右肩下がりの直線的分布、無相関:バラバラに散らばっている状態、となります。

データ数が少なく特徴がつかみにくですがやはり、

  1. 経営法務と経営情報システムは正の相関(右肩上がり)、
  2. 経済政策と経営法務は負の相関(右肩下がり)
  3. 経済政策と経営情報システムは負の相関(右肩下がり)

ということが言えそうです。

p値から相関係数の有意性を検定

p値を算出し相関係数が統計的に有意(意味がある)か検定してみます。ここでは0.10以下のp値のみ抽出します。

 

抽出された相関関係は以下の4つ。

結果から、

  1. p値<0.05の「経営法務ー経営情報システム」、「経済政策ー経営法務」は、有意であると解釈でき、
  2. 0.05<p値<0.10の「経済政策ー経営情報システム」、「企業経営理論ー経営情報システム」は、有意傾向である

と解釈できます。

 

まとめると、

  1. 経営法務と経営情報システムは正の相関(右肩上がり)、
  2. 経済政策と経営法務は強い負の相関(右肩下がり)
  3. 経済政策と経営情報システムは負の相関(右肩下がり)
  4. 企業経営理論と経営情報システムは負の相関(右肩下がり)

の関係があると言えそうです。

詳しい因果関係はわかりませんが、これらの科目で意図的にポートフォリオが組まれているかもしれませんね。

次回は・・・

次回は、受験科目別の合格率の推定をしてみたいと思います。

自分も受験生時代、1次は、

  • 「7科目受験がおすすめ」
  • 「少ない科目受験は危ない」

などの情報を耳にしていましたが、これって本当に正しかったのでしょうか?

次回の記事では、そこらへんを中心に分析してみたいと思います。

お楽しみに!

参考サイトと講座

今回、以下のサイトと講座を参考にコーディング、統計分析しました。

– DATA SCIENCE LIFE –

アメリカ在住データサイエンティストのかめ(@usdatascientist)さんのブログ。

Pythonのコーディングについて、めちゃくちゃわかりやすく解説してあります。超ハイクオリティな講座でほんとにぜんぶ無料なの?ってなるくらいすごいブログです。

Python初心者の方にはかなりお勧めです。

データサイエンスのためのPython入門講座全33回〜目次とまとめ〜

 

note.nkmk.me

nkmk(@nkmk_me)さんのブログです。

こちらもPythonプログラミングについて、かなり詳しく書いてあります。

nkmk note
学んだことを書く。Pythonなどプログラミング関連がメイン。

 

現役シリコンバレーエンジニア(酒井 潤さん)が教えるPython 3 入門(Udemy)

現役シリコンバレーエンジニアの酒井 潤(@sakaijun)さんがUdemyで教えるPython講座もおすすめです。なんといっても解説がとても分かりやすい。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

この講座ではPython3の基礎はもちろんのこと、応用編では

  • データーベースアクセス(SQLite, MySQL, MongoDB, SQLAlchemy etc)、
  • WEB(Flask, socket, RPC etc)、
  • インフラ自動化(Fabric, Ansible)、
  • データ解析(numpy, pandas, matplotlib, scikit-learn),

などなど、盛りだくさんの内容となっております。