【Python】データ分析に用いる指標の算出方法について【備忘録】
データを分析する際に使用する指標の算出方法および指標が指し示す内容について備忘録としてまとめる.
使用言語はPython.
本記事中で例示するために使用したコードは,ここからダウンロード可能.
分析するデータはrandom
モジュールによりランダムに作成した.
準備
必要なライブラリをインストールする.
pip install numpy
pip install scipy
算出方法
分析対象のデータをランダム作成
Pythonの標準ライブラリであるrandom
モジュールを使用する.
分析対象の配列target
の配列長を変数length
で制御する.
以下にコードを示す.
# 分析対象の配列を定義
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]
データの分布の中央を表現する指標
相加平均,相乗平均,調和平均
相加平均は,一般的に「平均値」と呼ばれる指標.
系列内の全ての要素の和を要素数で割ることで算出する.
相乗平均は,物価の上昇率や収益率,成長率のような「変化率」の平均を求めるときに使う指標.
系列内の全ての要素の積を要素数の累乗根をとることで算出する.
調和平均は,速度の平均値を算出する際によく使われる指標.
系列内の各要素の逆数の相加平均の逆数をとることで算出する.
# 相加平均
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
中央値
中央値は,系列の分布の中央がどこにあるかを表す指標.
平均値と違い,外れ値の影響を受けにくいという特徴がある.
# 中央値
median = statistics.median(target)
print(median)
# 44.5
データの分布の様子を表現する指標
最小値,最大値
系列内の全要素の内,最も大きい値が最大値,最も小さい値が最小値.
系列の分布の両端を把握する際に使用する.
# 最小値
Minimun = min(target)
print(Minimun)
# 1
# 最大値
Max = max(target)
print(Max)
# 100
四分位数,四分位範囲
系列の分布の偏りを把握する際に使用する指標.
numpy
の関数percentile
を使う.
引数q
で取得したい分布の位置を指定する.
四分位範囲は,第3四分位数と第1四分位数の差.
中央値を中心としてどの程度分布がばらついているのかを表す指標.
# 四分位数
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
最頻値
最頻値は,系列の分布のピークがどこにあるのかを表す指標.
モードと表現されることもある.
# 最頻値
mode = statistics.mode(target) #最頻地が複数存在する場合,エラーになるらしいので要注意.
print(mode)
# 57
分散,偏差
平均絶対偏差
単一系列において,要素の分布が平均からどの程度ばらついているのかを表す指標.
標準偏差と比較して外れ値に対して頑健である点が特徴.
# 平均絶対偏差
mad = statistics.mean([abs(x - arithmetic_mean) for x in target])
print(mad)
# 26.9088
分散,標準偏差
分散と標準偏差は,系列(母集団)の分布が平均からどの程度ばらついているのかを表す指標.
分散
具体的には,分散の次元は系列の次元の二乗である.
標準偏差
# 分散
Variance = statistics.pvariance(target)
print(Variance)
# 947.6704
# 標準偏差
std = statistics.pstdev(target)
print(std)
# 30.784255716193627
不偏分散,不偏標準偏差
不偏分散
# 不偏分散
sample_variance = statistics.variance(target)
print(sample_variance)
# 957.2428282828283
# 不偏標準偏差
sample_std = statistics.stdev(target)
print(sample_std)
# 30.939341109384156
変動係数
変動係数は,平均と標準偏差の比率を表す指標.
スケールの違う系列間で,系列のばらつきを比較する際に使用する.
# 変動係数
coefficient_variation = std / arithmetic_mean
print(coefficient_variation)
# 0.6500053994128722
まとめ
もう少し勉強して整理したい.
Discussion