Skip to content

Commit

Permalink
drafting AIC/BIC function
Browse files Browse the repository at this point in the history
  • Loading branch information
mmaelicke committed Feb 1, 2022
1 parent d1b9670 commit 93b3ece
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions skgstat/util/cross_validation.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
from typing import Callable, List
import numpy as np
from itertools import cycle
from scipy.spatial.distance import squareform
from numpy.linalg import inv, det

from skgstat.Kriging import OrdinaryKriging
from skgstat.Variogram import Variogram
from skgstat.util.likelihood import get_likelihood


def _interpolate(idx: int, variogram) -> float:
Expand Down Expand Up @@ -70,3 +75,35 @@ def jacknife(
else:
# MAE
return np.nansum(np.abs(deviations)) / len(deviations)


def aic(variogram: Variogram) -> float:
like = get_likelihood(variogram)

# get parameters
params = variogram.parameters
k = len(params)
if params[-1] < 1e-6:
k -= 1

# get maximum log-likelihood
log_like = like(params)

# return AIC
return 2 * k - 2 * log_like


def bic(variogram: Variogram) -> float:
like = get_likelihood(variogram)

# get parameters
params = variogram.parameters
k = len(params)
if params[-1] < 1e-6:
k -= 1

# get maximum log-likelihood
log_like = like(params)

# return BIC
return 2 * np.log(k) - 2 * log_like

0 comments on commit 93b3ece

Please sign in to comment.