11

bc(または他の標準ユーティリティ)を使用して任意の数の標準偏差を返すことができるトリックはありますか?便宜上、数値が次のようにBash変数に格納されているとします。

myNumbers="0.556
1.456
45.111
7.812
5.001"

したがって、私が探している答えは、次のような形式になります。

standardDeviation="$(echo "${myNumbers}" | <insert magic here>)"
4

5 に答える 5

13

使用:

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
于 2013-02-26T23:22:24.200 に答える
4

または、GNU Octave を使用します (単純な std よりもはるかに多くのことができます):

standardDeviation="$(echo "${myNumbers}" | octave --eval 'disp(std(scanf("%f")))')"
echo $standardDeviation

出力

18.742
于 2015-08-05T06:18:44.790 に答える