Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.35 KB | None | 0 0
  1. import json
  2. from functools import lru_cache
  3.  
  4. import numpy as np
  5.  
  6.  
  7. class RandomProcess(object):
  8.     def __init__(self, filename=None, series=None):
  9.         if filename:
  10.             with open(filename, 'r') as file:
  11.                 self.series = np.array(json.load(file))
  12.         if series:
  13.             self.series = np.array(series)
  14.  
  15.     def __len__(self):
  16.         return self.series.size
  17.  
  18.     @lru_cache(maxsize=None)
  19.     def dispersion(self):
  20.         return sum(map(lambda item: (item - self.average()) ** 2, self.series)) / (self.series.size - 1)
  21.  
  22.     @lru_cache(maxsize=None)
  23.     def average(self):
  24.         return self.series.mean()
  25.  
  26.     def std(self):
  27.         return self.dispersion() ** 0.5
  28.  
  29.     @lru_cache(maxsize=None)
  30.     def correlation_function(self, k):
  31.         k = abs(k)
  32.         result = 0
  33.         for j in range(self.series.size - k):
  34.             result += (self.series[j] - self.average()) * (self.series[j + k] - self.average())
  35.         return result / (self.series.size - k - 1)
  36.  
  37.     def normalized_correlation(self, k):
  38.         return self.correlation_function(k) / self.dispersion()
  39.  
  40.     @lru_cache(maxsize=None)
  41.     def correlation_interval(self):
  42.         interval = 1000
  43.         inv_exp = np.exp(-1)
  44.         while abs(self.normalized_correlation(interval)) < inv_exp:
  45.             interval -= 1
  46.         return interval
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement