【Python】標準偏差とは?初心者向けにわかりやすく解説

はじめに

データ分析や統計という言葉を耳にすると、まずは「平均値」が思い浮かぶことが多いかもしれません。
しかし、単に平均値だけを見てもデータの傾向を正しくつかめないことがあります。
そこで鍵となる指標が標準偏差です。
標準偏差とは、データのばらつき具合を数値で示すための指標になります。
データが平均値の周囲にどの程度散らばっているのかを測ることができるため、実務のさまざまな場面で利用されることが多いです。

一方で、Pythonを使って標準偏差を計算しようとしたときに「具体的にどのモジュールを使えばいいのか?」や「どうやってコードを書けばいいのか?」など疑問を抱く方は多いのではないでしょうか。
この記事では、Python 標準偏差というキーワードに着目し、その計算方法や実務での活用例をわかりやすくまとめます。

この記事を読むとわかること

  • 標準偏差の基本的な意味
  • Pythonで標準偏差を計算する主な方法
  • 実際の活用シーンと注意点
  • 標準偏差とほかの統計指標(平均や分散)との関係

これらを理解することで、データのばらつきを把握したり、異常値を素早く発見したりといった分析がしやすくなります。
初心者向けの内容ですが、実務での利用シーンを意識してコード例も示していきますので、ぜひ参考にしてみてください。

標準偏差とは何か

標準偏差は、英語で "standard deviation" と呼ばれます。
これは、「データが平均値を中心としてどの程度広がっているか」を示す指標です。
具体的には、データ各値と平均値との差を2乗して足し合わせ、その平均を取ってから平方根を求めたものになります。

分散という指標を耳にしたことがある方もいるかもしれません。
分散は「データと平均の差を2乗して足し合わせたものの平均」のことで、標準偏差はこの分散をさらに平方根にした値です。
「平方根をとる意味がよくわからない」という声もあるかもしれませんが、分散は2乗をベースにしているため、元のデータの単位から離れてしまいます。
そこで平方根を取ることで、元のデータの単位に戻して解釈しやすくする、というのが標準偏差の目的です。

例を挙げると、テストの点数が平均70点で標準偏差が5点だった場合は、だいたいの人が70点付近から±5点くらいの範囲に多く集まる、といった解釈をします。
平均だけ見るのではなく標準偏差までチェックすることで、クラス全体の点数分布がどれほどばらつきがあるかが分かるようになります。

Pythonで標準偏差を計算する方法

Pythonではさまざまな方法で標準偏差を求めることができます。
大きく分けて以下の3つの方法があります。

  1. 標準ライブラリのstatisticsモジュールを使う
  2. NumPyを使う
  3. 自力で計算するロジックを書く

初心者の方であれば、まずは標準ライブラリであるstatisticsモジュールを使ってみるのがわかりやすいでしょう。
一方、データ分析を本格的に行う場合はNumPyを使うケースが多いため、そちらにも触れておくと便利です。
ここでは、それぞれの計算方法とサンプルコードを紹介します。

statisticsモジュールを使った方法

Python標準ライブラリには、statistics というモジュールが用意されています。
その中に標準偏差を計算する関数として stdev() があります。
さらに、母集団を対象にした標準偏差を計算する pstdev() という関数もあります。

下記の例では、サンプルデータを用意し、stdev() を使って標準偏差を計算します。

import statistics

data = [10, 12, 9, 15, 18, 14]

std_value = statistics.stdev(data)
print("標準偏差(標本):", std_value)

pstd_value = statistics.pstdev(data)
print("標準偏差(母集団):", pstd_value)

ここで注意したいのは、標準偏差には「母集団の標準偏差」と「標本の標準偏差」があるという点です。
pstdev() は母集団の標準偏差を計算し、stdev() は標本の標準偏差を計算します。
厳密には、計算の際に使用する分母が異なります。
統計分析を行うときは「自分が扱うデータが母集団全体なのか、あるいは母集団の一部にすぎない標本なのか」を意識しながら使い分ける必要があります。

NumPyを使った方法

大規模なデータ分析や機械学習では、NumPypandas といったライブラリを使う場面が多いです。
NumPyには numpy.std() という関数があり、これを利用して標準偏差を計算できます。

import numpy as np

data = np.array([10, 12, 9, 15, 18, 14])

std_value = np.std(data)
print("NumPyでの標準偏差(母集団):", std_value)

std_sample_value = np.std(data, ddof=1)
print("NumPyでの標準偏差(標本):", std_sample_value)

NumPyの std() 関数はデフォルトでは母集団の標準偏差を計算する形になっています。
標本の標準偏差を求めたい場合は、引数 ddof=1 を指定します。
ddof とは "Delta Degrees of Freedom" の略で、分散や標準偏差を計算するときの自由度を調整するためのオプションです。
わかりやすくいうと、単純に「分母を (n-1) にするか n にするか」の違いだと考えておけばOKです。

手計算の実装例

「標準偏差の定義をより深く理解したい」という方は、あえてロジックを自分で書いてみるのもよいかもしれません。
標準偏差の算出手順は下記のようになります。

  1. データの平均値を求める
  2. 各データから平均値を引き、その差を2乗する
  3. 2乗した値をすべて足し合わせる
  4. 分母をデータ数(またはデータ数-1)で割る
  5. 4.で求めた数値の平方根を求める

