#!/usr/local/bin/perl

use warnings;

open IN, "<".$ARGV[0] or die "Cannot open $ARGV[0]: $!";
while (<IN>){
	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;

ask:
print "Seasionality: ";
chomp ($sea = <STDIN>);
if ($sea<=0 || $sea+0 ne $sea || $sea>$count/2) {
    goto ask;
}

# $media = $sumy / $count;
for $i (1 .. $count){
    $s++;
    if ($s>$sea) { $s = 1; }
    $c[$s]++;
#    $season[$s] += $y[$i]/$media;
    $season[$s] += $y[$i]/($alfa+$beta*$i);
#    $season[$s] += $y[$i]-($alfa+$beta*$i);
}
for $s (1 .. $sea){
    $season[$s] /= $c[$s]; 
}





print "-" x 70,"\n";
print "y = $alfa + $beta x\n";
print "-" x 70,"\n";

print "\tD\tF\tAD\tSE\n";
$s=0;
for $i (1 .. $count){
    $s++;
    if ($s>$sea) { $s=1; }
	$f = ($alfa+$beta*$i) * $season[$s];
    $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;
	$mad+=$ad;
	$mse+=$se;
}
$mad /= $count;
$mse /= $count;
print "\t\tMAD=$mad\tMSE=$mse\n";
for $i ($count+1..$count+10){
        $s++;
    if ($s>$sea) { $s=1; }
	print "$i)\t\t", ($alfa+$beta*$i)*$season[$s] , "\n";
}


__END__	
