/**
* Calculates the standard error of each of the regression coefficients.
*
* @return array
*/
public function getStandardErrorCoefficients() : array
{
if (is_null($this->SCoefficients)) {
$design = new Matrix($this->observations->getFeatures());
$inverted = $design->transpose()->multiplyMatrix($design)->inverse();
$diagonalVector = [];
for ($i = 0, $size = $inverted->getRowCount(); $i < $size; $i++) {
$diagonalVector[] = $inverted->get($i, $i);
}
$this->SCoefficients = (new Matrix([$diagonalVector]))->multiplyScalar($this->getMeanSquaredError())->map(function ($element) {
return sqrt($element);
})->toArray()[0];
}
return $this->SCoefficients;
}