#!/usr/local/bin/perl use warnings; open IN, "<".$ARGV[0] or die "Cannot open $ARGV[0]: $!"; while (){ next if /^#/; chomp; s/ //; $count++; $y[$count]=$_; # print "$y[$count]\n"; $sumxy+=$count*$y[$count]; $sumx+= $count; $sumy+= $y[$count]; $sumx2 += $count**2; } close IN; $beta=($count*$sumxy-$sumx*$sumy)/($count*$sumx2-$sumx**2); $alfa=$sumy/$count-$beta*$sumx/$count; print "-" x 70,"\n"; print "y = $alfa + $beta x\n"; print "-" x 70,"\n"; $media = $sumy/$count; print "\tD\tF\tAD\tSE\n"; for $i (1 .. $count){ $f = $alfa+$beta*$i; $dd=$y[$i]; $ad=abs($dd-$f); $se=($dd-$f)**2; printf "%i)\t%.02f\t%.2f\t%.2f\t%.2f\n",$i,$dd,$f,$ad,$se; $ra += ($f-$media)**2; $rb += ($dd-$media)**2; $mad+=$ad; $mse+=$se; } $r2 = $ra/$rb; $mad /= $count; $mse /= $count; print "R2=$r2\tMAD=$mad\tMSE=$mse\n"; for $i ($count+1..$count+10){ print "$i)\t\t", $alfa+$beta*$i, "\n"; } __END__