快速算法实现费舍尔精确检验与超几何分布对数P值计算
需积分: 50 105 浏览量
更新于2024-11-03
收藏 261KB ZIP 举报
资源摘要信息:"费舍尔精确检验或超几何分布的对数 P 值的快速算法:可应用于相对非常大的数字 (Total<100000)-matlab开发"
费舍尔精确检验(Fisher's Exact Test)和超几何分布是统计学中用于处理无重复抽样问题的两种方法。费舍尔精确检验适用于2×2列联表,用于检验两个分类变量是否独立。当样本量较大时,直接计算费舍尔精确检验的P值可能会非常耗时,因此需要开发快速算法。超几何分布通常用于无放回抽样,描述了在有限总体中抽取样本时,特定类型成功(例如,抽出特定颜色的球)的概率分布情况。特别是在基因组学研究中,经常需要对基因列表和特定功能(如与疾病相关的基因)之间的关系进行统计检验。
在基因组学研究场景中,研究者可能需要从成千上万的基因中识别出特定功能的基因。例如,在本例中,从20,000个基因中识别出了30个基因与细胞周期相关。假定其中5个基因在细胞周期中已知,那么剩下的25个基因是与细胞周期无关的。而总共有200个与细胞周期相关的基因,195个基因虽然与细胞周期相关,但未出现在基因列表中。那么还有19,775个基因既不在列表中,也与细胞周期无关。在这种情况下,研究者可能希望计算这30个基因中恰好有5个与细胞周期相关的概率。
费舍尔精确检验的P值计算公式基于超几何分布,其算法复杂度随着样本量的增加而增加。对于非常大的样本(例如,样本总数小于100,000),需要使用快速算法来降低计算复杂度。在MATLAB中,可以通过编写特定的函数来实现这种快速算法。这些函数(log_hypergeometric和log_fisher_test)可以计算对数P值,从而避免直接计算原始P值时可能出现的数值不稳定和计算困难。
在MATLAB中,可以使用以下函数来计算对数P值:
1. 对于超几何分布的对数P值计算,可以使用函数:
```matlab
ln_p=log_hypergeometric(5,30,200,20000);
```
这行代码会计算出在上述例子中,有5个与细胞周期相关的基因出现在30个基因列表中的超几何分布的对数P值。
2. 将上述对数P值转化为以10为底的对数P值,可以使用:
```matlab
lg_p=log_hypergeometric(5,30,200,20000)/log(10);
```
这行代码将超几何分布的对数P值除以以10为底的对数,得到以10为底的对数P值。
3. 转化为十进制P值,可以使用指数函数来实现:
```matlab
p=exp(log_hypergeometric(5,30,200,20000));
```
这行代码计算出十进制P值,通过指数化对数P值得到。
在MATLAB环境中,上述函数可能被封装在压缩包文件中,例如log_fisher.zip和lnfishertest.zip。这些压缩包文件包含了用于执行这些计算的脚本或函数。
总结来说,该资源提供了利用MATLAB进行高效计算的方法,特别是在处理大型生物信息数据集时,能够快速得到精确的统计测试结果。这对于统计分析在生物信息学、遗传学以及其他需要处理大量分类数据的领域中的应用至关重要。通过实现快速算法,研究者可以更加便捷地对数据集进行深入分析,从而加快了科学发现的过程。
2021-06-01 上传
2024-06-23 上传
2019-08-13 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38656337
- 粉丝: 4
- 资源: 921
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常