quarReg property

List<num> quarReg

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

Implementation

List<num> get quarReg {
  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 xcol5 = List<double>.filled(xx.length, 0);
  for (var i = 0; i <xx.length; i++) {
    xcol5[i] = pow(xx[i],4).toDouble();
  }
  var Y = Matrix([yy]).transpose();
  var X = Matrix([xcol1, xx, xcol3, xcol4, xcol5]).transpose();
  var B = (X.transpose() * X).inverse() * X.transpose() * Y;
  var e = B[0][0];
  var d = B[1][0];
  var c = B[2][0];
  var b = B[3][0];
  var a = B[4][0];
  return [a,b,c,d,e];
}