关于 gsl_cdf_tdist_P 来自 PDL::GSL::CDF (Perl)
About gsl_cdf_tdist_P from PDL::GSL::CDF (Perl)
你能告诉我当 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);
我找到了解决这个问题的简单方法。我使用 gsl_cdf_tdist_Q
来获取 p 值。 p 值不限于小数点后 16 位,因为它们不是像 (1-gsl_cdf_tdist_P)
.
那样重新映射的 p 值
伍迪
你能告诉我当 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);
我找到了解决这个问题的简单方法。我使用 gsl_cdf_tdist_Q
来获取 p 值。 p 值不限于小数点后 16 位,因为它们不是像 (1-gsl_cdf_tdist_P)
.
伍迪