MathPHP\Statistics\Regression\LOESS::evaluate PHP Method

evaluate() public method

Evaluate for x Use the smoothness parameter α to determine the subset of data to consider for local regression. Perform a weighted least squares regression and evaluate x.
public evaluate ( number $x ) : number
$x number
return number
    public function evaluate($x)
    {
        $α = $this->α;
        $λ = $this->λ;
        $n = $this->n;
        // The number of points considered in the local regression
        $Δx = Single::abs(Single::subtract($this->xs, $x));
        $αᵗʰΔx = Average::kthSmallest($Δx, $this->number_of_points - 1);
        $arg = Single::min(Single::divide($Δx, $αᵗʰΔx * max($α, 1)), 1);
        // Kernel function: tricube = (1-arg³)³
        $tricube = Single::cube(Single::multiply(Single::subtract(Single::cube($arg), 1), -1));
        $weights = $tricube;
        // Local Regression Parameters
        $parameters = $this->leastSquares($this->ys, $this->xs, $weights, $λ);
        $X = new VandermondeMatrix([$x], $λ + 1);
        return $X->multiply($parameters)[0][0];
    }