java实现多元线性回归

一个例子

约翰逊过滤股份公司对遍布南佛罗里达州的水过滤系统提供维修保养服务。当顾客的水过滤系统出现故障时,他们就要与约翰逊公司进行联系,请求公司对他们的水过滤系统进行维修。为了估计服务时间和服务成本,约翰逊公司的管理人员希望对顾客的每一次维修请求预测必要的维修时间。所以,按小时计算的维修时间是因变量。管理人员认为,维修时间依赖两个因素:从最近一次维修服务至今水过滤系统已经使用的时间和需要维修的故障类型。由10次维修服务组成一个样本,有关资料数据如下1

维修服务请求最近一次维修服务至今的时间(x1维修的故障类型(x2维修时间(y1
1212.9
2603.0
3814.8
4301.8
5212.9
6714.9
7904.2
8804.8
9414.4
10614.5

分析计算

我们计算利用的工具是Apache Commons Math2

准备数据
OLSMultipleLinearRegression oregression = new OLSMultipleLinearRegression();
		double[] y = new double[]{2.9, 3.0, 4.8, 1.8, 2.9,4.9,4.2,4.8,4.4,4.5};
		double[][] x = new double[10][2];
		x[0] = new double[]{2, 1};
		x[1] = new double[]{6, 0};
		x[2] = new double[]{8, 1};
		x[3] = new double[]{3, 0};
		x[4] = new double[]{2, 1};
		x[5] = new double[]{7, 1};
		x[6] = new double[]{9, 0};
		x[7] = new double[]{8, 0};
		x[8] = new double[]{4, 1};
		x[9] = new double[]{6, 1};

y代表的是维修时间,为因变量;二维数组x代表最近一次维修服务至今的时间和故障类型,为自变量,其中数字10 表示维修服务的请求次数,也即样本的数量,数字2表示自变量的个数(这里例子中有2个变量:x1,x2),每个一维数组对应一组自变量的值。

计算
oregression.newSampleData(y, x);
查看结果

模型参数

double[] beta = oregression.estimateRegressionParameters();
for (double d : beta) {
	System.out.println(d);
}

打印的结果:

0.9304953560371505
0.38761609907120753
1.2626934984520124

数组beta中的值按顺序依次代表回归方程中的常量、x1系数、x2系数,因此,最终的回归方程为:
y = 0.93 + 0.3876 x 1 + 1.263 x 2 y=0.93+0.3876x_1+1.263x_2 y=0.93+0.3876x1+1.263x2
该方程的标准差S:

double s = oregression.estimateRegressionStandardError();

判定系数R2:

double rSquared = oregression.calculateRSquared();

参考

- [1] 《商务与经济统计》
- [2] http://commons.apache.org/proper/commons-math/userguide/stat.html#a1.4_Simple_regression
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值