Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- from functools import lru_cache
- import numpy as np
- class RandomProcess(object):
- def __init__(self, filename=None, series=None):
- if filename:
- with open(filename, 'r') as file:
- self.series = np.array(json.load(file))
- if series:
- self.series = np.array(series)
- def __len__(self):
- return self.series.size
- @lru_cache(maxsize=None)
- def dispersion(self):
- return sum(map(lambda item: (item - self.average()) ** 2, self.series)) / (self.series.size - 1)
- @lru_cache(maxsize=None)
- def average(self):
- return self.series.mean()
- def std(self):
- return self.dispersion() ** 0.5
- @lru_cache(maxsize=None)
- def correlation_function(self, k):
- k = abs(k)
- result = 0
- for j in range(self.series.size - k):
- result += (self.series[j] - self.average()) * (self.series[j + k] - self.average())
- return result / (self.series.size - k - 1)
- def normalized_correlation(self, k):
- return self.correlation_function(k) / self.dispersion()
- @lru_cache(maxsize=None)
- def correlation_interval(self):
- interval = 1000
- inv_exp = np.exp(-1)
- while abs(self.normalized_correlation(interval)) < inv_exp:
- interval -= 1
- return interval
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement