use strict; use warnings; use List::Util qw(sum); my @raw; my $n; while (my $line = <DATA>) { my @cols = split / /, $line; foreach my $j (0..$#cols) { push @{$raw[$j]}, $cols[$j]; } } { local $, = ' '; print process_column($_), "\n" foreach @raw; } sub process_column { my @x = @{$_[0]}; my $n = @x; my $x_tot = sum( @x ); my @x_jack = map { ($x_tot - $_) / ($n - 1) } @x; my $g_jack_av; my $g_jack_err; #foreach my $dg (@x) { foreach my $dg (@x_jack) { #UPDATE $g_jack_av += $dg; $g_jack_err += $dg**2; } $g_jack_av /= $n; $g_jack_err /= $n; $g_jack_err = sqrt(($n-1)*abs($g_jack_err-$g_jack_av**2)); return ($g_jack_av, $g_jack_err); } __DATA__ 1.1 2.1 3.1 4.1 1.2 2.2 3.2 4.2 1.3 2.3 3.3 4.3 1.4 2.4 3.4 4.4
OUTPUT
1.25 0.193649167310372 2.25 0.193649167310365 3.25 0.193649167310338 4.25 0.193649167310365
OUTPUT (with correction)
1.25 0.064549722436785 2.25 0.0645497224367747 3.25 0.0645497224367334 4.25 0.064549722436816
UPDATE: Corrected error reported by AnomalousMonk in Re^2: Calculate jackknife error from of each column of a multi-column file
In reply to Re: Calculate jackknife error from of each column of a multi-column file
by BillKSmith
in thread Calculate jackknife error from of each column of a multi-column file
by pyari_billi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |