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

C++で平均の標準誤差を計算するプログラムの実装方法

平均の標準誤差とは

平均の標準誤差(Standard Error of Mean)とは、標本平均が母平均からどれほど散らばっているかを推定するための統計量です。標本調査の結果から母集団全体の平均を推定する際に、その信頼性を評価する指標として重要な役割を果たします。また、平均値のおおよその信頼区間を求める際にも利用されます。

標準誤差は、次の式で求められます。

標準誤差 = 標準偏差 ÷ √(標本サイズ)

標本サイズが大きくなるほど標準誤差は小さくなり、標本平均は母平均に近づいていきます。

プログラムの計算手順

このプログラムでは、以下の3つのステップで標準誤差を計算します。

1. 配列内のデータから標本平均を計算する
2. 各データと平均の差の二乗和から、標本標準偏差を計算する(不偏分散を使用)
3. 標準偏差を標本サイズの平方根で割り、標準誤差を求める

サンプルコード

#include <bits/stdc++.h>
using namespace std;
// 標本平均を計算する関数
float calc_mean(float arr[], int n){
    float sum = 0;
    for (int i = 0; i < n; i++)
        sum = sum + arr[i];
    return sum / n;
}
// 標準偏差を計算する関数
float calc_deviation(float arr[], int n){
    float sum = 0;
    for (int i = 0; i < n; i++)
        sum = sum + (arr[i] - calc_mean(arr, n)) * (arr[i] - calc_mean(arr, n));
    return sqrt(sum / (n - 1));
}
// 標準誤差を計算する関数
float calc_error(float arr[], int n){
    return calc_deviation(arr, n) / sqrt(n);
}
int main(){
    float arr[] = { 78.53, 79.62, 80.25, 81.05, 83.21, 83.46 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << calc_error(arr, n) << endl;
    return 0;
}

実行結果

0.8063

コードの解説

calc_mean関数:配列内の全要素の合計を求め、要素数で割ることで標本平均を計算します。

calc_deviation関数:各データと標本平均の差を二乗し、その合計を(n - 1)で割ることで不偏分散を求め、その平方根として標本標準偏差を計算します。

calc_error関数:標準偏差を標本サイズnの平方根で割ることで、平均の標準誤差を求めます。

この例では、6つのデータ(78.53、79.62、80.25、81.05、83.21、83.46)から標準誤差を計算した結果、約0.8063という値が得られました。

  1. C++でAVL木(AVLツリー)を実装する方法:回転操作とサンプルコードを徹底解説

    AVL木とは AVL木(AVL Tree)は、自己平衡型二分探索木(Self-balancing Binary Search Tree)の一種です。すべてのノードにおいて、左部分木と右部分木の高さの差が「1以下」に保たれるという性質を持っています。この平衡条件により、木が片側に偏って成長することを防ぎ、検索・挿入・削除といった操作を常に効率的(O(log n))に行うことができます。 木の回転(Tree Rotation)とは 木の回転とは、要素の順序(ソート順)を崩すことなく木の構造を変更する操作のことです。あるノードを一段上へ移動させ、別のノードを一段下へ移動させることで実現されます。 回

  2. 【C++】STLのset_symmetric_differenceで集合の対称差を実装するプログラム

    本記事では、C++の標準テンプレートライブラリ(STL)に含まれる set_symmetric_difference 関数を使って、2つの集合の「対称差」を求めるプログラムを紹介します。 対称差とは、2つの集合のうち「どちらか一方にだけ存在し、両方には存在しない」要素から構成される集合のことです。 主な集合演算の種類 和集合(Union):どちらか一方に含まれるすべての要素 積集合(Intersection):両方に共通して含まれる要素 対称差(Symmetric Difference / 排他的論理和 XOR):片方にのみ含まれる要素 差集合(Difference / 減算):一方から他方