python PR

【pythonで統計学】データのばらつきを表す散布度について(四分位数を中心に)〜サンプルコード付き〜

python 統計学 データのばらつき 四分位数
記事内に商品プロモーションを含む場合があります

統計処理を行う際に、ノンパラかパラメトリックかどうかを把握する必要がありました

これを正規分布している・していない、と表現しますが、正規分布していない場合には、データが両端にバラついている度合いが大きくなるということになります

正規分布の場合でも、多少はデータは散らばります

このようにデータがばらついていることを散布度と呼びます

今回はデータのばらつきを表す散布度について解説しつつ、pythonでどのように表現するのかをサンプルコードを交えつつ紹介していきたいと思います

pythonで統計学を順序立てて学びたい方は、こちらの記事を参考に進めてみてください

python 統計学
pythonで統計学を学ぶメリット〜実際の学習手順を紹介〜近年、データサイエンティストの需要が高まってきていますが、データサイエンティスト必須能力として、「プログラミング言語」「統計学」が挙げられています。pythonで統計学を扱えれば、データサイエンティストとしての道も開けるでしょう。今回はpythonで統計学を学ぶメリットや実際にどのように学習していくべきかを解説していきたいと思います。...

データのばらつきを表す散布度とは

散布度はデータがどれくらい散らばっているかを表しています

以前解説したデータの代表値だけでは、散布度はわからないため、改めて散布度をみる必要が出てきます

そのため、代表値とともに散布度も一緒に算出する必要があります

散布度として用いる指標には、以下のようなものがあります

  • 四分位範囲
  • 四分位偏差
  • 範囲
  • 分散
  • 標準偏差

今回の記事では、四分位範囲・四分位偏差・範囲について解説をしたいと思います

データの範囲

データの範囲(range)とは、最大値-最小値のことを指します

irisのデータを使って説明していきますので、まずはirisのデータを用意して、最大値と最小値を求めます

import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
#irisの先頭5行を確認
print(iris.head())
#.max()で最大値,.min()で最小値を求める
print(iris.max())
print(iris.min())
irisデータ iris最大値と最小値

今回はsepal_lengthの範囲を求めたいと思います

求めるデータが少なかったり、桁が小さければ自力で計算するのでもありですが、そういった計算もpythonに任せてしまいましょう

import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
datarange=iris["sepal_length"].max()-iris["sepal_length"].min()
print("sepal_lengthの範囲は",datarange)
iris範囲の結果 iris範囲のポイント

iris.[“XXXX”]のXXXX部分を変えれば、他のデータでも同じように算出することができます

irisの部分は読み込んだ変数名になっています

四分位範囲と四分位偏差

最大値と最小値から求める範囲の弱点は、外れ値に左右されてしまう、という点です

そこで出てくるのが、四分位数を使った四分位範囲と四分位偏差です

四分位数はデータを順番に並べたときに4等分するというものです

このとき4等分にした数値である四分位数を使って、四分位範囲(interquartile range: IQR)を求めます

また、四分位範囲の半分の値を四分位偏差(quartile deviation: QD)と呼びます

さらに、第二四分位数は中央値になります

四分位数

四分位範囲や四分位偏差もデータのばらつきを確認する指標であり、外れ値の影響をあまり受けないというメリットがあります

pythonではscipy.stats.iqr()を使えば簡単に算出することができます

from scipy import stats
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns; sns.set()

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iqr=stats.iqr(iris["sepal_length"])
qd=iqr/2
#箱ひげ図の作成
sns.boxplot(iris["sepal_length"])
 
plt.show()
sepal_length箱ひげ図

基本的にノンパラのデータであれば、四分位数を使い、箱ひげ図で可視化すると私は学びました

平均値と棒グラフでは、両端の数値に左右されやすいからです

ぜひpythonでデータのばらつきを表現してみてください

まとめ

  • データの範囲:最大値-最小値(外れ値に左右される)
  • 四分位数:データを並べたときの4等分にした値
  • 第二四分位数は中央値
  • 四分位範囲(IQR):第三四分位数-第一四分位数
  • 四分位偏差:IQRの半分

pythonで統計学を学ぶ上で必須書籍

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.