bc(または他の標準ユーティリティ)を使用して任意の数の標準偏差を返すことができるトリックはありますか?便宜上、数値が次のようにBash変数に格納されているとします。
myNumbers="0.556
1.456
45.111
7.812
5.001"
したがって、私が探している答えは、次のような形式になります。
standardDeviation="$(echo "${myNumbers}" | <insert magic here>)"
bc(または他の標準ユーティリティ)を使用して任意の数の標準偏差を返すことができるトリックはありますか?便宜上、数値が次のようにBash変数に格納されているとします。
myNumbers="0.556
1.456
45.111
7.812
5.001"
したがって、私が探している答えは、次のような形式になります。
standardDeviation="$(echo "${myNumbers}" | <insert magic here>)"
awk の使用:
standardDeviation=$(
echo "$myNumbers" |
awk '{sum+=$1; sumsq+=$1*$1}END{print sqrt(sumsq/NR - (sum/NR)**2)}'
)
echo $standardDeviation
パールの使用:
#!/usr/bin/env perl
use strict; use warnings;
use Math::NumberCruncher;
my @data = qw/
0.556
1.456
45.111
7.812
5.001
/;
print Math::NumberCruncher::StandardDeviation(\@data);
16.7631
または、GNU Octave を使用します (単純な std よりもはるかに多くのことができます):
standardDeviation="$(echo "${myNumbers}" | octave --eval 'disp(std(scanf("%f")))')"
echo $standardDeviation
出力
18.742