-2

p値が1E-16より小さい場合、gsl_cdf_tdist_P関数から完全なp値を取得する方法を教えてください。代わりに0を取得しています。

ありがとう、ウッディ

print "t-test p-value = " . ttest(\@n,\@t) . "\n";

sub ttest{

    my ($n,$t) = @_;
    my @n = @$n;
    my @t = @$t;
    my $nn = pdl(@n);
    my $tt = pdl(@t);
    my ($tstats, $df) = t_test( $nn, $tt );
    use PDL::GSL::CDF; 
    my $p_2tail = 2 * (1 - gsl_cdf_tdist_P( $tstats->abs, $df ));
    return $p_2tail;
}

私の入力値は次のとおりです。

my @n = qw (1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2 1 2 4 2 3 1 2 4 2);
my @t = qw (11 12 13 12 13 11 14 11 12 13 12 13 11 14 11 12 13 12 13 11 14);
4

1 に答える 1

0

この問題の簡単な解決策を見つけました。以前gsl_cdf_tdist_Qはp値を取得していました。p 値は のように再マッピングされた p 値ではないため、小数点以下 16 桁に制限されません(1-gsl_cdf_tdist_P)

ウッディ

于 2017-01-09T19:07:30.333 に答える