def METHOD_NAME(self, X):
    """ Method to approximate the tail sigma using
    log-linear extrapolation applied to tail average period
    """
    from chainladder.utils.utility_functions import num_to_nan
    if not hasattr(X, 'sigma_'):
        self.sigma_ = None
        self.std_err_ = None
    else:
        time_pd = self._get_tail_weighted_time_period(X)
        xp = X.sigma_.get_array_module()
        reg = WeightedRegression(axis=3, xp=xp).fit(None, xp.log(X.sigma_.values), None)
        sigma_ = xp.exp(time_pd * reg.slope_ + reg.intercept_)
        y = X.std_err_.values
        y = num_to_nan(y)
        reg = WeightedRegression(axis=3, xp=xp).fit(None, xp.log(y), None)
        std_err_ = xp.exp(time_pd * reg.slope_ + reg.intercept_)
        if self.tail_.values.flatten().sum() / xp.prod(self.tail_.shape) == 1.0:
            # If no tail, assume no variation
            sigma_ = sigma_ * 0
            std_err_ = std_err_* 0
        self.sigma_.values = xp.concatenate(
            (self.sigma_.values[..., :-1], sigma_[..., -1:]), axis=-1
        )
        self.std_err_.values = xp.concatenate(
            (self.std_err_.values[..., :-1], std_err_[..., -1:]), axis=-1
        )