
正文
php数据库画出回归直线 sql 回归分析
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用 PHP 实现的简单线性回归
在这个由两部分组成php数据库画出回归直线的系列文章php数据库画出回归直线的第 部分(“ 用 PHP 实现的简单线性回归”)中 php数据库画出回归直线我说明php数据库画出回归直线了数学库对 PHP 有用的原因 我还演示了如何用 PHP 作为实现语言来开发和实现简单线性回归算法的核心部分
本文的目标是向您展示如何使用第 部分中讨论的 SimpleLinearRegression 类来构建一个重要的数据研究工具
简要回顾 概念
简单线性回归建模背后的基本目标是从成对的 X值和 Y值(即 X和 Y测量值)组成的二维平面中找到最吻合的直线 一旦用 最小方差法找到这条直线 就可以执行各种统计测试 以确定这条直线与观测到的 Y值的偏离量吻合程度
线性方程( y = mx + b)有两个参数必须根据所提供的 X和 Y数据估算出来 它们是斜率( m)和 y 轴截距( b) 一旦估算出这两个参数 就可以将观测值输入线性方程 并观察方程所生成的 Y预测值
要使用最小方差法估算出 m和 b参数 就要找到 m 和 b 的估计值 使它们对于所有的 X值得到的 Y值的观测值和预测值最小 观测值和预测值之差称为误差( y i (mx i+ b) ) 并且 如果对每个误差值都求平方 然后求这些残差的和 其结果是一个被称为 预测平方差的数 使用最小方差法来确定最吻合的直线涉及寻找使预测方差最小的 m和 b的估计值
可以用两种基本方法来找到满足最小方差法的估计值 m和 b 第一种方法 可以使用数值搜索过程设定不同的 m和 b值并对它们求值 最终决定产生最小方差的估计值 第二种方法是使用微积分找到用于估算 m和 b 的方程 我不打算深入讨论推导出这些方程所涉及的微积分 但我确实在 SimpleLinearRegression 类中使用了这些分析方程 以找到 m和 b 的最小平方估计值(请参阅 SimpleLinearRegression 类中的 getSlope() 和 getYIntercept 方法)
即使拥有了可以用来找到 m和 b的最小平方估计值的方程 也并不意味着只要将这些参数代入线性方程 其结果就是一条与数据良好吻合的直线 这个简单线性回归过程中的下一步是确定其余的预测方差是否可以接受
可以使用统计决策过程来否决“直线与数据吻合”这个备择假设 这个过程基于对 T 统计值的计算 使用概率函数求得随机大的观测值的概率 正如第 部分所提到的 SimpleLinearRegression 类生成了为数众多的汇总值 其中一个重要的汇总值是 T 统计值 它可以用来衡量线性方程与数据的吻合程度 如果吻合良好 则 T 统计值往往是一个较大的值 如果 T 值很小 就应该用一个缺省模型代替您的线性方程 该模型假定 Y值的平均值是最佳预测值(因为一组值的平均值通常可以是下一个观测值的有用的预测值)
要测试 T 统计值是否大到可以不用 Y值的平均值作为最佳预测值 需要计算随机获得 T 统计值的概率 如果概率很低 那就可以不采用平均值是最佳预测值这一无效假设 并且相应地可以确信简单线性模型是与数据良好吻合的 (有关计算 T 统计值概率的更多信息 请参阅第 部分 )
回过头讨论统计决策过程 它告诉您何时不采用无效假设 却没有告诉您是否接受备择假设 在研究环境中 需要通过理论参数和统计参数来建立线性模型备择假设
您将构建的数据研究工具实现了用于线性模型(T 测试)的统计决策过程 并提供了可以用来构造理论和统计参数的汇总数据 这些参数是建立线性模型所需要的 数据研究工具可以归类为决策支持工具 供知识工作者在中小规模的数据集中研究模式
从学习的角度来看 简单线性回归建模值得研究 因为它是理解更高级形式的统计建模的必由之路 例如 简单线性回归中的许多核心概念为理解多次回归(Multiple Regression) 要素分析(Factor Analysis)和时间序列(Time Series)等建立了良好的基础
简单线性回归还是一种多用途的建模技术 通过转换原始数据(通常用对数或幂转换) 可以用它来为曲线数据建模 这些转换可以使数据线性化 这样就可以使用简单线性回归来为数据建模 所生成的线性模型将被表示为与被转换值相关的线性公式
回页首
概率函数
在前一篇文章中 我通过交由 R 来求得概率值 从而避开了用 PHP 实现概率函数的问题 我对这个解决方案并非完全满意 因此我开始研究这个问题 开发基于 PHP 的概率函数需要些什么
我开始上网查找信息和代码 一个两者兼有的来源是书籍 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 PiD = pi() /
在 PHP 中不能这样做 只能把简单的常量值赋给实例变量 希望在 PHP 中会解决这个缺陷
请注意 清单 中的代码并未定义实例变量 — 这是因为在 JavaScript 版本中 它们是动态赋予的值
清单 实现概率函数
?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 = ; $z = $zz; $k = $i; while($k = $j) { $zz = $zz * $q * $k / ($k $b); $z = $z + $zz; $k = $k + ; } return $z; } function getStudentT($t $df) { $t = abs($t); $w = $t / sqrt($df); $th = atan($w); if ($df == ) { return $th / (pi() / ); } $sth = sin($th); $cth = cos($th); if( ($df % ) == ) { return ($th + $sth * $cth * $this doCommonMath($cth * $cth $df )) / (pi()/ ); } else { return $sth * $this doCommonMath($cth * $cth $df ); } } function getInverseStudentT($p $df) { $v = ; $dv = ; $t = ; while($dv e ) { $t = ( / $v) ; $dv = $dv / ; if ( $this getStudentT($t $df) $p) { $v = $v $dv; } else { $v = $v + $dv; } } return $t; } function getFisherF($f $n $n ) { // implemented but not shown } function getInverseFisherF($p $n $n ) { // implemented but not shown } } ?
回页首
图形输出
迄今为止 您已经实现的输出方法都以 HTML 格式显示汇总值 它也适合于用 GIF JPEG 或 PNG 格式显示这些数据的分布图(scatter plot)或线图(line plot)
与其亲自编写生成线图和分布图的代码 我认为最好使用名为 JpGraph的基于 PHP 的图形库 JpGraph 正由 Johan Persson 积极开发 其 项目网站这样描述它
无论是对于只有最少代码的“以快捷但不恰当方式获得的”图形 还是对于需要非常细粒度控制的复杂专业图形 JpGraph 都可以使它们的绘制变得简单 JpGraph 同样适用于科学和商业类型的图形
JpGraph 分发版中包含大量可以根据特定需求进行定制的示例脚本 将 JpGraph 用于数据研究工具非常简单 只需找到功能与我的需求类似的示例脚本 然后对该脚本进行改写以满足我的特定需求即可
清单 中的脚本是从样本数据研究工具( explore php)中抽取的 它演示了如何调用该库以及如何将来自于 SimpleLinearRegression 分析的数据填入 Line 和 Scatter 类 这段代码中的注释是 Johan Persson 编写的(JPGraph 代码库的文档化工作做得很好)
清单 来自于样本数据研究工具 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( auto ); $graph SetScale("linlin"); // Setup title $graph title Set("$title"); $graph img SetMargin( ); $graph xaxis SetTitle("$x_name" "center"); $graph yaxis SetTitleMargin( ); $graph yaxis title Set("$y_name"); $graph title SetFont(FF_FONT FS_BOLD); // make sure that the X axis is always at the // bottom at the plot and not just at Y= which is // the default position $graph xaxis SetPos( min ); // Create the scatter plot with some nice colors $sp = new ScatterPlot($slr Y $slr X); $sp mark SetType(MARK_FILLEDCIRCLE); $sp mark SetFillColor("red"); $sp SetColor("blue"); $sp SetWeight( ); $sp mark SetWidth( ); // Create the regression line $lplot = new LinePlot($slr PredictedY $slr X); $lplot SetWeight( ); $lplot SetColor( navy ); // Add the pltos to the line $graph Add($sp ); $graph Add($lplot); // and stroke $graph_name = "temp/test png"; $graph Stroke($graph_name); ? img src= ?php echo $graph_name ? vspace= ?
回页首
数据研究脚本
该数据研究工具由单个脚本( explore php)构成 该脚本调用 SimpleLinearRegressionHTML 类和 JpGraph 库的方法
该脚本使用了简单的处理逻辑 该脚本的第一部分对所提交的表单数据执行基本验证 如果这些表单数据通过验证 则执行该脚本的第二部分
该脚本的第二部分所包含的代码用于分析数据 并以 HTML 和图形格式显示汇总结果 清单 中显示了 explore php脚本的基本结构
清单 explore php 的结构
lishixinzhi/Article/program/PHP/201311/21213
相关问答
Q1: 如何利用数据画线性回归方程?
(1)用所给样本求出两个相关变量的(算术)平均值: x_=(x1+x2+x3+...+xn)/n y_=(y1+y2+y3+...+yn)/n ;(2)分别计算分子和分母:(两个公式任选其一) 分子=(x1y1+x2y2+x3y3+...+xnyn)-nx_Y_ 分母=(x1^2+x2^2+x3^2+...+xn^2)-n*x_^2 3)来计算 b。
拓展资料:线性回归方程是利用数理统计中的回归分析,来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法之一。 线性回归也是回归分析中第一种经过严格研究并在实际应用中广泛使用的类型。按自变量个数可分为一元线性回归分析方程和多元线性回归分析方程。
b=分子 / 分母 用最小二乘法估计参数b,设服从正态分布,分别求对a、b的偏导数并令它们等于零,得方程组解。其中 ,且为观测值的样本方差.线性方程称为关于的线性回归方程,称为回归系数,对应的直线称为回归直线.顺便指出,将来还需用到,其中为观测值的样本方差.。
线性回归方程模型:1、线性回归模型经常用最小二乘逼近来拟合,但他们也可能用别的方法来拟合,比如用最小化“拟合缺陷”在一些其他规范里(比如最小绝对误差回归),或者在回归中最小化最小二乘损失函数的乘法。2、相反,最小二乘逼近可以用来拟合那些非线性的模型。因此,尽管最小二乘法和线性模型是紧密相连的,但他们是不能划等号的。
线性回归方程的求法:
第一:用所给样本求出两个相关变量的(算术)平均值
第二:分别计算分子和分母
第三:计算b:b=分子/分母用最小二乘法估计参数b,设服从正态分布,分别求对a、b的偏导数并令它们等于零。先求x,y的平均值X,Y。再用公式代入求解:b=(x1y1+x2y2+...xnyn-nXY)/(x1+x2+...xn-nX)。后把x,y的平均数X,Y代入a=Y-bX。求出a并代入总的公式y=bx+a得到线性回归方程(X为xi的平均数,Y为yi的平均数)
个人建议:线性回归是利用数理统计中的回归分析来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法,是变量间的相关关系中最重要的一部分,主要考查概率与统计知识,考察学生的阅读能力、数据处理能力及运算能力,题目难度中等,应用广泛
Q2: eviews 6 线性方程已经回归出来了,散点图和回归线怎么画?
用的是横截面数据的简单回归:
打开软件,file-new-workfile-unstructure/undated
输入样本容量(observations)比如20,点OK
下面开始具体工作,新建自变量和因变量序列,可以通过
工作文件窗口的object-series
输入序列名(比如x),类似再新建因变量y.更简单的方法
直接命令窗口
data
x
y.
录入数据,将已有的excel数据直接复制进序列
做回归:2种方法
1:命令窗口
ls
y
x
c
2:按住ctrl
选中
y
x两个序列
右键
open
-
as
equation
直接确定就可以了
得到回归结果
画几个点回归方成直线就比较简单了,选中序列x
y
,open-
as
group
然后点view-graph
选择scatter
右边的details
中的
fit
lines中选择
regression
line然后确定就可以得到回归方程直线和实际值的散点图
Q3: 回归直线方程怎么求?
回归直线方程指在一组具有相关关系的变量的数据(x与Y)间,一条最好地反映x与y之间的关系直线。根据以下回归直线公式即可算出a和b的值。
拓展资料
在一组具有相关关系的变量的数据(x与Y)间,通过散点图我们可观察出所有数据点都分布在一条直线附近,这样的直线可以画出许多条。
而我们希望其中的一条最好地反映x与Y之间的关系,即我们要找出一条直线,使这条直线“最贴近”已知的数据点,记此直线方程为(如右所示,记为①式)这里在y的上方加记号“^”,是为了区分Y的实际值y,表示当x取值Xi=1,2,……,6)时,Y相应的观察值为Yi,而直线上对应于Yi的纵坐标是 ①式叫做Y对x的回归直线方程,相应的直线叫做回归直线,b叫做回归系数。
Q4: 知道回归方程,怎样用Excel求回归直线的图表
excel绘制标准曲线全图片教程
(老是不会,老是要去找,所以发上来备份,哈哈)
excel绘制标准曲线全图片教程
coolautumn
随着计算机的日益普及,越来越多的检验工作者希望能从一些烦琐的工作中解脱出来,如:绘制标准曲线、绘制质控图、计算检测值等等。当然借助检验科办公系统理论上是最方便的,但很多单位是没有检验科办公系统的。其实借助microsoft的excel电子表格工具对检验工作也会带来很大的便利。
excel是microsoft
offices系统的重要组成,它是界于word字处理软件与access数据库软件之间的电子表格工具,功能十分强大,特别适合于日常工作使用。使用得好,完全比目前所有的检验科办公系统优秀。
现就先介绍一下如何使用excel绘制标准曲线。
首先,将数据整理好输入excel,并选取完成的数据区,并点击图表向导,如下图所示。
点击图表向导后会运行图表向导如下图,先在图表类型中选“xy散点图”,并选了图表类型的“散点图”(第一个没有连线的)。
点击“下一步”,出现如下图界面。如是输入是如本例横向列表的就不用更改,如果是纵向列表就改选“列”。
如果发现图不理想,就要仔细察看是否数据区选择有问题,如果有误,可以点击“系列”来更改,如下图。
如果是x值错了就点击它文本框右边的小图标,结果如下图:
出现上图后,如图在表上选取正确的数据区域。然后点击“下一步”出现图表选项界面,如下图,上应调整选项,以满足自己想要的效果。
点击“下一步”,现在一张带标准值的完整散点图就已经完成,如下图。
完成了散点图,现在需要根据数据进行回归分析,计算回归方程,绘制出标准曲线。其实这很简单,先点击图上的标准值点,然后按右键,点击“添加趋势线”。如下图。
由于本例是线性关系,在类型中选“线性”如下图
点击“确定”,标准曲线就回归并画好了。
标准曲线是画好了,可是php数据库画出回归直线我们怎么知道回归后的方程是什么样呢?这了简单,点击趋势线(也就是php数据库画出回归直线我们说的标准曲线)然后按右键,选趋势线格式,如下图:
在显示公式和显示r平方值(直线相关系数)前点一下,勾上。再点确定。好了,现在公式和相关系数都出来了。如图:呵r的平方达0.996,线性相当好。
可是有时候有的项目是成指数增加的,散点图如下图,
从上图看并不值关,除了最大的一个点外其余的几乎都成了直线。这不难理解,对于10000000而言,10与10000都差不了多少。因此我们平时常使用半对数坐标纸画图。对于excel也可以,先点中y坐标轴,再按右键,选“坐标轴格式”如下图
将左下方的对数刻度选中,确定。完整的一个半对数标准曲线就做好了。
利用excel制作标准曲线简单吧?如果认真调整参数可以得到不同的效果,大家多研究一下
关于php数据库画出回归直线和sql 回归分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





