注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

用 PHP 实现的简单线性回归,第 2 部分  

2010-05-04 03:26:02|  分类: 生物信息编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用 PHP 实现的简单线性回归,第 2 部分

解决输出和概率函数缺陷的数据研究工具用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon
用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon
用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon
文档选项
用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon 用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

打印本页

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon 用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

将此页作为电子邮件发送

级别: 初级

Paul Meagher (paul@datavore.com), CEO, Datavore Productions

2002 年 11 月 26 日

本系列文章的第 1 部分结尾处提到了简单线性回归(Simple Linear Regression)类中缺少的三个元素。在本文中,作者 Paul Meagher 用基于 PHP 的概率函数弥补了这些缺陷,演示了如何将输出方法集成到 SimpleLinearRegression 类中并创建了图形输出。他通过构建数据研究工具解决了这些问题,该工具旨在深层次地研究中小规模的数据集所包含的信息。(在第 1 部分中,作者演示了如何用 PHP 作为实现语言来开发和实现简单线性回归算法包的核心部分。)

在这个由两部分组成的系列文章的第 1 部分(“ 用 PHP 实现的简单线性回归”)中,我说明了数学库对 PHP 有用的原因。我还演示了如何用 PHP 作为实现语言来开发和实现简单线性回归算法的核心部分。

本文的目标是向您展示如何使用第 1 部分中讨论的

SimpleLinearRegression

类来构建一个重要的数据研究工具。

回页首

Numerical Recipes in C 中的概率函数。我用 PHP 重新实现了一些概率函数代码(

gammln.c

betai.c

函数),但我对结果还是不满意。与其它一些实现相比,其代码似乎多了些。此外,我还需要反概率函数。

幸运的是,我偶然发现了 John Pezzullo 的 Interactive Statistical Calculation。John 关于 概率分布函数的网站上有我需要的所有函数,为便于学习,这些函数已用 JavaScript 实现。

我将 Student T 和 Fisher F 函数移植到了 PHP。我对 API 作了一点改动,以便符合 Java 命名风格,并将所有函数嵌入到名为

Distribution

的类中。该实现的一个很棒的功能是

doCommonMath

方法,这个库中的所有函数都重用了它。我没有花费力气去实现的其它测试(正态测试和卡方测试)也都使用

doCommonMath

方法。

这次移植的另一个方面也值得注意。通过使用 JavaScript,用户可以将动态确定的值赋给实例变量,譬如:

var PiD2 = pi() / 2

在 PHP 中不能这样做。只能把简单的常量值赋给实例变量。希望在 PHP5 中会解决这个缺陷。

请注意 清单 1中的代码并未定义实例变量 — 这是因为在 JavaScript 版本中,它们是动态赋予的值。 回页首

清单 2中的代码旨在演示输出类的通用逻辑。为了使通用逻辑更突出,所以除去了实现各种 show方法的代码。 回页首

项目网站这样描述它:

无论是对于只有最少代码的“以快捷但不恰当方式获得的”图形,还是对于需要非常细粒度控制的复杂专业图形,JpGraph 都可以使它们的绘制变得简单。JpGraph 同样适用于科学和商业类型的图形。

JpGraph 分发版中包含大量可以根据特定需求进行定制的示例脚本。将 JpGraph 用于数据研究工具非常简单,只需找到功能与我的需求类似的示例脚本,然后对该脚本进行改写以满足我的特定需求即可。

清单 3中的脚本是从样本数据研究工具( explore.php)中抽取的,它演示了如何调用该库以及如何将来自于

SimpleLinearRegression

分析的数据填入

Line

Scatter

类。这段代码中的注释是 Johan Persson 编写的(JPGraph 代码库的文档化工作做得很好)。 回页首

清单 4中显示了 explore.php脚本的基本结构: 回页首

图 1中的输入屏幕所示。

图 2所示。

图 3显示了 Table Summary 之后的三个高级别数据汇总表。

参考资料)。

要显示的最终报告元素是数据的分布图和线图,如 图 4所示。

研究性数据分析(Exploratory Data Analysis,EDA)的倡导者所使用的图形示例,用以帮助将分析人员对数据中的模式的检测和理解能力提到最高程度。行家可以使用这幅图回答关于下列方面的问题:

  • 可能的非正常值或影响力过度的例子
  • 可能的曲线关系(使用转换?)
  • 非正态残差分布
  • 非常量误差方差或异方差性

可以轻松地扩展这个数据研究工具,以生成更多类型的图形 — 直方图、框图和四分位数图 — 这些都是标准的 EDA 工具。

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

回页首

参考资料)。

