Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import datetime
- import math
- import numpy as np
- import matplotlib.pyplot as plt
- import pandas as pd
- def plot(a, b):
- # Создание данных для x и y
- x = np.linspace(-10, 10, 100) # Создание массива x от -10 до 10
- y = a * x + b # Вычисление значений y в соответствии с уравнением прямой
- # Построение графика
- plt.plot(x, y)
- # Добавление осей и заголовка
- plt.xlabel('x')
- plt.ylabel('y')
- plt.title('Апрокримезирующая прямая')
- # Отображение графика
- plt.show()
- def hurst(X):
- L = len(X)
- plt.plot(X)
- plt.show()
- if L < 20:
- raise ValueError("Временной ряд должен содержать как минимум 20 точек данных.")
- pmax = 10
- dX = []
- s = []
- e = []
- n = []
- for p in range(1, pmax + 1):
- for i in range (0, L - pmax):
- dX.append(X[i+p]-X[i])
- s.append(np.std(dX))
- e.append(math.log(p))
- n.append(math.log(s[-1]))
- a, b = np.polyfit(e, n, 1)
- print(f"a = {a:.07f}, b = {b:07f}")
- plot(a, b)
- #print("p\t s\t\t\t\t\t e\t\t\t\t\t\t\ n" )
- data = {'s': s, 'e': e, 'n': n}
- df = pd.DataFrame(data)
- #for f in range(0, 10):
- #print(f+1, " ", s[f], " ", e[f], " ", n[f])
- #return H
- print(df)
- val = []
- date = []
- r = []
- TEST = int(input("Введите год "))
- with open('JPY.csv', 'r') as cf:
- reader = csv.reader(cf)
- skip = True
- for row in reader:
- if skip:
- skip = False
- continue
- s = row[0].split('\t')
- t = s[0][6:10:1]
- #t = int(t)
- x = 1000
- for it in t:
- r.append(int(it)*x)
- x = x/10
- test = 0
- for it in r:
- test+=it
- #print(test)
- r.clear()
- if test == TEST:
- date.append(s[0])
- val.append(float(s[-1].replace(',', '.')))
- #print(s[0])
- #print(s[-1].replace(',', '.'))
- cf.close()
- #for i in range(len(val)):
- # print(date[i], " -- ", val[i])
- date.reverse()
- val.reverse()
- #print(date)
- hurst(val)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement