Python(Numpy)を使って平均と標準偏差を求める方法

スポンサーリンク

平均と標準偏差は、統計学において重要な指標です。

  • 平均は、すべての項目の合計を項目数で割ったものです。
  • 標準偏差は、一連の値の変動または分散の量の尺度です。


平均と標準偏差を計算するために必要な手順を見てみましょう。

スポンサーリンク

平均値を計算するためのステップ

  1. すべてのエントリの合計を取る。
    1. 総和をエントリ数で割る。

標準偏差を計算する手順

  1. 上述したように平均を計算します。
    1. 各項目の値から平均を引いて、分散を計算します。次に、それらの結果の値をそれぞれ二乗し、その結果を合計します。そして、その結果をデータポイントの数から1を引いた数で割る。これで分散が求まる。
    1. 上記で求めた分散の平方根から、標準偏差を求める。

Pythonで平均と標準偏差を求める複数のメソッド

平均と標準偏差を計算するPythonのコードを書いてみましょう。

Pythonで平均と標準偏差を計算するための複数のオプションが得られます。

組み込みの統計モジュールを見てから、独自の実装を書いてみましょう。

1. 統計モジュールの使用

このモジュールは、平均や標準偏差を直接計算するオプションを提供します。

まず、このモジュールをインポートすることから始めましょう。

import statistics

ダミーデータの配列を宣言します。

data = [7,5,4,9,12,45]

サンプルデータの平均を計算するために、次のようにします。

statistics.mean(data)

この文はデータの平均を返します。

出力に平均を表示するには、次のようにします。

print("Mean of the sample is % s " %(statistics.mean(data)))

という出力が得られます。

Mean of the sample is 13.666666666666666

IDEを使ってコーディングしている場合は、この文にカーソルを合わせると、statistics.mean()の詳細な情報を得ることができます。

print("Standard Deviation of the sample is % s "%(statistics.stdev(data)))

または、ここのドキュメントを読むこともできます。

サンプルデータの標準偏差を計算するには、次のようにします。

Standard Deviation of the sample is 15.61623087261029

という出力が得られます。

import statistics
import numpy as np
 
data = np.array([7,5,4,9,12,45])
 
print("Standard Deviation of the sample is % s "% (statistics.stdev(data)))
print("Mean of the sample is % s " % (statistics.mean(data)))

statistics.stdev()の簡単なドキュメントを以下に示します。

def mean(data):
  n = len(data)
  mean = sum(data) / n
  return mean

標準偏差と平均を求める完全なコード

上記のスニペットに対する完全なコードは以下の通りです。

def variance(data):
   
  n = len(data)
   
  mean = sum(data) / n
   
  deviations = [(x - mean) ** 2 for x in data]
    
  variance = sum(deviations) / n
  return variance

2. 自分で関数を書いてみよう

平均を計算する関数を書いてみましょう。

def stdev(data):
  import math
  var = variance(data)
  std_dev = math.sqrt(var)
  return std_dev

この関数は平均を計算します。

次に、標準偏差を計算する関数を書いてみましょう。

これは少し難しいので、順を追って説明しましょう。

標準偏差は分散の平方根です。

ですから、2つの関数を書けばいいのです。

  • 1つは分散を計算する関数
  • 1つは分散を計算する関数、もう1つは分散の平方根を計算する関数です。

分散を計算する関数は次のようになります。

import numpy as np #for declaring an array
 
def mean(data):
  n = len(data)
  mean = sum(data) / n
  return mean
 
def variance(data):
  n = len(data)
  mean = sum(data) / n
  deviations = [(x - mean) ** 2 for x in data]
  variance = sum(deviations) / n
  return variance
 
def stdev(data):
  import math
  var = variance(data)
  std_dev = math.sqrt(var)
  return std_dev
 
data = np.array([7,5,4,9,12,45])
 
print("Standard Deviation of the sample is % s "% (stdev(data)))
print("Mean of the sample is % s " % (mean(data)))

チュートリアルの冒頭で説明した手順を参考に、コードを理解してください。

それでは、分散の平方根を計算する関数を書いてみましょう。

Mean

コンプリートコード

完全なコードは次のとおりです。

Stdev

まとめ

このチュートリアルは、Pythonで平均と標準偏差を計算することについてでした。

楽しく学んでいただけたら幸いです。

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