【Python入門】標準偏差|データのバラつきを確認する

標準偏差|データのバラつきを確認する_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

データのバラつき(散らばり具合)を表す「標準偏差」は、Pythonで容易に出力可能です。

本記事では、そんなPython基礎となる標準偏差について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonによる標準偏差の計算方法を学びたい人
levtech-ad

標準偏差

標準偏差(standard deviation)は、下式の通り、データ分散の平方根で算出されます。

分散よりも標準偏差の方が、データのバラつき(散らばり具合)が把握しやすいです。

\(\sigma=\sqrt{\dfrac{1}{n}\sum ^{n}_{i=1}\left( x_{i}-\mu \right) ^{2}}\)

実装(分散と標準偏差)

まずは、データ分散から標準偏差まで求める関数の実装例を、以下にご紹介します。

#input
def cal(data):
    S = sum(data)
    N = len(data)
    M = S/N
    d = []
    for i in data:
        d.append(i-M)
    D = []
    for j in d:
        D.append(j**2)
    SD = sum(D)
    V = SD/len(data)
    std = V**0.5
    return std

実装した関数にデータを入力して、分散を出力してみます。

#input
data = [1,2,3,4,5]
std = cal(data)
print(data,"の標準偏差:{}".format(std))
#output
[1, 2, 3, 4, 5] の標準偏差:1.4142135623730951

statistics.pstdev()

statisticsモジュールのstatistics.pstdev()を使用すると、母標準偏差(母分散の平方根)を計算できます。

以下に例をご紹介します。

#input
from statistics import pstdev as std
data = [11,22,33,44,55]
std = std(data)
print(data,"の母標準偏差:{}".format(std))
#output
[11, 22, 33, 44, 55] の母標準偏差:15.556349186104045

statistics.stdev()

statisticsモジュールのstatistics.stdev()を使用すると、標本標準偏差を計算できます。

標本標準偏差とは、下式に示されるように、\(n\)でなく\(n-1\)で除した不偏分散の平方根のことです。

\(\sigma=\sqrt{\dfrac{1}{n-1}\sum ^{n}_{i=1}\left( x_{i}-\mu \right) ^{2}}\)

statistics.variance()の使用例を、以下にご紹介します。

#input
from statistics import stdev as std
data = [11,22,33,44,55]
std = std(data)
print(data,"の標本標準偏差:{}".format(std))
#output
[11, 22, 33, 44, 55] の標本標準偏差:17.392527130926087

numpy.std()

NumPyのnumpy.std()を使用すると、配列データの標準偏差を計算できます。

使用例を以下にご紹介します。

#input
import numpy as np
data = np.array([[111,222,333],
                 [444,555,666],
                 [777,888,999]])
std1 = np.std(data)
std2 = np.std(data,axis=0)
std3 = np.std(data,axis=1)

np.set_printoptions(precision=1)

print("全データの標準偏差:{:.1f}".format(std1))
print("列データの標準偏差:{}".format(std2))
print("行データの標準偏差:{}".format(std3))
#output
全データの標準偏差:286.6
列データの標準偏差:[271.9 271.9 271.9]
行データの標準偏差:[90.6 90.6 90.6]

numpy.nanstd()

NumPyのnumpy.nanstd()は、上でご紹介したnumpy.std()に加えて、nanデータを除外して計算できる関数です。

使用例を以下にご紹介します。

#input
import numpy as np
data = np.array([[111    ,np.nan   ,333],
                 [np.nan ,555      ,666],
                 [777    ,888   ,np.nan]])
std1 = np.nanstd(data)
std2 = np.nanstd(data,axis=0)
std3 = np.nanstd(data,axis=1)

np.set_printoptions(precision=1)

print("全データの標準偏差:{:.1f}".format(std1))
print("列データの標準偏差:{}".format(std2))
print("行データの標準偏差:{}".format(std3))
#output
全データの標準偏差:264.2
列データの標準偏差:[333.  166.5 166.5]
行データの標準偏差:[111.   55.5  55.5]

まとめ

この記事では、Python基礎となる標準偏差について、ご説明しました。

本記事を参考に、ぜひ色々とトライしてみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました