def METHOD_NAME(self, X):
    """This function is called internally to perform subspace outlier 
    detection algorithm.
    Returns
    -------
    anomaly_scores : numpy array of shape (n_samples,)
        The anomaly score of the input samples.
    """
    ref_inds = self._snn(X)
    anomaly_scores = np.zeros(shape=(X.shape[0],))
    for i in range(X.shape[0]):
        obs = X[i]
        ref = X[ref_inds[i,],]
        means = np.mean(ref, axis=0)  # mean of each column
        # average squared distance of the reference to the mean
        var_total = np.sum(np.sum(np.square(ref - means))) / self.ref_set
        var_expect = self.alpha * var_total / X.shape[1]
        var_actual = np.var(ref, axis=0)  # variance of each attribute
        var_inds = [1 if (j < var_expect) else 0 for j in var_actual]
        rel_dim = np.sum(var_inds)
        if rel_dim != 0:
            anomaly_scores[i] = np.sqrt(
                np.dot(var_inds, np.square(obs - means)) / rel_dim)
    return anomaly_scores