def compute_measures(self, var, window=None): """ Computing some measures with the wind series Window is a dictionary with a keyword for the windoe size and a window length :return: """ if self.raw_data is None: raise NameError("Raw data is not loaded") if var > self.raw_data.shape[1]: raise NameError("Invalid variable number") dvals = {} dvals['SpecEnt'] = spectral_entropy(self.raw_data[:, var], sf=1) dvals['SampEnt'] = sample_entropy(self.raw_data[:, var], order=2) data = self.raw_data[:, var] for w in window: lw = window[w] length = int(data.shape[0] / lw) size = lw * length datac = data[:size] datac = datac.reshape(-1, lw) means = np.mean(datac, axis=1) vars = np.std(datac, axis=1) dvals[f'Stab{w}'] = np.std(means) dvals[f'Lump{w}'] = np.std(vars) return dvals
def compute_measures(self, var, window=None): """ Computing some measures with the wind series Window is a dictionary with a keyword for the windoe size and a window length :return: """ if self.raw_data is None: raise NameError("Raw data is not loaded") if var > self.raw_data.shape[1]: raise NameError("Invalid variable number") dvals = {} dvals['SpecEnt'] = spectral_entropy(self.raw_data[:, var], sf=1) dvals['SampEnt'] = sample_entropy(self.raw_data[:, var], order=2) data = self.raw_data[:, var] for w in window: print(w) lw = window[w] print(lw) length = int(data.shape[0] / lw) size = lw * length datac = data[:size] datac = datac.reshape(-1, lw) means = np.mean(datac, axis=1) vars = np.std(datac, axis=1) dvals[f'Stab{w}'] = np.std(means) dvals[f'Lump{w}'] = np.std(vars) # decompositions stl = STL(self.raw_data[:, var], period=lw) res = stl.fit() strength_seasonality = 1 - (np.var( res.resid)) / (np.var(res.observed - res.trend)) strength_trend = 1 - (np.var( res.resid)) / (np.var(res.observed - res.seasonal)) dvals[f'strength_seasonality{w}'] = strength_seasonality dvals[f'strength_trend{w}'] = strength_trend fig = res.plot() return dvals