美文网首页
java实现简单线性回归(判定系数)

java实现简单线性回归(判定系数)

作者: lazyM | 来源:发表于2020-06-23 15:02 被阅读0次

判定系数

  coefficient of determination 为估计的回归方程提供拟合优度的度量。

代码

1、demo

package com.math.demo;

import com.math.regression.RegressionEquation;
import com.math.regression.RegressionModel;
/***
 * 
 * @author miaoyibo
 *
 */
public class RegressionDemo {

    public static void main(String[] args) {
        double[] dependentValues= {58,105,88,118,117,137,157,169,149,202};
        double[] independentValues= {2,6,8,8,12,16,20,20,22,26};
        RegressionEquation re=new RegressionEquation(dependentValues, independentValues);
        RegressionModel regressionModel = re.getRegressionModel();
        System.out.println("b0=="+regressionModel.getB0());
        System.out.println("b0=="+regressionModel.getB1());
        System.out.println("coefficient of determination=="+regressionModel.getR());
    }

}

2、model

package com.math.regression;

public class RegressionModel {
    //y轴截距
    private double b0;
    //斜率
    private double b1;
    //判定系数
    private double r;
    public double getB0() {
        return b0;
    }
    public void setB0(double b0) {
        this.b0 = b0;
    }
    public double getB1() {
        return b1;
    }
    public void setB1(double b1) {
        this.b1 = b1;
    }
    public double getR() {
        return r;
    }
    public void setR(double r) {
        this.r = r;
    }
    
    

}

3、方法类

package com.math.regression;

import org.apache.commons.math3.stat.descriptive.moment.Mean;
/***
 * least squares method
 * @author miaoyibo
 *
 */
public class RegressionEquation {
    
    private double[] dependentValues;
    
    private double[] independentValues;

    public RegressionEquation(double[] dependentValues, double[] independentValues) {
        this.dependentValues = dependentValues;
        this.independentValues = independentValues;
    }
    
    public double getMean(double[] dd) {
        Mean meanUtil = new Mean();
        return meanUtil.evaluate(dd);
    }

    public double[] calRegression() {
        if(dependentValues.length!=independentValues.length) {
            return null;
        }
        Mean meanUtil = new Mean();
        double xmean=meanUtil.evaluate(independentValues);
        double ymean=meanUtil.evaluate(dependentValues);
        double numerator=0d;
        double denominator=0d;
        for(int i=0;i<dependentValues.length;i++) {
            double x=independentValues[i];
            double y=dependentValues[i];
            numerator=numerator+(x-xmean)*(y-ymean);
            denominator=denominator+(x-xmean)*(x-xmean);
        }
        double b1=numerator/denominator;
        double b0=ymean-b1*xmean;
        double[] model= {b0,b1};
        return model;
    }
    //判定系数
    public double getCoefficientOfDetermination() {
        double[] model = calRegression();
        double b0=model[0];
        double b1=model[1];
        //calculate SSE SST
        double sse=0;
        double sst=0;
        Mean meanUtil = new Mean();
        double mean=meanUtil.evaluate(dependentValues);
        for(int i=0;i<dependentValues.length;i++) {
            double yi=independentValues[i]*b1+b0;
            double y=dependentValues[i];
            sse=sse+(y-yi)*(y-yi);
            sst=sst+(y-mean)*(y-mean);
        }
        return (sst-sse)/sst;
    }
    public RegressionModel getRegressionModel() {
        RegressionModel model=new RegressionModel();
        double[] regression = calRegression();
        double coefficientOfDetermination = getCoefficientOfDetermination();
        model.setB0(regression[0]);
        model.setB0(regression[1]);
        model.setR(coefficientOfDetermination);
        return model;
        
    }
}

相关文章

  • java实现简单线性回归(判定系数)

    判定系数 代码 1、demo 2、model 3、方法类

  • 2020-05-21

    我们已经了解了回归,甚至编写了我们自己的简单线性回归算法。并且,我们也构建了判定系数算法来检查最佳拟合直线的准确度...

  • 线性回归

    [Chapter 3 - 线性回归] 简单线性回归 形如,其中 截距为 为斜率, 和 被称为系数或者参数 计算模型...

  • 线性回归代码实现

    线性回归是比较常用的模型。本文会简单介绍线性回归的原理,以及如何用代码实现线性回归模型。 什么是线性回归 简单举一...

  • tensorflow 实现线性回归

    利用tensorflow 实现线性回归简单例子。

  • java实现简单线性回归

    术语及定义 1、因变量 2、自变量 3、回归分析 4、简单线性回归 计算方法 最小二乘法,公式如下: 实现代码

  • Pytorch实现共享单车数量预测

    之前分享过Pytorch实现简单线性回归算法的内容:Pytorch实现简单的线性回归算法,这次分享一下用pytor...

  • 线性模型和正则化

    仔细想想线性回归,线性回归的系数就是权重。大于0正相关,小于0负相关。因此通过查看拟合模型的系数,就可以得到系数的...

  • Nonlinear Regression

    对于线性回归,能表示成变量的一个线性变换,因此直接表现为的系数。注意,在线性回归中,只要系数是线性的就行,每一个可...

  • 统计学(59)-t检验用于回归系数的检验

    1、回归系数检验 (1)在线性回归中,我们需要检验回归系数(斜率)是否为0, 因为如果回归系数为0,则说明自变量对...

网友评论

      本文标题:java实现简单线性回归(判定系数)

      本文链接:https://www.haomeiwen.com/subject/fplhfktx.html