横浜の街にトンボが下りて来た
まだ、クーラーが必要な暑さが続いているけど、芝の広場でトンボが集まっているのが見れた。もうすぐ10月だ。
Pearsonの積率相関を求める
sub rxy{ #Pearsonの積率相関を求める #Sxy = 1/n *��(i=1→n){(xi -avaerage x)(yi -avaerage y)} # = 1/n *��(i=1→n){xi*yi -(aveverage x)yi -(avaerage y)xi + (avaerage x)*(avaerage y)} # = 1/n *{sum_xy -(aveverage x)sum_y - (avaerage y)sum_x +n*(avaerage x)*(avaerage y) # = 1/n *{sum_xy -sum_x * sum_y /n -sum_y *sum_x / n + sum_x *sum_y *n /n**2} # = sum_xy /n -sum_x *sum_y /n**2 #Sxx = 1/n*��(i=1→n){(xi -avaerage x)**2} # = 1/n*��(i=1→n){xi**2 - 2 *(avaerage x) *xi + (avaerage x)**2} # = 1/n*{sum_xx - 2 *(avaerage x) *sum_x + n *(avaerage x)**2} # = 1/n*{sum_xx - 2 * sum_x **2 / n + sum_x**2/n} # = sum_xx /n - sum_x**2 /n**2 #rxy = Sxy /sqrt(Sxx) /sqrt(Syy) # = ((sum_xy /n) - (sum_x *sum_y /n**2)) /sqrt(sum_xx /n - sum_x**2 /n**2) /sqrt(sum_yy /n - sum_y**2 /n**2) # = n**2 *(((sum_xy /n) - (sum_x *sum_y /n**2))) /sqrt(n**2 *(sum_xx /n - sum_x**2 /n**2)) /sqrt(n**2 *(sum_yy /n - sum_y**2 /n**2)) # = (sum_xy *n - sum_x *sum_y) /sqrt(sum_xx *n -sum_x**2) / sqrt(sum_yy *n - sum_y**2) my ($hle_x, $hle_y) =@_; my @hle_x = split(/\t/, $hle_x); my @hle_y = split(/\t/, $hle_y); my $n = 1+$#hle_x; my $sum_x = 0; my $sum_xx = 0; my $sum_yy = 0; my $sum_y = 0; my $sum_xy = 0; for (my $i =0; $i <$n; $i++){ $sum_x += $hle_x[$i]; $sum_xx += $hle_x[$i]**2; $sum_y += $hle_y[$i]; $sum_yy += $hle_y[$i]**2; $sum_xy += $hle_x[$i] *$hle_y[$i]; } my $rxy = "-"; if($sum_xx *$n -$sum_x**2 <= 0 or $sum_yy *$n - $sum_y**2 <= 0){ }else{ $rxy = ($sum_xy *$n - $sum_x *$sum_y) /sqrt($sum_xx *$n -$sum_x**2) / sqrt($sum_yy *$n - $sum_y**2); #今回はr2乗の方が何かと便利なので #$rxy = ($sum_xy *$n - $sum_x *$sum_y)**2 /($sum_xx *$n -$sum_x**2) / ($sum_yy *$n - $sum_y**2); } return $rxy; }