Pythonで「標準偏差を求める5つの方法」を詳しく解説!

PRについて
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Pythonで「標準偏差を求める5つの方法」を詳しく解説! 統計学
Pythonで「標準偏差を求める5つの方法」を詳しく解説!
統計学入門

このページでは統計の基本となる標準偏差について全部で5つの求め方を紹介します。

ごまお
ごまお

今日はPythonを使って標準偏差を求める方法を勉強していきましょう!
標準偏差をPythonで求める方法はいろいろなモジュールを使ってできますよ。

ごまこ
ごまこ

はい!頑張って理解していきますね!

自分でコードの入力も行えば理解も進みそうですね!

標準偏差は分散と並んでデータのばらつき具合を知る上で重要な指標です。

この記事を参考に扱う情報やデータの型に合わせて、柔軟に標準偏差を求めることができるようになっていただければと思います。

また、標準偏差について統計的な意味を知りたい方はこちらを参照してください。

標準偏差を求める5つの方法

Pythonで標準偏差を求める場合、5つの方法があります。

  • 定義通りにsum関数やlen関数を使用して求める方法
  • statistics.pstdev関数を使用して求める方法
  • numpy.std関数を使用して求める方法
  • scipy.stats.tstd関数を使用して求める方法
  • pandas.DataFrame.std関数を使用して求める方法

それぞれ順番に説明していきます。

定義通りにsum関数やlen関数を使用して求める

分散の求め方通りにPython標準の関数のみを使って計算します。

sum関数,len関数を用いることで、平均値を求めることが出来ます。

この値を利用することで、for文内で各データと平均の差を合計したもの(=偏差平方和)を求めます。

この偏差平方和をデータの数で割ると分散を求められます。

したがって、この分散の平方根(√)を求めることで標準偏差を求めます。

import math

score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]

#scoreの平均を求める
mean_score = sum(score)/len(score)

#偏差平方和を求める
dev_score = 0
for n in score:
    dev_score += (n -mean_score)**2
#分散は偏差平方和/データの数
var_score = dev_score/len(score)
#標準偏差は分散の平方根(√)を求める
std_score = math.sqrt(var_score)

print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。

len関数, sum関数の使い方については以下も参照ください!

statistics.pstdev関数を使用して求める方法

statisticsモジュールをインポートし、statistics.pstdev関数を使って求めます。

import statistics #statisticsモジュールをインポート

score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]

# 標準偏差を計算
std_score = statistics.pstdev(score)

print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.2721490452713455 です。

numpy.std関数を使用して求める方法

numpyモジュールをインポートし、numpy.std関数を使って求めます。

import numpy as np #numpyモジュールをインポート

score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]

# 標準偏差を計算
std_score = np.std(score)
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。

scipy.stats.tstd関数を使用して求める方法

scipyモジュールをインポートし、scipy.stats.tstd関数を使って求めます。

from scipy import stats

score = [48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51]

# 標準偏差を計算
std_score = stats.tstd(score, ddof=0)

print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。

pandas.DataFrame.std関数を使用して求める

pandasモジュールをインポートし、pandasのデータ形式DataFrameのstd関数を使って求めます。

import pandas as pd  #pandasモジュールをインポート

#Datafreme型のデータを準備
score = pd.DataFrame([48, 52, 46, 48, 53, 58, 52, 48, 51, 63, 48, 52, 43, 41, 51])

#pandas.DataFrame.var関数を用いる。
#score[n]で標準偏差を求めたい列を指定。
std_score = score[0].std(ddof=0)

#md[0]を指定することで標準偏差のみ取得、指定しない場合はDataFreme型で返される
print("標準偏差は", std_score, "です。")
#実行結果 : 標準偏差は 5.272149045271345 です。
ごまこ
ごまこ

できましたよ!
標準偏差を求めるだけでもこんなにたくさんあるんですね。

ごまお
ごまお

たくさんの方法があるから目的に合わせて使い分けられるのが良いですね!

最後のpandas.DataFrame.std()はたくさんのデータを分析したいときに行や列単位で標準偏差を求められるから便利です!

まとめ

標準偏差を求める方法も用いるモジュールによって様々です。

自身が分析したいデータに合わせて使い分けることができれば、様々な状況で標準偏差を求めることができるようになると思います。

また最後に紹介したpandas.DataFrame.std()を用いた方法は表形式のファイルやデータベースから引き出したデータに対して用いる際にはよく使いますので、実行イメージを覚えておいていただけたらと思います。

一通り実行してみて、「標準偏差のことがよくわからないな」と感じた方は以下の記事も参考になると思います!

このサイトの記事一覧へは以下へアクセス!

統計検定 2級
統計学
ゴマフリーダムをフォローする

コメント

達人に学ぶDB設計 徹底指南書

最短コースでわかる ディープラーニングの数学

あたらしい機械学習の教科書 第3版

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

タイトルとURLをコピーしました