統計

データの代表値

平均

$$ \huge \bar{x} = \frac{1}{n} \sum \limits_{i=1}^n x_i$$

# Python | list
testA_mu = sum(testA) / len(testA)

# NumPy | ndarray
testA_mu = np.average(testA)
testA_mu = np.mean(testA)

# Pandas | DataFrame > Series
testA_mu = df['列名'].mean()
メリットすべてのデータを考慮できる
デメリット外れ値に弱い

中央値

$$\huge
Me =
\begin{cases}
x( \frac{n+1}{2})\\
\frac{1}{2} \Biggl( x( \frac{n}{2} ) +x(\frac{n}{2}+1 ) \Biggr)
\end{cases}
$$

# Python | list
me = statistics.median(list)
me_low  = statistics.median_low(list)  # 偶数の場合は低い方
me_high = statistics.median_high(list) # 偶数の場合は高い方

# Pandas | DataFrame > Series
me = df['列名'].median()
メリット外れ値に強い
デメリット全てのデータを十分に考慮できない

最頻値

# Python | list
mode = statistics.mode(list)

# Pandas | DataFrame > Series
mode = df['列名'].mode()[0]
メリット外れ値に強い
デメリット一つに決まらないことがある。サンプルサイズが少ないと使えない。

データの散らばり

データ範囲

# Python | list
range = max(list) - min(list)

# Pandas | DataFrame > Series
column_name = '列名'
range = df[column_name].max() - df[column_name].min()

四分位数(ヒンジ)

表記df.describe()DataFrame
最小値\(max\)mindf[column_name].min()
第1四分位数\(Q_1\)25%df[column_name].quantile(0.25)
第2四分位数(中央値)\(Q_2\)50%df[column_name].quantile(0.5)
第3四分位数\(Q_3\)75%df[column_name].quantile(0.75)
最大値\(min\)maxdf[column_name].max()

四分位範囲

$$ \huge Q_3 - Q_1 $$

# NumPy
iqr = np.percentile[list, [75] - np.percentile[list, [25]

# stats
from scipy import stats
iqr = stats.iqr(list)

# Pandas | DataFrame > Series
column_name = '列名'
iqr = df[column_name].quantile(0.75) - df[column_name].quantile(0.25)

四分位偏差

$$ \huge \frac{Q_3 - Q_1}{2}$$

# NumPy
iqr = np.percentile[list, [75] - np.percentile[list, [25]
qd = iqr / 2

# stats
from scipy import stats
iqr = stats.iqr(list)
qd = iqr / 2

# Pandas | DataFrame > Series
column_name = '列名'
iqr = df[column_name].quantile(0.75) - df[column_name].quantile(0.25)
qd = iqr / 2

分散

$$ \huge \sigma ^2 = \frac{1}{n} \sum_{i=1}^{n}(x_i-\bar{x})^2$$

全てのデータを使った データの値の「ばらつき」を表す度合い。
値が大きければ データの値が ばらつきが大きく、小さければ密集している。

標準偏差

$$\huge \sigma = \sqrt{ \frac{1}{n} \sum_{i=1}^{n}(x_i-\bar{x})^2 }$$

分散を使いやすい値に変換したもの。単位がつけられる。
平均値から + - 標準偏差 の地点に値が固まっていることを表す。

# NumPy
std = np.std(array)

# Pandas | DataFrame > Series
std = df[column_name].std()

変量の変換

\(y=ax+b\) のとき、
 

  •  \(\huge \bar{y} = a \bar{x} + b \)
     
  •  \(\huge {s_y}^2 = a^2 {s_x}^2\)
     
  •  \(\huge s_y = |a| s_x\)
     

が成り立つ。

\({s_x}^2\), \({s_y}^2\) : 分散 \(s_x\), \(s_y\) : 標準偏差

標準化

$$\huge z=\frac{x-\bar{x}}{s_x}$$