今天做了一个小demo测试一下线性回归直线拟合。
package htt.wave.notification.qztest;
/**
* @authorseerhuitao 线性回归编程
* @create2019/5/10
*/
public class ClineNone {
//求出来的b值
public static double getB(double[] x,double[] y,int j){
//首先先保证xy是数量相同的
double b=0;
//先对x求平均
double xp=0;
double yp=0;
for(int i=0;i<j;i++){
xp+=x[i];
yp+=y[i];
}
xp=xp/(double)j;
yp=yp/(double)j;
//第二步
// 计算一系列的差值 x-xp,y-yp
double xpp=0;
double ypp=0;
double zpp=0;
double xxp=0;
for(int k=0;k<j;k++){
xpp =(x[k]-xp);
ypp =(y[k]-yp);
zpp+=(xpp*ypp);
xxp+=(xpp*xpp);
}
b=zpp/xxp;
return b;
}
//测试
public static void main(String[] args)
{
double[] x={1,2,3,4,6,9};
double[] y={2,5,8,1,2,4};
double f=getB(x,y,x.length);
System.out.println(f+"---------------------------");
}
}
把b值求出来就是求出来,直线拟合的斜率,如果b>0,表示上升,如果b1>b表示b1数据比b上升的更快,如果b1<b表示上升的慢。
如果b<0,表示下降,如果b1>b表示b1数据比b下降的慢,如果b1<b表示下降的快。