Last active
August 10, 2018 14:14
-
-
Save Vayel/40441b3fa95492b5a7c44ecd277b4002 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import scipy.stats | |
import numpy as np | |
def ks_test(real_series, simulated_series): | |
# `real_series` and `simulated_series` are lists of series, i.e. lists of lists. | |
# All series have the same size but we don't need to have as many real series as | |
# simulated series. | |
real_series, simulated_series = map(np.asarray, (real_series, simulated_series)) | |
n_steps = len(real_series[0]) | |
p_values = [0] * n_steps | |
for t in range(n_steps): | |
real_samples = real_series[:,t] | |
simulated_samples = simulated_series[:,t] | |
_, p_values[t] = scipy.stats.ks_2samp(real_samples, simulated_samples) | |
return p_values | |
def sliding_ks_test(real_data, simulated_data, sliding_step=1): | |
# `real_series` and `simulated_series` are lists of series, i.e. lists of lists. | |
# All simulated series have the same length T_sim and all real series have the | |
# same length T_real, but T_sim can be different from T_real. The shorter series | |
# will be the ones we will make slide over time. | |
real_data, simulated_data = map(np.asarray, (real_data, simulated_data)) | |
real_steps, simulated_steps = real_data.shape[1], simulated_data.shape[1] | |
delta_steps = abs(real_steps - simulated_steps) | |
if real_steps < simulated_steps: | |
data = simulated_data | |
pattern = real_data | |
else: | |
data = real_data | |
pattern = simulated_data | |
p_values = [] | |
first_step_compared = 0 | |
while first_step_compared <= delta_steps: | |
window = slide(first_step_compared, first_step_compared+pattern.shape[1]) | |
p_values.append(ks_test(data[:,window], pattern)) | |
first_step_compared += sliding_step | |
return p_values |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment