首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速perl t-test函数

快速perl t-test函数
EN

Stack Overflow用户
提问于 2012-01-22 19:39:16
回答 3查看 1.7K关注 0票数 1

我正在使用perl+R分析一个大型样本数据集。对于每两个样本,我计算t-test p值。目前,我使用statistics::R模块将值从perl导出到R,然后使用t.test函数。然而,这个过程非常慢。我想知道是否有人知道perl函数将以更有效的方式执行相同的过程。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-01-22 20:46:47

数据量,数据集对的数量,甚至你写的代码可能会帮助我们找出为什么你的代码很慢。例如,将许多小数据集发送到R会很慢,但只需一次发送所有数据,就可以加快速度。

对于纯Perl语言解决方案,首先需要计算测试统计量(这很容易,例如,在Statistics::TTest中已经完成),然后将其转换为p值(您需要类似于R的qt函数,但我不确定它在Perl语言中是否可用--您可以在最后将T值发送到R,以将它们转换为p值)。

票数 2
EN

Stack Overflow用户

发布于 2012-01-23 04:04:34

您还可以尝试PDL,特别是PDL::Stats

票数 0
EN

Stack Overflow用户

发布于 2012-11-29 04:57:23

Statistics::TTest模块给出了一个p值。

代码语言:javascript
复制
use Statistics::TTest;

my @r1 = map { rand(10)   } 1..32;
my @r2 = map { rand(10)-2 } 1..32;

my $ttest = new Statistics::TTest;  
$ttest->load_data(\@r1,\@r2);  
say "p-value = prob > |T| = ", $ttest->{t_prob};

稍微玩玩一下,我发现这给你的p值比你从R得到的略低,R显然是在做一些减少自由度的事情,但我的统计学知识不足以解释它在做什么或为什么。(在上面的示例中,差异约为1%。如果使用320个浮点数而不是32个浮点数的样本,则差异为50%甚至更多,但这是1e-12和1.5e-12之间的差异。)如果你需要精确的p值,你需要小心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8960767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档