C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で標準偏差を計算するプログラムの作り方

標準偏差(Standard Deviation)とは、データの中の数値が平均値からどの程度ばらついているかを示す統計量です。分散の平方根として定義され、分散は「各データと平均との差を二乗した値の平均」を意味します。標準偏差が小さいほどデータは平均付近に集中し、大きいほど広く散らばっていることを表します。

ここでは、C++を使って標準偏差を計算するプログラムを紹介します。

サンプルコード

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    float val[5] = {12.5, 7.0, 10.0, 7.8, 15.5};
    float sum = 0.0, mean, variance = 0.0, stdDeviation;
    int i;
    for(i = 0; i < 5; ++i)
        sum += val[i];
    mean = sum/5;
    for(i = 0; i < 5; ++i)
        variance += pow(val[i] - mean, 2);
    variance = variance/5;
    stdDeviation = sqrt(variance);
    cout<<"The data values are: ";
    for(i = 0; i < 5; ++i)
        cout<< val[i] <<" ";
    cout<<endl;
    cout<<"The standard deviation of these data values is "<<stdDeviation;
}

実行結果

The data values are: 12.5 7 10 7.8 15.5
The standard deviation of these data values is 3.1232

このプログラムの処理の流れを、順番に見ていきましょう。

1. 合計と平均の計算

まず、forループを使ってすべてのデータ値の合計を求めます。その後、合計を要素数(5)で割ることで平均値を算出しています。

for(i = 0; i < 5; ++i)
    sum += val[i];
mean = sum/5;

2. 分散の計算

次に、各データと平均値との差を二乗し、それらをすべて足し合わせてから要素数で割ることで、分散を求めています。

for(i = 0; i < 5; ++i)
    variance += pow(val[i] - mean, 2);
variance = variance/5;

3. 標準偏差の計算と結果の出力

最後に、cmathヘッダーに含まれるsqrt関数を使って分散の平方根を取り、標準偏差を求めます。その後、すべてのデータ値と計算結果である標準偏差を出力しています。

stdDeviation = sqrt(variance);
cout<<"The data values are: ";
for(i = 0; i < 5; ++i)
    cout<< val[i] <<" ";
cout<<endl;
cout<<"The standard deviation of these data values is "<<stdDeviation;

補足:母標準偏差と標本標準偏差の違い

上記のプログラムで計算しているのは「母標準偏差」であり、扱うデータが母集団全体である場合に用いるものです。一方、データが母集団から抽出された一部の標本である場合には「標本標準偏差」を使用します。標本標準偏差を求めるには、分散の計算時に要素数ではなく「要素数 - 1」で割るように変更してください。今回の例であれば、variance = variance/4; とします。

  1. グラフのエッジカバー(辺被覆)を求めるC++プログラムの解説

    グラフの頂点数 n が与えられたとき、そのグラフのエッジカバー(辺被覆)を計算するのが本記事のテーマです。エッジカバーとは、グラフのすべての頂点を覆うために必要な最小の辺の数を見つける問題を指します。 エッジカバーとは 例として、頂点数 n = 5 のグラフを考えてみましょう。グラフは次のようになります。 このグラフのエッジカバーは 3 です。つまり、3本の辺を選ぶことで、5つの頂点すべてを覆うことができます。 次に、頂点数 n = 8 の場合を見てみましょう。 この場合のエッジカバーは 4 になります。 入出力例 入力: n = 5 出力: 3 入力: n = 8 出力: 4 計算の

  2. C++で正三角形の外接円の面積を計算するプログラム

    正三角形とは、3つの辺の長さがすべて等しく、内角がすべて60度である三角形のことです。正多角形の一種であるため、「正三角形(regular triangle)」とも呼ばれています。正三角形の性質3辺の長さがすべて等しいすべての内角が同じ角度(60度)である外接円とは多角形の外接円(circumcircle)とは、その多角形のすべての頂点を通る円のことです。この円の半径は「外接半径(circumradius)」と呼ばれ、円の中心は「外心(circumcenter)」と呼ばれます。外心は三角形の内部にある場合もあれば、外部にある場合もあります。なお、正三角形の場合、外接円の半径は「a/√3」(aは