既知の平均を使用した標準偏差の計算

既知の平均を使用した標準偏差の計算

2つの列ファイルがたくさんあります。最初の列には変数の数値が含まれ、2番目の列にはこれらの数値の「実際の」値が含まれています。
つまり

file 1
41619.442 41586.441
41474.2539 41586.441
41587.539062 41586.441
41623.996094 41586.441

列2に基づいて列1の標準偏差を計算する方法は?共通事項を修正してみました。

awk '{delta = $1 - avg; avg += delta / NR; mean2 += delta * ($1 - avg); } END { print sqrt(mean2 / NR); }'

得るために

awk '{a=$2}{delta = $1 - a; a += delta / NR; a*2 += delta * ($1 - a); } END { print sqrt(a*2 / NR); }' 11978.08984 >> test1.txt

しかし、良い結果はありません。

答え1

まず、例の列2サンプルファイルのデータを表します。これが平均が正しい場合本物分布の標準偏差は次のとおりです。

$ awk '{ssq+=($1 - $2)**2} END { print sqrt(ssq / NR); }' file1a
61.4138

ここで、変数はssq実際の平均との偏差二乗の和です。

上記のプログラムは標準偏差式を実装しています。

ここに画像の説明を入力してください。

どこでμ本物意味は。

用語

私が言ったこと本物平均は時々呼ばれる。人口平均は、理論的には、母集団の一部のサンプルではなく、母集団全体が存在する場合に計算できる平均を意味します。

答え2

このような質問がある場合は、以下を見てくださいdatamash

datamash -W pstdev 1 < file1

他の多くの機能の中で、datamashに

  • pstdev 1=列1の母集団標準偏差
  • sstdev 1=列1のサンプル標準偏差

関連情報