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