Source code for elicit.extras.utils
# noqa SPDX-FileCopyrightText: 2024 Florence Bockting <florence.bockting@tu-dortmund.de>
#
# noqa SPDX-License-Identifier: Apache-2.0
import tensorflow as tf
import tensorflow_probability as tfp
[docs]
def log_R2(ypred, epred):
var_epred = tf.math.reduce_variance(epred, -1)
# variance of difference between ypred and epred
var_diff = tf.math.reduce_variance(tf.subtract(ypred, epred), -1)
var_total = var_epred + var_diff
# variance of linear predictor divided by total variance
log_R2 = tf.subtract(tf.math.log(var_epred), tf.math.log(var_total))
return log_R2
[docs]
def pearson_correlation(prior_samples):
corM = tfp.stats.correlation(prior_samples, sample_axis=1, event_axis=-1)
tensor = tf.experimental.numpy.triu(corM, 1)
tensor_mask = tf.experimental.numpy.triu(corM, 1) != 0.0
cor = tf.boolean_mask(tensor, tensor_mask, axis=0)
diag_elements = int((tensor.shape[-1] * (tensor.shape[-1] - 1)) / 2)
return tf.reshape(cor, (prior_samples.shape[0], diag_elements))