add practice

This commit is contained in:
Anton Romanov 2025-05-15 16:32:52 +04:00
parent 3199ce93bd
commit 4716dd866f
11 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,16 @@
def difference(timeseries, interval=1):
diff = []
for i in range(interval, len(timeseries)):
value = timeseries[i] - timeseries[i - interval]
diff.append(value)
return np.array(diff)
diff_ts = difference(trend_ts)
plt.figure(figsize=(12, 6))
plt.plot(time[1:], diff_ts, label='Äèôôåðåíöèðîâàííûé ðÿä')
plt.legend()
plt.title('Ðÿä ïîñëå äèôôåðåíöèðîâàíèÿ')
plt.show()
adf_test(diff_ts)

View File

@ -0,0 +1,8 @@
volatile_ts = np.exp(np.linspace(0, 2, n)) * np.random.normal(size=n)
plt.figure(figsize=(12, 6))
plt.plot(time, volatile_ts, label='Èñõîäíûé ðÿä')
plt.plot(time, np.log(volatile_ts), label='Ëîãàðèôìèðîâàííûé ðÿä')
plt.legend()
plt.title('Ëîãàðèôìè÷åñêîå ïðåîáðàçîâàíèå')
plt.show()

View File

@ -0,0 +1,12 @@
# Ñîçäàåì ñåçîííûé ðÿä
seasonal_ts = 5 * np.sin(np.linspace(0, 10*np.pi, n)) + np.linspace(0, 5, n) + np.random.normal(size=n)
# Ñåçîííîå äèôôåðåíöèðîâàíèå ñ ïåðèîäîì 30 äíåé
seasonal_diff = seasonal_ts[30:] - seasonal_ts[:-30]
plt.figure(figsize=(12, 6))
plt.plot(time, seasonal_ts, label='Èñõîäíûé ðÿä')
plt.plot(time[30:], seasonal_diff, label='Ñåçîííî äèôôåðåíöèðîâàííûé ðÿä')
plt.legend()
plt.title('Ñåçîííîå äèôôåðåíöèðîâàíèå')
plt.show()

View File

@ -0,0 +1,39 @@
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from statsmodels.tsa.stattools import adfuller, kpss
# Ïðèìåð âðåìåííîãî ðÿäà
np.random.seed(42)
n = 100
time = pd.date_range(start='2020-01-01', periods=n, freq='D')
stationary_ts = np.random.normal(loc=0, scale=1, size=n)
trend_ts = np.linspace(0, 10, n) + stationary_ts
plt.figure(figsize=(12, 6))
plt.plot(time, stationary_ts, label='Ñòàöèîíàðíûé ðÿä')
plt.plot(time, trend_ts, label='Íåñòàöèîíàðíûé ðÿä ñ òðåíäîì')
plt.legend()
plt.title('Âèçóàëüíàÿ ïðîâåðêà ñòàöèîíàðíîñòè')
plt.show()
def adf_test(timeseries):
print("Ðåçóëüòàòû òåñòà Äèêè-Ôóëëåðà:")
dftest = adfuller(timeseries, autolag='AIC')
dfoutput = pd.Series(dftest[0:4],
index=['Òåñòîâàÿ ñòàòèñòèêà', 'p-value',
'Êîëè÷åñòâî ëàãîâ', 'Êîëè÷åñòâî íàáëþäåíèé'])
for key, value in dftest[4].items():
dfoutput[f'Êðèòè÷åñêîå çíà÷åíèå ({key})'] = value
print(dfoutput)
if dftest[1] <= 0.05:
print("Âûâîä: ðÿä ñòàöèîíàðíûé (îòâåðãàåì H0)")
else:
print("Âûâîä: ðÿä íåñòàöèîíàðíûé (íå îòâåðãàåì H0)")
adf_test(stationary_ts)
print("\n")
adf_test(trend_ts)

Binary file not shown.

BIN
PA/datasets/NN3_REDUCED.xls Normal file

Binary file not shown.

BIN
PA/datasets/cif-dataset.xls Normal file

Binary file not shown.

BIN
PA/datasets/statistic.xls Normal file

Binary file not shown.

Binary file not shown.