以下のサンプルコードでは、標本標準偏差を計算しています。

import math

def calculate_stdev(data):
    n = len(data)
    mean_value = sum(data) / n

    squared_diff_sum = 0
    for x in data:
        squared_diff_sum += (x - mean_value) ** 2

    # 標本標準偏差なので分母は (n - 1)
    variance = squared_diff_sum / (n - 1)
    stdev_value = math.sqrt(variance)
    return stdev_value

data = [10, 12, 9, 15, 18, 14]
std_value = calculate_stdev(data)
print("手計算の標準偏差(標本):", std_value)

このように、標準偏差の計算プロセスを自分で実装すると、数字の意味合いを直感的に理解できます。
ただし、実務では誤差を防ぐためにも、基本的にはstatisticsモジュールやNumPyを利用するほうが現実的でしょう。

標準偏差の実務的な活用シーン

標準偏差はただ数学的に「ばらつき」を示す指標というだけではなく、実務でも役に立ちます。
データの分布を定量的に把握できるため、さまざまな分析に応用できるのです。

データのばらつきを把握する

何らかの製品に対する検査結果や、アンケート結果などを分析するときには、標準偏差を見ることで「どの程度バラバラな数値が出ているか」を把握できます。
平均だけでは見えにくい情報が明確になるため、予想外のばらつきが発生していないかを素早く見つける指標になります。

例えば、工場で作られる製品のサイズが基準値に対してどれくらいバラついているかを評価するときにも、標準偏差が使われます。
標準偏差が小さければ安定した製造が行われている可能性が高いといえますし、標準偏差が大きければばらつきが増えているかもしれません。

異常値検知に活用する

異常値を検知する方法として、平均値と標準偏差を組み合わせる手法がしばしば用いられます。
平均から何標準偏差も離れているデータがあれば、それは「異常」な値とみなされる可能性が高いからです。

たとえば、センサーで取得した温度データがあるとして、一定期間の平均温度が20度で標準偏差が2度だったとします。
その際に、急に30度や0度の値が取得されたら、明らかに「平均から大きく離れた値」と判断できます。
こういった場合は、機器故障や異常事態を疑い、早めに対処するという流れが作りやすくなります。

標準偏差とほかの統計指標

標準偏差は、データの散らばり具合を見るうえで非常に便利な指標ですが、それだけでデータの特徴を完璧に把握できるわけではありません。
ほかにも、平均値中央値最頻値などを組み合わせることで、データの全体像がより明確になります。
さらに、分散は標準偏差と同じくデータのばらつきを表す指標ではありますが、単位が元のデータの2乗になってしまうので、そのままではイメージしにくい場合があります。

分析の目的によっては、平均だけでなく、四分位範囲や箱ひげ図などを組み合わせた手法が使われることもあります。
何を分析したいのかを明確にしておくと、どの統計指標を利用すべきか判断しやすくなります。

データ分析で気をつけたいポイント

標準偏差をはじめとする統計指標は、非常に便利な一方で誤用を防ぐための注意点も存在します。
ここでは、よくある注意点をいくつか挙げてみます。

外れ値の影響

標準偏差は、外れ値(他の値から極端に離れている値)の影響を比較的受けやすい指標です。
もしデータの中に外れ値が含まれていると、標準偏差が実際よりも大きくなったり、平均値がゆがんだりしてしまうことがあります。
外れ値がどうして生じたのか、その原因を確認しながら分析を進めることが大切です。

母集団と標本の違い

前述のように、標準偏差には母集団の標準偏差標本の標準偏差があります。
母集団全体のデータを扱うのか、それとも母集団の一部をサンプリングしたデータを扱うのかで計算式が変わるという点に注意が必要です。
統計分析の目的によって正しい方を選ぶようにしてください。

統計学では、データ全体を「母集団」、その一部を抽出したものを「標本」と呼びます。分散や標準偏差を計算するときは、この母集団か標本かの判断が重要になります。

正規分布を前提とした解釈

「平均±2標準偏差の範囲に約95%のデータが含まれる」という話を聞いたことがある方もいるかもしれません。
これは、データが正規分布(ベルカーブ)になっている前提で成り立つ解釈です。
実際には、データが正規分布でないことも多々あります。
そのため、「標準偏差の値だけを頼りにデータを評価する」のではなく、分布の形状やほかの指標も合わせて見る必要があります。

まとめ

標準偏差は「データのばらつき」を定量的に示す重要な指標で、Pythonを使えば簡単に求めることができます。
標準ライブラリのstatisticsモジュールを使えばすぐに標準偏差を計算でき、NumPyを使えば大規模データにも対応しやすくなります。
さらに手計算の実装を一度経験しておけば、統計計算の仕組みを深く理解できるでしょう。

ただし、標準偏差だけでは見えにくい問題や、外れ値などの扱いには注意が必要です。
母集団と標本を意識しながら、分散や平均、その他の統計指標と組み合わせて分析を進めることで、データの特徴をより的確につかむことができるはずです。
今回ご紹介した方法や考え方を活用しながら、ぜひPythonでのデータ分析に挑戦してみてください。

Pythonをマスターしよう

この記事で学んだPythonの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。