🐥

【Python】データ分析に用いる指標の算出方法について【備忘録】

2022/11/27に公開約3,900字

データを分析する際に使用する指標の算出方法および指標が指し示す内容について備忘録としてまとめる.
使用言語はPython.

本記事中で例示するために使用したコードは,ここからダウンロード可能.
分析するデータはrandomモジュールによりランダムに作成した.

準備

必要なライブラリをインストールする.

terminal
pip install numpy
pip install scipy

算出方法

分析対象のデータをランダム作成

Pythonの標準ライブラリであるrandomモジュールを使用する.
分析対象の配列targetの配列長を変数lengthで制御する.
以下にコードを示す.

statistical_index.py
# 分析対象の配列を定義
length = 100
target = [random.randint(0,100) for i in range(length)]
print(target)
# [96, 77, 75, 41, 28, 96, 2, 68, 11, 57, 32, 73, 75, 28, 31, 11, 62, 2, 67, 84, 70, 92, 45, 40, 13, 26, 10, 57, 43, 19, 72, 96, 3, 98, 100, 18, 13, 40, 54, 5, 74, 9, 11, 19, 86, 43, 86, 45, 48, 24, 10, 40, 30, 47, 10, 22, 1, 46, 76, 4, 58, 44, 89, 7, 57, 95, 57, 76, 26, 98, 12, 19, 81, 94, 87, 39, 78, 15, 85, 54, 52, 38, 83, 26, 60, 5, 65, 42, 10, 35, 12, 54, 5, 97, 7, 24, 88, 90, 24, 87]

データの分布の中央を表現する指標

相加平均,相乗平均,調和平均

相加平均は,一般的に「平均値」と呼ばれる指標.
系列内の全ての要素の和を要素数で割ることで算出する.

\bar{x}_{am} = {1 \over n} \sum_{i=1}^n x_i

相乗平均は,物価の上昇率や収益率,成長率のような「変化率」の平均を求めるときに使う指標.
系列内の全ての要素の積を要素数の累乗根をとることで算出する.

\bar{x}_{gm} = \sqrt[n]{\prod_{i=1}^n x_i}

調和平均は,速度の平均値を算出する際によく使われる指標.
系列内の各要素の逆数の相加平均の逆数をとることで算出する.

\bar{x}_{hm} = {n \over \sum_{i=1}^n {1 \over x_i}}
statistical_index.py
# 相加平均
arithmetic_mean = statistics.mean(target)
print(arithmetic_mean)
# 47.36

# 相乗平均
geometric_mean = gmean(target)
print(geometric_mean)
# 33.008188446952374

# 調和平均
harmonic_mean = statistics.harmonic_mean(target)
print(harmonic_mean)
# 15.885379357540009

中央値

中央値は,系列の分布の中央がどこにあるかを表す指標.
平均値と違い,外れ値の影響を受けにくいという特徴がある.

statistical_index.py
# 中央値
median = statistics.median(target)
print(median)
# 44.5

データの分布の様子を表現する指標

最小値,最大値

系列内の全要素の内,最も大きい値が最大値,最も小さい値が最小値
系列の分布の両端を把握する際に使用する.

statistical_index.py
# 最小値
Minimun = min(target)
print(Minimun)
# 1

# 最大値
Max = max(target)
print(Max)
# 100

四分位数,四分位範囲

系列の分布の偏りを把握する際に使用する指標.
numpyの関数percentileを使う.
引数qで取得したい分布の位置を指定する.

四分位範囲は,第3四分位数と第1四分位数の差.
中央値を中心としてどの程度分布がばらついているのかを表す指標.

statistical_index.py
# 四分位数
quartiles_array = np.percentile(target, q=[0,25,50,75,100])
print(quartiles_array)
# [  1.    19.    44.5   75.25 100.  ]

# 四分位範囲
quartile_range = quartiles_array[3] - quartiles_array[1]
print(quartile_range)
# 56.25

最頻値

最頻値は,系列の分布のピークがどこにあるのかを表す指標.
モードと表現されることもある.

statistical_index.py
# 最頻値
mode = statistics.mode(target) #最頻地が複数存在する場合,エラーになるらしいので要注意.
print(mode)
# 57

分散,偏差

平均絶対偏差

単一系列において,要素の分布が平均からどの程度ばらついているのかを表す指標.
標準偏差と比較して外れ値に対して頑健である点が特徴.

\sigma_{mad} = {1 \over n}\sum_{i=1}^n |x_i - \bar{x}_{am}|
statistical_index.py
# 平均絶対偏差
mad = statistics.mean([abs(x - arithmetic_mean) for x in target])
print(mad)
# 26.9088

分散,標準偏差

分散標準偏差は,系列(母集団)の分布が平均からどの程度ばらついているのかを表す指標.
分散\sigma^2は,系列と次元が違う点に注意が必要.
具体的には,分散の次元は系列の次元の二乗である.
標準偏差\sigmaは分散の2乗根.

\sigma^2 = {1 \over n} \sum_{i=1}^n (x_i - \bar{x}_{am})^2
statistical_index.py
# 分散
Variance = statistics.pvariance(target)
print(Variance)
# 947.6704

# 標準偏差
std = statistics.pstdev(target)
print(std)
# 30.784255716193627

不偏分散,不偏標準偏差

不偏分散s^2不偏標準偏差sは,系列(標本)の分布が平均からどの程度ばらついているのかを表す指標.

s^2 = {1 \over {n-1}} \sum_{i=1}^n (x_i - \bar{x}_{am})^2
statistical_index.py
# 不偏分散
sample_variance = statistics.variance(target)
print(sample_variance)
# 957.2428282828283

# 不偏標準偏差
sample_std = statistics.stdev(target)
print(sample_std)
# 30.939341109384156

変動係数

変動係数は,平均標準偏差の比率を表す指標.
スケールの違う系列間で,系列のばらつきを比較する際に使用する.

CV = {\sigma \over \bar{x}_{am}}
statistical_index.py
# 変動係数
coefficient_variation = std / arithmetic_mean
print(coefficient_variation)
# 0.6500053994128722

まとめ

もう少し勉強して整理したい.

Discussion

ログインするとコメントできます