cubicReg property

List<num> cubicReg

Calculate quadratic regression of a set of points: Returns a list of form y = ax^3 + bx^2 + cx + d, with cubicReg[0] being a, cubicReg[1] being b, cubicReg[2] being c, and cubicReg[3] being d.

Implementation

List<num> get cubicReg {
  var yy = <double>[];
  var xx = <double>[];
  for (var numb in y) {
    yy.add(numb.toDouble());
  }
  for (var numb in x) {
    xx.add(numb.toDouble());
  }
  var xcol1 = List<double>.filled(xx.length, 1.0);
  var xcol3 = List<double>.filled(xx.length, 0);
  for (var i = 0; i <xx.length; i++) {
    xcol3[i] = pow(xx[i],2).toDouble();
  }
  var xcol4 = List<double>.filled(xx.length, 0);
  for (var i = 0; i <xx.length; i++) {
    xcol4[i] = pow(xx[i],3).toDouble();
  }
  var Y = Matrix([yy]).transpose();
  var X = Matrix([xcol1, xx, xcol3, xcol4]).transpose();
  var B = (X.transpose() * X).inverse() * X.transpose() * Y;
  var d = B[0][0];
  var c = B[1][0];
  var b = B[2][0];
  var a = B[3][0];
  return [a,b,c,d];
}