Chinaunix

标题: 求多重校正的perl脚本 [打印本页]

作者: yang7473453    时间: 2014-02-28 20:34
标题: 求多重校正的perl脚本
FDR错误控制法是Benjamini于1995年提出一种方法,通过控制FDR(FalseDiscovery Rate)来决定P值的域值.假设你挑选了R个差异表达的基因,其中有S个是真正有差异表达的,另外有V个其实是没有差异表达的,是假阳性的。实践中希望错误比例Q=V/R平均而言不能超过某个预先设定的值(比如0.05),在统计学上,这也就等价于控制FDR不能超过5%.
对所有候选基因的p值进行从小到大排序,则若想控制fdr不能超过q,则只需找到最大的正整数i,使得p(i)<=(i*q)/m.然后,挑选对应p(1),p(2),...,p(i)的基因做为差异表达基因,这样就能从统计学上保证fdr不超过q。因此,FDR的计算公式如下:
q-value(i)=p(i)*length(p)/rank(p)


表示看完这些我还是不会写perl,不知道有没有大神会写,帮写一个吧,急求!!!!!
作者: yinyuemi    时间: 2014-02-28 21:28
回复 1# yang7473453

大概是这个意思
  1. #!/usr/bin/env perl
  2. my @test_data=(0.0003,0.0001,0.02);
  3. my %sorted_data = map{$_=>++$i}sort @test_data;
  4. @p_adjust_data = map{$_ * ($#test_data+1) / $sorted_data{$_}}@test_data;
  5. print join "\t", "@test_data"';
  6. print "\n";
  7. print join "\t", "@p_adjust_data";

复制代码

作者: rubyish    时间: 2014-03-01 01:29
yinyuemi 发表于 2014-02-28 17:28
回复 1# yang7473453

大概是这个意思

这个有意思~学习了!

作者: q1208c    时间: 2014-03-01 07:48
表示看完楼主写的, 我觉得我需要回去重新学一下语文了.

完全没理解是什么意思.
作者: pitonas    时间: 2014-03-01 13:30
(⊙0⊙) ~ 比较茫然, 看完以后也确实什么都没理解


假设你挑选了R个差异表达的基因,其中有S个是真正有差异表达的,另外有V个其实是没有差异表达的

大牛, 帮忙指点一下, 举个栗子:

举个栗子,什么是 有差异表达 ?
什么是 没有差异表达 ?

回复 2# yinyuemi


   
作者: yang7473453    时间: 2014-03-01 20:32
非常感谢,很有帮助回复 2# yinyuemi


   
作者: yinyuemi    时间: 2014-03-02 21:05
回复 5# pitonas


    这是统计学的知识(http://en.wikipedia.org/wiki/False_discovery_rate), 一种控制假阳性率(FDR)的方法, 全称应该是benjamini hochberg.
楼主应该是搞生物信息的, 两种条件下生物的基因的表达量可能相同,也可能不一样, 前者就是 表达无差异, 后者即是 表达差异




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2