很多图表库都支持散点图的线性回归分析,可以显示线性回归很典型就是google
chart与highchart都支持这个功能,通过散点数据计算线性回归得到公式,然后
插值生成即可。
线性回归数据分析
线性回归分析,用来对一组数据实现线性建模,分析线性走势,从而实现对未来
数据的走势预期,线性回归分析是最简单也是最基础的数据回归分析。
数学基础
抽取数据,计算线性回归计算,得到等式y = a + bx;
最重要的就是要得到斜率b与相关因子a。假设数据集D为(年龄与葡萄糖含量对比)
序号 |
Age-x值 |
Glucose-y值 |
X*Y |
X2 |
Y2 |
1 |
43 |
99 |
4257 |
1849 |
9801 |
2 |
21 |
65 |
1365 |
441 |
4225 |
3 |
25 |
79 |
1975 |
625 |
6241 |
4 |
42 |
75 |
3150 |
1764 |
5625 |
5 |
57 |
87 |
4959 |
3249 |
7569 |
6 |
59 |
81 |
4779 |
3481 |
6561 |
总和 |
247 |
486 |
20485 |
11409 |
40022 |
package com.gloomyfish.image.game; public class LineRegressionDemo { private double slope; private double intrepter; private double[][] xyData; public LineRegressionDemo(double[][] data) { this.xyData = data; } public void calculate() { double sumx=0, sumy=0, sumxy=0, sumxx=0, sumyy=0; for(int i=0; i<xyData.length; i++) { sumx += xyData[i][0]; sumy += xyData[i][1]; sumxy += xyData[i][0] * xyData[i][1]; sumxx += xyData[i][0] * xyData[i][0]; sumyy += xyData[i][1] * xyData[i][1]; } double n = xyData.length; intrepter = ((sumy * sumxx) - sumx * sumxy)/(n*sumxx - (sumx *sumx)); slope = (n * sumxy - (sumx* sumy))/(n*sumxx - (sumx * sumx)); System.out.println("slope = " + slope); System.out.println("intrepter = " + intrepter); } public static void main(String[] args) { double[][] data = new double[][]{{43, 99},{21,65}, {25, 79}, {42, 75}, {57,87}, {59,81}}; LineRegressionDemo demo = new LineRegressionDemo(data); demo.calculate(); } }对明天最好的准备就是不要虚度今日,算是对自己的勉励!