我使用apache common_math库来计算回归参数。如图2和3行所示,将2d数组分配给单个数组。当我使用相同的代码时,
我得到错误:
"类型不匹配错误:无法从双精度[][]转换为双精度[]
OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
double[] x = new double[6][];
x[0] = new double[]{0, 0, 0, 0, 0};
x[1] = new double[]{2.0, 0, 0, 0, 0};
x[2] = new double[]{0, 3.0, 0, 0, 0};
x[3] = new double[]{0, 0, 4.0, 0, 0};
x[4] = new double[]{0, 0, 0, 5.0, 0};
x[5] = new double[]{0, 0, 0, 0, 6.0};
regression.newSample(y, x);
为什么会这样?这是如何运作的呢?
OLS回归的更多细节在这里
Case 1:
double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
您正在创建一个带有值的1D数组,并立即插入它。工作正常
Case 2:
double[] x = new double[6][];
你正在声明一个1D数组,并试图分配一个2D数组。这是非法的
将声明更改为2D或初始化为1D
有效的声明将是
double[] x = new double[6]; // 1D
或
double[][] x = new double[6][lenghtYouWant]; //2D
在看到插入之后,你想要一个2D数组。要成功编译下面的代码,需要将声明更改为
double[][] x = new double[6][];