歪度と尖度

歪度と尖度とは?

歪度(わいど)と尖度(せんど)は、データの分布の形状を特徴づけるための統計的指標です。

歪度(Skewness)

歪度は、データの分布の非対称性を測る指標です。平均を中心としてデータがどれだけ左右対称でないかを示します。

  • 正の歪度(右に歪んでいる): 分布の右側に長い尾があることを示します。例として、収入データなどが挙げられます。

import numpy as np
import matplotlib.pyplot as plt

data_positive_skew = np.random.exponential(scale=2, size=1000)

plt.figure(figsize=(10, 6))
plt.hist(data_positive_skew, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')

plt.xlabel('Value')
plt.ylabel('Frequency')

plt.grid(True)
plt.show()
  • 負の歪度(左に歪んでいる): 分布の左側に長い尾があることを示します。例として、学生のテストの成績などが挙げられます。

data_negative_skew = 10 - np.random.exponential(scale=2, size=1000)

plt.figure(figsize=(10, 6))
plt.hist(data_negative_skew, bins=30, density=True, alpha=0.7, color='red', edgecolor='black')

plt.xlabel('Value')
plt.ylabel('Frequency')

plt.grid(True)
plt.show()
  • 歪度が0に近い: 分布が左右対称であることを示します。

data_near_zero_skew = np.random.normal(loc=0, scale=1, size=1000)

plt.figure(figsize=(10, 6))
plt.hist(data_near_zero_skew, bins=30, density=True, alpha=0.7, color='green', edgecolor='black')

plt.xlabel('Value')
plt.ylabel('Frequency')

plt.grid(True)
plt.show()

尖度(Kurtosis)

尖度は、データの分布の「尖り具合」を測る指標です。データが平均周辺にどれだけ集中しているか、または分散しているかを示します。

  • 高い尖度(Leptokurtic): 尖度が大きい場合、分布は尖っており、中央にデータが集中しています。例として、特定のテストで全員がほぼ同じ成績を取る場合などが挙げられます。

import numpy as np
import matplotlib.pyplot as plt

data_high_kurtosis = np.random.normal(loc=0, scale=1, size=1000)

data_high_kurtosis[::100] = 5

plt.figure(figsize=(10, 6))
plt.hist(data_high_kurtosis, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')

plt.xlabel('Value')
plt.ylabel('Frequency')

plt.grid(True)
plt.show()
  • 低い尖度(Platykurtic): 尖度が小さい場合、分布は平らで、データが広がっています。例として、テストの成績が均等にばらついている場合などが挙げられます。

data_low_kurtosis = np.random.uniform(-5, 5, size=1000)

plt.figure(figsize=(10, 6))
plt.hist(data_low_kurtosis, bins=30, density=True, alpha=0.7, color='red', edgecolor='black')

plt.xlabel('Value')
plt.ylabel('Frequency')

plt.grid(True)
plt.show()