科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件PHP实现简单线性回归之数据研究工具

PHP实现简单线性回归之数据研究工具

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

简单线性回归建模背后的基本目标是从成对的 X值和 Y值组成的二维平面中找到最吻合的直线。

作者:Paul Meagher 来源:ibm 2007年10月21日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
火灾损失研究

  为了演示如何使用数据研究工具,我将使用来自假想的火灾损失研究的数据。这个研究将主要住宅区火灾损失的金额与它们到最近消防站的距离关联起来。例如,出于确定保险费的目的,保险公司会对这种关系的研究感兴趣。

  该研究的数据如 图 1中的输入屏幕所示。

图 1. 显示研究数据的输入屏幕
图 1. 显示研究数据的输入屏幕

  数据被提交之后,会对它进行分析,并显示这些分析的结果。第一个显示的结果集是 Table Summary,如 图 2所示。

图 2. Table Summary 是所显示的第一个结果集
图 2. Table Summary 是所显示的第一个结果集

  Table Summary 以表格形式显示了输入数据和其它列,这些列指出了对应于观测值 X的预测值 YY值的预测值和观测值之间的差以及预测 Y值置信区间的下限和上限。

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

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

  Analysis of Variance表显示了如何将 Y值的偏离值归为两个主要的偏离值来源,由模型解释的方差(请看 Model 行)和模型不能解释的方差(请看 Error 行)。较大的 F值意味着该线性模型捕获了 Y测量值中的大多数偏离值。这个表在多次回归环境中更有用,在那里每个独立变量都在表中占有一行。

  Parameter Estimates表显示了估算的 Y 轴截距(Intercept)和斜率(Slope)。每行都包括一个 T值以及观测到极限 T值的概率(请看 Prob > T 列)。斜率的 Prob > T可用于否决线性模型。

  如果 T值的概率大于 0.05(或者是类似的小概率),那么您可以否决该无效假设,因为随机观测到极限值的可能性很小。否则您就必须使用该无效假设。

  在火灾损失研究中,随机获得大小为 12.57 的 T值的概率小于 0.00000。这意味着对于与该研究中观测到的 X值区间相对应的 Y值而言,线性模型是有用的预测器(比 Y值的平均值更好)。

  最终报告显示了相关性系数或 R 值。可以用它们来评估线性模型与数据的吻合程度。高的 R 值表明吻合良好。

  每个汇总报告对有关线性模型和数据之间关系的各种分析问题提供了答案。请查阅 Hamilton、Neter 或 Pedhauzeur 编写的教科书,以了解更高级的回归分析处理。

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

图 4. 最终报告元素 — 分布图和线图
图 4. 最终报告元素 — 分布图和线图

  大多数人都熟悉线图(如本系列中的第一幅图)的说明,因此我将不对此进行注释,只想说 JPGraph 库可以产生用于 Web 的高质量科学图表。当您输入分布或直线数据时,它也做得很好。

  第二幅图将残差(观测的 Y、预测的 Y)与您预测的 Y值关联起来。这是 研究性数据分析(Exploratory Data Analysis,EDA)的倡导者所使用的图形示例,用以帮助将分析人员对数据中的模式的检测和理解能力提到最高程度。行家可以使用这幅图回答关于下列方面的问题:
  • 可能的非正常值或影响力过度的例子
  • 可能的曲线关系(使用转换?)
  • 非正态残差分布
  • 非常量误差方差或异方差性
  可以轻松地扩展这个数据研究工具,以生成更多类型的图形 — 直方图、框图和四分位数图 — 这些都是标准的 EDA 工具。

  数学库体系结构

  对数学的业余爱好使我在最近几个月中保持着对数学库的浓厚兴趣。此类研究推动我思考如何组织我的代码库以及使其预期在未来能不断增长。

  我暂时采用清单 5 中的目录结构:

  清单 5. 易于增长的目录结构
 
phpmath/ 
     
    burnout_study.php     
    explore.php 
    fire_study.php   
    navbar.php    
       
    dist/ 
      Distribution.php   
      fisher.php 
      student.php 
      source.php 
       
    jpgraph/   
      etc... 
     
    slr/  
      SimpleLinearRegression.php  
      SimpleLinearRegressionHTML.php 
       
    temp/ 

  例如,未来有关多次回归的工作,将涉及扩展这个库以包括 matrix目录,该目录用来容纳执行矩阵操作(这是对于更高级形式的回归分析的需求)的 PHP 代码。我还将创建一个 mr目录,以容纳实现多次回归分析输入方法、逻辑和输出方法的 PHP 代码。

  请注意这个目录结构包含一个 temp目录。必须设置该目录的许可权,使 explore.php脚本能够将输出图写到该目录。在尝试安装 phpmath_002.tar.gz源代码时请牢记这一点。此外,请在 JpGraph 项目网站上阅读安装 JpGraph 的指示信息(请参阅 参考资料)。

  最后提一点,如果采取以下作法,可以将所有软件类移到 Web 根目录之外的文档根目录:
  • 使某个全局 PHP_MATH 变量有权访问非 Web 根目录位置,并且
  • 确保在所有需要或包括的文件路径前面加上这个已定义的常量作为前缀。
  将来,对 PHP_MATH 变量的设置将通过一个用于整个 PHP 数学库的配置文件来完成。

  您学到了什么?

  在本文中,您了解了如何使用 SimpleLinearRegression 类开发用于中小规模的数据集的数据研究工具。在此过程中,我还开发了一个供 SimpleLinearRegression 类使用的本机概率函数,并用 HTML 输出方法和基于 JpGraph 库的图形生成代码扩展该类。

  从学习的角度来看,简单线性回归建模是值得进一步研究的,因为事实证明,它是理解更高级形式的统计建模的必由之路。在深入学习更高级的技术(如多次回归或多变量方差分析)之前,对于简单线性回归的透彻理解将使您受益匪浅。

  即使简单线性回归只用一个变量来说明或预测另一个变量的偏离值,在所有的研究变量之间寻找简单线性关系仍然常常是研究性数据分析的第一步。仅因为数据是多元的并不意味着就必须使用多元工具研究它。实际上,在开始时使用简单线性回归这样的基本工具是着手探究数据模式的好方法。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章