PHP教程之用 PHP 完成的复杂线性回归(二)
我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。 处理输入和几率函数缺点的数据研讨东西本系列文章的第 1 局部开头处提到了复杂线性回归(Simple Linear Regression)类中短少的三个元素。在本文中,作者 Paul Meagher 用基于 PHP 的几率函数填补了这些缺点,演示了若何将输入办法集成到 SimpleLinearRegression 类中并创立了图形输入。他经由过程构建数据研讨东西处理了这些成绩,该东西旨在深条理地研讨中小范围的数据集所包括的信息。(在第 1 局部中,作者演示了若何用 PHP 作为完成言语来开辟和完成复杂线性回归算法包的中心局部。)
在这个由两局部构成的系列文章的第 1 局部(“用 PHP 完成的复杂线性回归”)中,我申明了数学库对 PHP 有效的缘由。我还演示了若何用 PHP 作为完成言语来开辟和完成复杂线性回归算法的中心局部。
本文的方针是向您展现若何利用第 1 局部中会商的 SimpleLinearRegression 类来构建一个主要的数据研讨东西。
扼要回忆:概念
复杂线性回归建模面前的根基方针是从成对的 X 值和 Y 值(即 X 和 Y 丈量值)构成的二维立体中找到最吻合的直线。一旦用最小方差法找到这条直线,就能够履行各类统计测试,以肯定这条直线与不雅测到的 Y 值的偏离量吻合水平。
线性方程(y = mx + b)有两个参数必需依据所供应的 X 和 Y 数据预算出来,它们是斜率(m)和 y 轴截距(b)。一旦预算出这两个参数,就能够将不雅测值输出线性方程,并察看方程所生成的 Y 展望值。
要利用最小方差法预算出 m 和 b 参数,就要找到 m 和 b 的估量值,使它们关于一切的 X 值失掉的 Y 值的不雅测值和展望值最小。不雅测值和展望值之差称为误差(yi - (mxi + b)),而且,假如对每一个误差值都求平方,然后求这些残差的和,其了局是一个被称为展望平方差的数。利用最小方差法来肯定最吻合的直线触及寻觅使展望方差最小的 m 和 b 的估量值。
可以用两种根基办法来找到知足最小方差法的估量值 m 和 b。第一种办法,可使用数值搜刮进程设定分歧的 m 和 b 值并对它们求值,终究决意发生最小方差的估量值。第二种办法是利用微积分找到用于预算 m 和 b 的方程。我不盘算深切会商推导出这些方程所触及的微积分,但我的确在 SimpleLinearRegression 类中利用了这些剖析方程,以找到 m 和 b 的最小平方估量值(请参阅 SimpleLinearRegression 类中的 getSlope() 和 getYIntercept 办法)。
即便具有了可以用来找到 m 和 b 的最小平方估量值的方程,也其实不意味着只需将这些参数代入线性方程,其了局就是一条与数据优秀吻合的直线。这个复杂线性回归过程当中的下一步是肯定其他的展望方差是不是可以承受。
可使用统计决议计划进程来否决“直线与数据吻合”这个备择假定。这个进程基于对 T 统计值的盘算,利用几率函数求得随机大的不雅测值的几率。正如第 1 局部所提到的,SimpleLinearRegression 类生成了为数浩瀚的汇总值,个中一个主要的汇总值是 T 统计值,它可以用来权衡线性方程与数据的吻合水平。假如吻合优秀,则 T 统计值常常是一个较大的值;假如 T 值很小,就应当用一个缺省模子取代您的线性方程,该模子假定 Y 值的均匀值是最好展望值(由于一组值的均匀值凡是可所以下一个不雅测值的有效的展望值)。
要测试 T 统计值是不是大到可以不必 Y 值的均匀值作为最好展望值,需求盘算随机取得 T 统计值的几率。假如几率很低,那就能够不采取均匀值是最好展望值这一有效假定,而且响应地可以确信复杂线性模子是与数据优秀吻合的。(有关盘算 T 统计值几率的更多信息,请参阅第 1 局部。)
回过火会商统计决议计划进程。它告知您什么时候不采取有效假定,却没有告知您是不是承受备择假定。在研讨情况中,需求经由过程实际参数和统计参数来创立线性模子备择假定。
您将构建的数据研讨东西完成了用于线性模子(T 测试)的统计决议计划进程,并供应了可以用来机关实际和统计参数的汇总数据,这些参数是创立线性模子所需求的。数据研讨东西可以归类为决议计划撑持东西,供常识任务者在中小范围的数据集中研讨形式。
从进修的角度来看,复杂线性回归建模值得研讨,由于它是了解更初级模式的统计建模的殊途同归。例如,复杂线性回归中的很多中心概念为了解屡次回归(Multiple Regression)、要素剖析(Factor Analysis)和工夫序列(Time Series)等创立了优秀的基本。
复杂线性回偿还是一种多用处的建模手艺。经由过程转换原始数据(凡是用对数或幂转换),可以用它来为曲线数据建模。这些转换可使数据线性化,如许就能够利用复杂线性回归来为数据建模。所生成的线性模子将被暗示为与被转换值相干的线性公式。
几率函数
在前一篇文章中,我经由过程交由 R 来求得几率值,从而避开了用 PHP 完成几率函数的成绩。我对这个处理计划并不是完整写意,因而我入手下手研讨这个成绩:开辟基于 PHP 的几率函数需求些甚么。
我入手下手上彀查找信息和代码。一个二者兼有的来历是书本 [url=http://www.library.cornell.edu/nr/bookcpdf.html]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 版本中,它们是静态付与的值。
清单 1. 完成几率函数
<?php
// Distribution.php
// Copyright John Pezullo
// Released under same terms as PHP.
// PHP Port and OO'fying by Paul Meagher
class Distribution {
function doCommonMath($q, $i, $j, $b) {
$zz = 1;
$z = $zz;
$k = $i;
while($k <= $j) {
$zz = $zz * $q * $k / ($k - $b);
$z = $z + $zz;
$k = $k + 2;
}
return $z;
}
function getStudentT($t, $df) {
$t = abs($t);
$w = $t / sqrt($df);
$th = atan($w);
if ($df == 1) {
return 1 - $th / (pi() / 2);
}
$sth = sin($th);
$cth = cos($th);
if( ($df % 2) ==1 ) {
return
1 - ($th + $sth * $cth * $this->doCommonMath($cth * $cth, 2, $df - 3, -1))
/ (pi()/2);
} else {
return 1 - $sth * $this->doCommonMath($cth * $cth, 1, $df - 3, -1);
}
}
function getInverseStudentT($p, $df) {
$v = 0.5;
$dv = 0.5;
$t = 0;
while($dv > 1e-6) {
$t = (1 / $v) - 1;
$dv = $dv / 2;
if ( $this->getStudentT($t, $df) > $p) {
$v = $v - $dv;
} else {
$v = $v + $dv;
}
}
return $t;
}
function getFisherF($f, $n1, $n2) {
// implemented but not shown
}
function getInverseFisherF($p, $n1, $n2) {
// implemented but not shown
}
}
?>
输入办法
既然您已用 PHP 完成了几率函数,那末开辟基于 PHP 的数据研讨东西剩下的独一困难就是设计用于显示剖析了局的办法。
复杂的处理计划是依据需求将一切实例变量的值都显示到屏幕上。在第一篇文章中,当显示燃耗研讨(Burnout Study)的线性方程、T 值和 T 几率时,我就是这么做的。能依据特定目标而会见特定值是很有匡助的,SimpleLinearRegression 撑持此类用法。
但是,另外一种用于输入了局的办法是将输入的各局部体系化地停止分组。假如研讨用于回归剖析的次要统计软件包的输入,就会发明它们常常是用一样的体例对输入停止分组的。它们常常有摘要表(Summary Table)、偏离值剖析(Analysis Of Variance)表、参数估量值(Parameter Estimate)表和 R 值(R Value)。相似地,我创立了一些输入办法,称号以下:
showSummaryTable()
showAnalysisOfVariance()
showParameterEstimates()
showRValues()
我还有一个用于显示线性展望公式的办法(getFormula())。很多统计软件包不输入公式,而是但愿用户依据上述办法的输入机关公式。局部是因为您最初用来对数据建模的公式的终究模式能够因为以下缘由而与缺省公式分歧:
1.Y 轴截距没有成心义的注释
2.或输出值多是经由转换的,而您能够需求作废对它们的转换以获得终究的注释。
一切这些办法都假定输入前言是网页。思索到您有能够但愿用非网页的其它前言输入这些汇总值,所以我决意将这些输入办法包装在一个承继了 SimpleLinearRegression 类的类中。清单 2 中的代码旨在演示输入类的通用逻辑。为了使通用逻辑更凸起,所以除去了完成各类 show 办法的代码。
清单 2. 演示输入类的通用逻辑
<?php
// HTML.php
// Copyright 2003, Paul Meagher
// Distributed under GPL
include_once "slr/SimpleLinearRegression.php";
class SimpleLinearRegressionHTML extends SimpleLinearRegression {
function SimpleLinearRegressionHTML($X, $Y, $conf_int) {
SimpleLinearRegression::SimpleLinearRegression($X, $Y, $conf_int);
}
function showTableSummary($x_name, $y_name) { }
function showAnalysisOfVariance() { }
function showParameterEstimates() { }
function showFormula($x_name, $y_name) { }
function showRValues() {}
}
?>
这个类的机关函数只是 SimpleLinearRegression 类机关函数的包装器。这意味着假如您想显示 SimpleLinearRegression 剖析的 HTML 输入,则应当实例化 SimpleLinearRegressionHTML 类,而不是直接实例化 SimpleLinearRegression 类。其长处是不会有很多未利用的办法充溢 SimpleLinearRegression 类,而且可以更自在地界说用于其它输入前言的类(或许会对分歧前言类型完成统一 API)。
图形输入
迄今为止,您已完成的输入办法都以 HTML 格局显示汇总值。它也合适于用 GIF、JPEG 或 PNG 格局显示这些数据的散布图(scatter plot)或线图(line plot)。
与其亲身编写生成线图和散布图的代码,我以为最好利用名为 JpGraph 的基于 PHP 的图形库。JpGraph 正由 Johan Persson 积极开辟,其项目网站如许描写它:
不管是关于只要起码代码的“以快捷但不得当体例取得的”图形,仍是关于需求十分细粒度掌握的庞杂专业图形,JpGraph 都可使它们的绘制变得复杂。JpGraph 一样合用于迷信和贸易类型的图形。
JpGraph 分发版中包括大批可以依据特定需求停止定制的示例剧本。将 JpGraph 用于数据研讨东西十分复杂,只需找到功效与我的需求相似的示例剧本,然后对该剧本停止改写以知足我的特定需求便可。
清单 3 中的剧本是从样本数据研讨东西(explore.php)中抽取的,它演示了若何挪用该库和若何未来自于 SimpleLinearRegression 剖析的数据填入 Line 和 Scatter 类。这段代码中的正文是 Johan Persson 编写的(JPGraph 代码库的文档化任务做得很好)。
清单 3. 来自于样本数据研讨东西 explore.php 的函数的具体内容<?php
// Snippet extracted from explore.php script
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_scatter.php");
include ("jpgraph/jpgraph_line.php");
// Create the graph
$graph = new Graph(300,200,'auto');
$graph->SetScale("linlin");
// Setup title
$graph->title->Set("$title");
$graph->img->SetMargin(50,20,20,40);
$graph->xaxis->SetTitle("$x_name","center");
$graph->yaxis->SetTitleMargin(30);
$graph->yaxis->title->Set("$y_name");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// make sure that the X-axis is always at the
// bottom at the plot and not just at Y=0 which is
// the default position
$graph->xaxis->SetPos('min');
// Create the scatter plot with some nice colors
$sp1 = new ScatterPlot($slr->Y, $slr->X);
$sp1->mark->SetType(MARK_FILLEDCIRCLE);
$sp1->mark->SetFillColor("red");
$sp1->SetColor("blue");
$sp1->SetWeight(3);
$sp1->mark->SetWidth(4);
// Create the regression line
$lplot = new LinePlot($slr->PredictedY, $slr->X);
$lplot->SetWeight(2);
$lplot->SetColor('navy');
// Add the pltos to the line
$graph->Add($sp1);
$graph->Add($lplot);
// ... and stroke
$graph_name = "temp/test.png";
$graph->Stroke($graph_name);
?>
<img src=><?php echo $graph_name ?>' vspace='15'>
?>
数据研讨剧本
该数据研讨东西由单个剧本(explore.php)组成,该剧本挪用 SimpleLinearRegressionHTML 类和 JpGraph 库的办法。
该剧本利用了复杂的处置逻辑。该剧本的第一局部对所提交的表双数据履行根基验证。假如这些表双数据经由过程验证,则履行该剧本的第二局部。
该剧本的第二局部所包括的代码用于剖析数据,并以 HTML 和图形格局显示汇总了局。清单 4 中显示了 explore.php 剧本的根基布局:
清单 4. explore.php 的布局
<?php
// explore.php
if (!empty($x_values)) {
$X = explode(",", $x_values);
$numX = count($X);
}
if (!empty($y_values)) {
$Y = explode(",", $y_values);
$numY = count($Y);
}
// display entry data entry form if variables not set
if ( (empty($title)) OR (empty($x_name)) OR (empty($x_values)) OR
(empty($y_name)) OR (empty($conf_int)) OR (empty($y_values)) OR
($numX != $numY) ) {
// Omitted code for displaying entry form
} else {
include_once "slr/SimpleLinearRegressionHTML.php";
$slr = new SimpleLinearRegressionHTML($X, $Y, $conf_int);
echo "<h2>$title</h2>";
$slr->showTableSummary($x_name, $y_name);
echo "<br><br>";
$slr->showAnalysisOfVariance();
echo "<br><br>";
$slr->showParameterEstimates($x_name, $y_name);
echo "<br>";
$slr->showFormula($x_name, $y_name);
echo "<br><br>";
$slr->showRValues($x_name, $y_name);
echo "<br>";
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_scatter.php");
include ("jpgraph/jpgraph_line.php");
// The code for displaying the graphics is inline in the
// explore.php script. The code for these two line plots
// finishes off the script:
// Omitted code for displaying scatter plus line plot
// Omitted code for displaying residuals plot
}
?>
火警丧失研讨
为了演示若何利用数据研讨东西,我将利用来自设想的火警丧失研讨的数据。这个研讨将次要室庐区火警丧失的金额与它们到比来消防站的间隔联系关系起来。例如,出于肯定保险费的目标,保险公司会对这类关系的研讨感乐趣。
该研讨的数据如图 1 中的输出屏幕所示。
图 1. 显示研讨数据的输出屏幕
数据被提交以后,会对它停止剖析,并显示这些剖析的了局。第一个显示的了局集是 Table Summary,如图 2 所示。
图 2. Table Summary 是所显示的第一个了局集
Table Summary 以表格模式显示了输出数据和其它列,这些列指出了对应于不雅测值 X 的展望值 Y、Y 值的展望值和不雅测值之间的差和展望 Y 值相信区间的上限和下限。
图 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. 终究呈报元素 ― 散布图和线图
大多半人都熟习线图(如本系列中的第一幅图)的申明,因而我将不合错误此停止正文,只想说 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 库的图形生成代码扩大该类。
从进修的角度来看,复杂线性回归建模是值得进一步研讨的,由于现实证实,它是了解更初级模式的统计建模的殊途同归。在深切进修更初级的手艺(如屡次回归或多变量方差剖析)之前,关于复杂线性回归的透辟了解将使您受益不浅。
即便复杂线性回归只用一个变量来讲明或展望另外一个变量的偏离值,在一切的研讨变量之间寻觅复杂线性关系依然经常是研讨性数据剖析的第一步。仅由于数据是多元的其实不意味着就必需利用多元东西研讨它。实践上,在入手下手时利用复杂线性回归如许的根基东西是着手探求数据形式的好办法。
本系列研讨了复杂线性回归剖析的两个使用。在本文中,我研讨了“到消防站的间隔”和“火警丧失”之间的强线性关系。在第一篇文章中,我研讨了“社会合中度”和称为“损耗指数”的丈量值之间的线性关系,虽然这类关系绝对弱一些,但依然非常分明。(作为实习,用本文中会商的数据研讨东西从头研讨第一个研讨案例中较为混乱的数据能够会很风趣。您能够会注重到 y 轴截距是正数的情形,这意味着“社会合中度”为 0,展望损耗指数为 -29.50。这成心义吗?在对一种景象建模时,您应当问问本人:方程是不是应当包括可选的 y 轴截距,假如可以,那末该 y 轴截距在线性方程中会起甚么感化。)
关于复杂线性回归的进一步研讨能够包含对这些主题的研讨:
*假如想从您的方程和可使用的其它盘算公式中略去截距,则什么时候可以如许做
*什么时候和若何利用幂、对数和其它转换来对数据停止线性化,以便用复杂线性回归来对该数据建模
*可以用来评价您的建模假定的充实性,并可以更明晰地洞察数据中的形式的其它可视化办法
这些是有待进修复杂线性回归的先生研讨的一局部更初级的主题。参考材料包括了几个指向初级主题文章的链接,您可以从中参考更多关于回归剖析的信息。
尺度 PHP 装置供应了开辟基于数学的主要使用法式所必需的很多资本。我但愿这个系列的文章能启示其他开辟人员出于乐趣、手艺或进修应战的目标而用 PHP 来完成数学例程。
相干附件:本文所用源代码下载
参考材料
1.请参考由 James T. McClave 和 Terry Sincich 编著的广受接待的大学教科书 Statistics,第 9 版(Prentice-Hall,在线),本文中所利用的算法步调和“燃耗研讨”示例参考了该书。
2.请查阅 PEAR 资本库,它今朝包括了大批初级其余 PHP 数学类。终究,应当会很乐意地看到 PEAR 包括完成尺度的较初级其余数值办法(好比 SimpleLinearRegression、MultipleRegression、TimeSeries、ANOVA、FactorAnalysis、FourierAnalysis 及其它)的包。
3.检查作者的 SimpleLinearRegression 类的一切源代码。
4.懂得一下Numerical Python 项目,它用十分迷信的数组言语和成熟的创立下标办法扩大了 Python。有了该扩大,数学操作就十分接近人们希冀从编译言语所取得的功效。
5.研讨可用于 Perl 的很多数学参考材料,包含 CPAN 数学模块的索引和 CPAN 中算法局部的模块,和 Perl 数据言语(Perl Data Language),它旨在为 Perl 供应紧缩存储和疾速操作大型 N 维数据数组的才能。
6.有关 John Chambers 的 S 编程言语的更多信息,请查阅关于他的出书物和他在贝尔实行室的各项研讨项目标链接。还可以懂得在 1998 年因言语设计而取得的 ACM 奖。
7.R 是用于统计盘算和图形的言语和情况,相似于获奖的 S System,R 供应了诸如线性和非线性建模、统计测试、工夫序列剖析、分类、群集之类的统计和图形手艺。请在 R Project 主页上懂得 R。
8.假如您刚接触 PHP,那末请浏览 Amol Hatwar 的 developerWorks 系列文章:“用 PHP 开辟强健的代码:”“第 1 局部: 高高在上的引见 ”(2002 年 8 月)、“第 2 局部: 无效地利用变量”(2002 年 9 月)和“第 3 局部: 编写可重用函数”(2002 年 11 月)。
9.会见 John Pezzullo 的优异站点,该站点专门供应履行统计盘算的网页。基于 PHP 的几率函数是以在 John 的几率函数页面所找到的代码为基本的。
10.到 Digital Library of Mathematical Functions 懂得关于 M. Abramowitz 和 I.A. Stegun 编写的书本 The Handbook of Mathematical Functions(也称为 AMS55)的更多信息。
11.检查 JpGraph 站点,以获得关于 PHP 的次要 OO 图形库的大批信息。
12.浏览美国国度尺度与手艺研讨所(National Institute of Standards,NIST)出书的 The Engineering Handbook of Statistics,该手册上有几章是关于 Exploratory Data Analysis 的,十分不错。
13.假如您关于更详实地进修关于回归的主题感乐趣的话,请测验考试浏览以下有效的参考材料:
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。
14.浏览 Cameron Laird 的文章“Open source in the biosciences”。PHP 需求更好的数学东西来介入这个不休生长的市场(developerWorks,2002 年 11 月)。
15.检查 RWeb,它是基于 Web 的 R 接口。会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦! 当然这种网站的会员费就几十块钱。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 当然这种网站的会员费就几十块钱。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 做为1门年轻的语言,php一直很努力。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
页:
[1]