最后提一点,如果采取以下作法,可以将所有软件类移到 Web 根目录之外的文档根目录:

  • 使某个全局

    PHP_MATH

    变量有权访问非 Web 根目录位置,并且

  • 确保在所有需要或包括的文件路径前面加上这个已定义的常量作为前缀。

将来,对

PHP_MATH

变量的设置将通过一个用于整个 PHP 数学库的配置文件来完成。

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

用 PHP 实现的简单线性回归,第 2 部分 - xiaofeng1982 - Tiger-Leon

回页首

参考资料包含了几个指向高级主题文章的链接,您可以从中参考更多关于回归分析的信息。

标准 PHP 安装提供了开发基于数学的重要应用程序所必须的许多资源。我希望这个系列的文章能启发其他开发人员出于乐趣、技术或学习挑战的目的而用 PHP 来实现数学例程。

英文原文.

  • 请查阅由 James T. McClave 和 Terry Sincich 编著的广受欢迎的大学本科教科书 Statistics,第 9 版 ,(Prentice-Hall,在线),本文中所使用的算法步骤和“燃耗研究”示例参考了该书。

  • 查看 PEAR 资源库中的低级别的 PHP 数学类。最终,应该会很高兴地看到 PEAR 包含实现标准的较高级别的数值方法(比如 SimpleLinearRegression、MultipleRegression、TimeSeries、ANOVA、FactorAnalysis 或 FourierAnalysis)的软件包。

  • 研究可用于 Perl 的许多数学参考资料,包括 CPAN 数学模块的索引和 CPAN 算法部分的模块,以及 Perl 数据语言(Perl Data Language),它旨在使 Perl 能压缩存储并快速操作大型 N 维数据数组。

  • 有关 John Chambers 编写的 S 编程语言的更多信息,请查阅关于他的出版物以及他在贝尔实验室的各种研究项目的链接。

  • R 是用于统计计算和图形的语言和环境,类似于获奖的 S 系统,R 提供了诸如线性和非线性建模、统计测试、时间序列分析、分级、群集之类的统计和图形技术。请在 R Project 主页上了解 R。

  • 如果您刚接触 PHP,那么请阅读 Amol Hatwar 的 developerWorks系列文章“用 PHP 开发健壮的代码:”“ 第 1 部分: 高屋建瓴的介绍 ”(2002 年 8 月)、“ 第 2 部分: 有效地使用变量”(2002 年 9 月)和“ 第 3 部分: 编写可重用函数”(2002 年 11 月)。

  • 阅读 Steven Gould 编写的 IBM 教程“ Writing Efficient PHP”( developerWorks,2002 年 7 月),以获取代码优化技术的目录。

  • 阅读 developerWorks数学库文集:

  • 阅读 IBM 教程“ Creating dynamic Web sites with PHP and MySQL”( developerWorks,2001 年 5 月),以及了解有关 PHP 的更多知识。

  • 访问 John Pezzullo 的优秀站点,该站点专门提供执行 统计计算的网页。基于 PHP 的概率函数是以在 John 的 概率函数页面所找到的代码为基础的。

  • Digital Library of Mathematical Functions了解关于 M. Abramowitz 和 I.A. Stegun 编写的书籍 The Handbook of Mathematical Functions(也称为 AMS55)的更多信息。

  • 查看 JpGraph站点,以获取关于 PHP 的主要 OO 图形库的大量信息。

  • 阅读美国国家标准与技术研究所(National Institute of Standards,NIST)出版的 The Engineering Handbook of Statistics,该手册上有几章是关于 Exploratory Data Analysis的,非常不错。

  • 如果您对于更详尽地学习关于回归的主题感兴趣的话,请尝试阅读以下有用的参考资料:
    • L. C. Hamilton(1992年)。 Regression with Graphics 。加州 Pacific Grove:Brooks/Cole Publishing Company。
    • J Neter、M.H. Kutner 和 W Wasserman W(1990 年)。 Applied Linear Regression Models(第 3 版)。芝加哥 Irwin。
    • E. J. Pedhazur(1982 年)。 Multiple regression in behavioral research。纽约州,纽约市:Holt,Rinehart and Winston。

  • 阅读 Cameron Laird 的文章“ Open source in the biosciences”。PHP 需要更好的数学工具来参与这个不断成长的市场( developerWorks,2002 年 11 月)。

  • 查看 RWeb,它是基于 Web 的 R接口。

    • paul@datavore.com

        评论这张
       
      阅读(536)| 评论(0)
      推荐 转载

      历史上的今天

      在LOFTER的更多文章

      评论

      <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
       
       
       
       
       
       
       
       
       
       
       
       
       
       

      页脚

      网易公司版权所有 ©1997-2017