很多图表库都支持散点图的线性回归分析,可以显示线性回归很典型就是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();
}
}
对明天最好的准备就是不要虚度今日,算是对自己的勉励!