Welch's t-test: Difference between revisions

Content added Content deleted
(Added Kotlin)
m (→‎{{header|Perl 6}}: minor simplifications and whitespace tweaks)
Line 509:
return 1 if @A <= 1 or @B <= 1;
 
my $a-mean = @A.sum / @A.elems;
my $b-mean = @B.sum / @B.elems;
my $a-variance = @A.map( { ($a-mean - $_)² } ).sum / (@A - 1);
my $b-variance = @B.map( { ($b-mean - $_)² } ).sum / (@B - 1);
return 1 unless $a-variance && $b-variance;
 
my \Welsh-𝒕-statistic = ($a-mean - $b-mean)/($a-variance/+@A + $b-variance/+@B).sqrt;
 
my $DoF = ($a-variance /+ @A + $b-variance /+ @B)² /
(($a-variance² / (+@A³ - @A²)) *+ ($b-variance² / (+@A - 1@B²))) +;
($b-variance² / (+@B² * (+@B - 1))));
 
my $sa = $DoF / 2 - 1;
my $x = $DoF / (Welsh-𝒕-statistic² + $DoF);
my $N = 65355;
my $h = $x / $N;
my ( $sum1, $sum2 );
 
for ^$N »*» $h -> $i {
$sum1 += (($i + $h / 2) ** $sa ) / ((1 - ($i + $h / 2)).sqrt);
$sum2 += $i ** $sa / (1 - $i).sqrt;
}