Source code for pyglimer.utils.statistics
'''
Toolbox for statistical tools to quantify errors in receiver functions.
:copyright:
The PyGLImER development team (makus@gfz-potsdam.de).
:license:
GNU Lesser General Public License, Version 3
(https://www.gnu.org/copyleft/lesser.html)
:author:
Peter Makus (makus@gfz-potsdam.de)
Created: Monday, 27th September 2021 03:14:17 pm
Last Modified: Thursday, 21st October 2021 10:23:01 am
'''
from typing import List
import numpy as np
[docs]def stack_case_resampling(data: np.ndarray, b: int = 1000) -> List[np.ndarray]:
"""
Monte Carlo Case resampling algorithm that can be used with single station
RF stacks (aka bootstrap).
:param data: Moveout corrected receiver function data that is used for the
bootstrap. Given in form of a 2D matrix -> 1 line = 1 RF.
:type data: np.ndarray
:param b: Number of iterations that the bootstrap is supposed to run.
Defaults to 1000
:type b: int, optional
:return: A list with each of the boot strapped stacks / averages.
:rtype: List[np.ndarray]
"""
data = np.array(data)
rstack = []
for _ in range(b):
resampled = np.empty_like(data)
for ni, _ in enumerate(resampled):
n = np.random.randint(0, data.shape[0])
resampled[ni, :] = data[n, :]
rstack.append(np.average(resampled, axis=0))
return rstack