標準偏差を計算するプログラム

このページでは「標準偏差を計算するプログラム」を紹介しています。

標準偏差について

標準偏差は以下の式で表現されます。Vxは分散です。

標準偏差算出式

コード

標準偏差を計算するプログラムのコードです。言語はJavaを使用しています。 統計の知識に関しては、『多変量解析法入門 (ライブラリ新数学大系) 』(永田靖)の第2章 統計的方法の基礎知識を参考にしています。

計算クラス(Calculator.java)

計算を行うクラスです。

import java.util.ArrayList;
import java.util.List;

/**
 * 計算クラス
 */
public class Calculator {

	/**
	 * 標準偏差を計算する
	 * @param items 項目リスト
	 * @return 結果
	 */
	public Double standardDeviation(final List<Double> items) {
		return Math.sqrt(variance(items));
	}

	/**
	 * 分散を計算する
	 * @param items 項目リスト
	 * @return 結果
	 */
	public Double variance(final List<Double> items) {
		int n = items.size();
		return sumOfSquares(items) / (n - 1);
	}

	/**
	 * 平方和を計算する
	 * @param items 項目リスト
	 * @return 結果
	 */
	public Double sumOfSquares(final List<Double> items) {
		Double xbar = average(items);
		List<Double> squares = new ArrayList<>();

		for (Double item : items) {
			Double sqare = (item - xbar) * (item - xbar);
			squares.add(sqare);
		}
		return sum(squares);
	}

	/**
	 * 平均値を計算する
	 * @param items 項目リスト
	 * @return 結果
	 */
	public Double average(final List<Double> items) {
		return sum(items) / items.size();
	}

	/**
	 * 総和を計算する
	 * @param items 項目リスト
	 * @return 結果
	 */
	public Double sum(final List<Double> items) {
		Double result = 0.0;

		for (Double item : items) {
			result += item;
		}
		return result;
	}
}

動作確認用クラス

動作確認用のクラスです。

import java.util.ArrayList;
import java.util.List;

/**
 * サンプルのテスト用クラス
 */
public class SampleTest {

	public static void main(String[] args) {
		List<Double> items = prepareTestData();
		Calculator calc = new Calculator();
		Double xbar = calc.average(items);
		Double sx = calc.standardDeviation(items);
		printResult(items, xbar, sx);
	}

	private static List<Double> prepareTestData() {
		List<Double> items = new ArrayList<>();
		items.add(10.0);
		items.add(12.1);
		items.add(11.3);
		items.add(13.4);
		items.add(9.0);
		return items;
	}

	private static void printResult(List<Double> items, Double xbar, Double sx) {
		System.out.print("サンプル\t:");
		for (int i = 0; i < items.size(); i++) {
			if (i == 0) System.out.print(items.get(i));
			else System.out.print("," + items.get(i).toString());
		}
		System.out.print("\n");
		System.out.println("平均\t\t:" + xbar);
		System.out.println("標準偏差\t:" + sx);
	}
}

実行結果

実行すると以下のように表示されます。

サンプル	:10.0,12.1,11.3,13.4,9.0
平均		:11.16
標準偏差	:1.7271363582531636

戻る

Copyright (C) 2016 計算プログラムのコード. All Rights Reserved. Loarding…