付録1.プログラム

#!/usr/bin/perl
use PDL;
use PDL::Matrix;
use PDL::Slatec;
use Time::Local;
use Pstatlib::Percentpoint;
%month=('Jan'=>0,'Feb'=>1,'Mar'=>2,'Apr'=>3,'May'=>4,'Jun'=>5,'Jul'=>6,'Aug'=>7,'Sep'=>8,'Oct'=>9,'Nov'=>10,'Dec'=>11);
$year=2002;
$mon =1;
$mday=1;
$hours=0;
$min  =0;
$sec  =0;
$gantan = timelocal($sec, $min, $hours, $mday, $mon-1, $year);
$zenkai=0;
@z=<>;
for(@z){
    if(($a,$b,$c,$d)=/^\S+\s+\S+\s+\S+\s+\S(..)\S(...)\S(....)\S+\s+\S+\s+"[^"]*"\s+(\S+).*/){
$year1=$c;
$e=$month{$b};
$mon1 =$e;
$mday1=$a;
$hours1=0;
$min1  =0;
$sec1  =0;
$time = timelocal($sec1, $min1, $hours1, $mday1, $mon1, $year1)-$gantan;

      if(($time ne $zenkai)&&($zenkai>0)){
	print $zenkai," ",$gyou," ",$kaisuu1,"\n";
        $zenkai=~/^(\S+)/;
	$hizuke=$1;
  	$hinichi+=$hizuke;
	$kaisuu+=$kaisuu1;
	$hinichi2+=$hizuke*$hizuke;
	$kaisuu2+=$kaisuu1*$kaisuu1;
	$hikai+=$hizuke*$kaisuu1;
	$kensuu++;

 	push @x,"$hizuke $kaisuu1";

	$gyou=0;
	$kaisuu1=0;
	}
    
    if($d=~/^\S*404/){
	$kaisuu1++;
    }
    $gyou++;
    $zenkai=$time;
}
}
print $zenkai," ",$gyou," ",$kaisuu1,"\n";
$zenkai=~/^(\S+)/;
$hizuke=$1;
$hinichi+=$hizuke;
$kaisuu+=$kaisuu1;
$hinichi2+=$hizuke*$hizuke;
$kaisuu2+=$kaisuu1*$kaisuu1;
$hikai+=$hizuke*$kaisuu1;
$kensuu++;
push @x,"$hizuke $kaisuu1";
$m=mpdl[[$hinichi2,$hinichi],[$hinichi,1]];
print $m;
$v=vpdl[$hikai,$kaisuu];
print $v;
$ans=vzeroes(2);
$inv=matinv($m);
matmult($inv,$v,$ans);
print $ans;
$tbunpu=pxt($kensuu-1,0.05);
print $tbunpu,"\n";
$xxxx=$ans->at(0,0);
$yyyy=$ans->at(1,0);
for(@x){
    ($hizuke,$kaisuu1)=split;

    if($hizuke>0){
	$sa=$kaisuu1-$hizuke*$xxxx-$yyyy;
        $sen+=$sa;
	$sen2+=$sa*$sa;
        $zenkai=$time;
    }
}
print $sen,"\n";
$hei=$sen/$kensuu;
print $hei,"\n";
$bun=$sen2/($kensuu-1)-2*$hei*$sen/($kensuu-1)+$hei*$hei*$kensuu/($kensuu-1);
print $bun,"\n";
$hyou=sqrt($bun);
print $hyou,"\n";
$kagen=$xxxx*($zenkai+86400)+$yyyy-$tbunpu*$hyou;
$jougen=$xxxx*($zenkai+86400)+$yyyy+$tbunpu*$hyou;
print $kagen,"\n";
print $jougen,"\n";
if($hizuke=$zenkai+3600*24){
    if(($kaisuu1<$kagen)&&(kaisuu1>0)){
	print"下限を下回りました","\n";
    }
    if(($kaisuu1>$jougen)&&(kaisuu1>0)){
	print"上限を上回りました","\n";
    }
}