利用php进行线性回归

笔者在一家中石化内部的企业工作,主要从事高分子聚合物的相关开发。
目前因工作需要,需要学习聚合物特性黏度测试方面的知识,采用多点稀释法进行测试。在得到数据后,通过外推法求得纯熔体的特性黏度。
比如我们在三种浓度下测得特性黏度分别如下:
纯溶剂 t0=76.56s ηr ηsp ηsp/c lnηr/c
0.04g/dl t1=228.16 2.98 1.98 49.5 27.3
0.02g/dl t2=135.37 1.77 0.77 38.5 28.5
0.01g/dl t3=105.25 1.37 0.37 37 31.38
定义为溶液浓度无限稀释时的比浓黏度和比浓对数黏度。其值与浓度无关。


特性黏度

我们可以通过作图推算出浓度为零时的特性黏度,如下图:


特性黏度推算

当然我们更准确的可以通过EXCEL工具进行作图并线性模拟出计算公式。
因为笔者在PHP编程方面颇有一些研究,下面通过PHP编程计算出线性方程式。
如果两组数据相关系数很高, 可以用一条近似直线Y=a + bX 来预估, 谓之线性回归
根据统计学理论, Y = a + bX 中
斜率 b = X,Y 离均差交乘积和 / X离均差平方和
常数项 a = Y平均值 - b * X平均值
具体实现代码如下:


    
    
    线性回归 Linear Regression


计算线性回归方程式 Y = a + bX

如果两组数据相关系数很高, 可以用一条近似直线Y=a + bX 来预估, 谓之线性回归
根据统计学理论, Y = a + bX 中
斜率 b = X,Y 离均差交乘积和 / X离均差平方和
常数项 a = Y平均值 - b * X平均值

X :
Y :
"; echo "Y = ".join(", ",$Y)."
"; echo "常数项 a = ".$a."
"; echo "斜率 b = ".$b."
"; echo "线性回归方程式 Y = ".$a." + (".$b.")X
"; echo "X 平均值 = ".$xavg."
"; echo "Y 平均值 = ".$yavg."
"; echo "X 离均差 = ".join(", ",$XMD)."
"; echo "Y 离均差 = ".join(", ",$YMD)."
"; echo "X,Y 离均差交乘积和 = ".$mdcross_sum."
"; echo "X 离均差平方和 = ".$xdif_square_sum."
"; } echo '
'; echo '计算两点之间的角度。'; $a = array('x' => 10, 'y' => 0); $c = array('x' => 80, 'y' => 80); $pi_v = atan2($c['y'] - $a['y'], $c['x'] - $a['x']); $n_v = rad2deg($pi_v); echo '弧度:',$pi_v,' 角度:',$n_v; ?>

根据我们前面提供的数据,可计算出
X = 0.04, 0.02
Y = 7, 6.5
常数项 a = 6
斜率 b = 25
线性回归方程式 Y = 6 + (25)X
X 平均值 = 0.03
Y 平均值 = 6.75
X 离均差 = 0.01, -0.01
Y 离均差 = 0.25, -0.25
X,Y 离均差交乘积和 = 0.005
X 离均差平方和 = 0.0002

你可能感兴趣的:(利用php进行线性回归)