【ITニュース解説】Skewness and kurtosis
2025年10月02日に「Dev.to」が公開したITニュース「Skewness and kurtosis」について初心者にもわかりやすく解説しています。
ITニュース概要
歪度(skewness)と尖度(kurtosis)は、データ分布の形を理解するための統計の重要な概念だ。歪度は分布の左右への偏り(非対称性)を示し、尖度は分布の裾の重さや外れ値の多さを表す。これらを把握することで、データの特性を深く読み解ける。
ITニュース解説
ヒストグラムを見たときに、データが奇妙に伸びていたり、傾いていたりすると感じたことはないだろうか。これは、スキューネスや尖度と呼ばれる統計学の重要な概念が関係しており、データの分布の形を説明するものだ。これらの指標を理解することは、システムが生成するログデータやユーザーの行動データなど、あらゆるデータを深く分析し、その本質を理解するために不可欠である。
まず、スキューネスについて説明する。スキューネスは、データの分布が左右にどれだけ偏っているか、つまり非対称性を示す指標である。
分布が右側に長く伸びた尾を持つ場合、これは正のスキューネスを持つと表現される。このとき、データの平均値は中央値よりも大きくなる傾向がある。例えば、あるWebサービスの読み込み時間データをヒストグラムにした場合、ほとんどのユーザーは高速な読み込みを経験するが、ネットワーク環境の悪い一部のユーザーが非常に長い読み込み時間を経験すると、分布の尾は右側に伸びることになる。これは正のスキューネスの一例だ。平均読み込み時間が中央値よりも長ければ、それは少数の遅いケースによって平均値が引き上げられていることを意味する。
逆に、分布が左側に長く伸びた尾を持つ場合、これは負のスキューネスを持つと表現される。この場合、データの平均値は中央値よりも小さくなる傾向がある。例えば、ほとんどのシステム機能が安定して高速に動作しているが、ごく稀に深刻なバグによって応答時間が極端に短くなる(あるいはタイムアウトなどで測定できないような事象として記録される)といった特殊な状況で、データが左側に偏る可能性もある。また、非常に簡単なタスクの完了時間データでは、ほとんどの人が非常に短い時間で完了するが、ごく少数の人がさらに短い時間で完了するような場合、負のスキューネスを示すこともある。
もしスキューネスがゼロに近い場合、その分布はほぼ左右対称であり、正規分布のような理想的な形に近いと言える。これは、データの値が平均値の周りに均等に散らばっている状態を示す。Pythonのscipy.stats.skew関数を使用すると、このスキューネスの値を簡単に計算できる。得られた値が正であれば右に偏り、負であれば左に偏りがあると判断できる。スキューネスを理解することで、データの中心がどこにあるかだけでなく、その中心がどのように偏っているかを知ることができ、データが持つ特性や潜在的な問題をより正確に把握できる。
次に、尖度について説明する。尖度は、分布の「裾の重さ」を測定する指標である。具体的には、分布のピークがどれだけ尖っているか、そしてその両端(裾)にどれだけデータが集中しているか、つまり「外れ値」がどれだけ極端であるかを示す。
尖度が高い分布は「レプトキュルティック」と呼ばれ、中央のピークが鋭く、両端の裾が重いことを意味する。これは、平均から大きく離れた極端な外れ値が多く存在することを示唆している。例えば、あるシステムのCPU使用率を監視するデータで、通常は安定した低い値で推移するが、稀に急激なスパイク(異常な高負荷)が発生する場合、このデータは高い尖度を示すだろう。このようなデータは、予測不可能な大きなイベントが発生するリスクが高いことを示唆している。
尖度が低い分布は「プラティキュルティック」と呼ばれ、中央のピークが平坦で、両端の裾が軽いことを意味する。これは、外れ値が少なく、データの値が平均値の周りに比較的均等に散らばっている状態を示す。例えば、非常に安定した環境で動作するセンサーからの温度データなど、ほとんど変動がなく、極端な値が出にくいようなデータがこれに該当する。
正規分布は「メソキュルティック」と呼ばれ、その尖度はおよそ3となる。ただし、統計ソフトウェアによっては、正規分布の尖度を0とする「フィッシャーの定義」を採用している場合もある。Pythonのscipy.stats.kurtosis関数で尖度を計算する際、fisher=Falseを指定すれば正規分布の尖度が3となる値が得られ、fisher=True(デフォルト)を指定すれば正規分布の尖度が0となる値が得られる。
尖度を理解することは、特にリスク分析や品質管理の分野で重要だ。システムのエラー率のデータが高尖度を示していれば、普段はエラーが少ないが、一度発生すると非常に多くのエラーが集中する可能性を考慮する必要がある。これは、システムの安定性を評価し、予期せぬ障害に対する準備をする上で貴重な情報となる。
スキューネスと尖度は、平均値や標準偏差といった基本的な統計量だけでは捉えきれない、データのより詳細な形状特性を明らかにする。システムエンジニアとしてデータ分析に取り組む際、これらの概念を理解し活用することで、単なる数値の羅列からデータの「物語」を読み解く力が身につく。これにより、システムの潜在的な問題点を発見したり、ボトルネックを特定して改善策を立案したり、将来の性能傾向を予測したりする上で、より深く、より実用的な洞察を得られるようになるだろう。データがどのように偏り、どれくらいの外れ値を持つかを把握することは、システムの信頼性向上や効率的な運用に直結するのである。