4.1.4 Kết quả dự báo
- Thực hiện dự báo với công thức : Yt = Tt x St - Thực hiện tính Yt, ta thu được kết quả như Bảng 14 :
Bảng 14: Bảng kết quả Yt = St * Tt
-Ta thực hiện dự báo cho quý 2, 3, 4 năm 2019, vớ kết quả dự báo như Bảng 15:
- Tiếp tục dự báo từ năm 2020 đến năm 2026, có bảng kết quả Bảng 16:
Bảng 16: Bảng kết quả dự báo quý năm 2020 đến 2026
- Biểu đồ minh họa của quá trình thực hiện mơ hình dự báo được thể hiện như Hình 6 :
4.2 Xây dựng ứng dụng dự báo theo mơ hình ARIMA
4.2.1 Xây dựng chương trình phân tích và dự báo dự báo doanh thu hiện thực bằng Python thu hiện thực bằng Python
4.2.1.1 Khai báo thư viện và xử lý số liệu :
- Khai báo thư viện : # coding=utf-8 import warnings import itertools import pandas as pd import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt plt.style.use('bmh')
import statsmodels.api as sm import
statsmodels.tsa.api as smt import statsmodels.formula.api as smf
from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.seasonal import seasonal_decompose from statsmodels.tsa.ar_model import AR
from statsmodels.tsa.arima_model import ARMA, ARIMA from statsmodels.tsa.statespace.sarimax import
SARIMAX from math import sqrt ,[8]
Khai báo đường dẫn file CSV và tạo datafarm [9],[10]:
df =
pd.read_csv('d:\caohoc\CODELUANVAN\ARIMA_Yt.csv') dates = pd.date_range(start='2003-01-01', freq='MS',
periods=len(df))
# Tạo thời gian dữ liệu từ file csv
import calendar
df['Month'] = dates.month
df['Month'] = df['Month'].apply(lambda x: calendar.month_abbr[x])
df['Year'] = dates.year
# Xóa file dữ liệu và tạo lại data
df.drop(['Month-Year'], axis=1, inplace=True)
df.rename(columns={'Sales_Yt':'Golf-Sales'}, inplace=True) df = df[['Month', 'Year', 'Golf-Sales']]
# Tạo dataframe, Set time-series dataframe
df.set_index(dates, inplace=True)
df2 = df['Golf-Sales']
- Vẽ biểu đồ với số liệu doanh thu Golf: # Tạo biểu đồ số liệu ban đầu
df2.plot(figsize=(15, 6))
plt.ylabel('Doanh thu golf theo tháng qua các năm') plt.xlabel('Thời gian từ 01-2003 đến 03-2019')
plt.title('Doanh thu golf đơn vị tính 1.000.000 vnđ') plt.show()
- Biểu đồ doanh thu golf như Hình 7 :
Hình 7: Biểu đồ minh họa doanh thu golf theo số liệu thực
4.2.1.2 Xây dựng các mơ hình trung bình (Moving Average):
- Xây dựng mơ hình dự báo theo MA với trung bình theo 4, 6, 8, 12 tháng qua các năm.
# Trung bình tháng 4, 6, 8, 12
fig, axes = plt.subplots(2, 2, sharey=False, sharex=False) fig.set_figwidth(16)
fig.set_figheight(8)
# Trung bình 4 tháng
axes[0][0].plot(df2.index, df2, label='Số liệu ban đầu (Original)') axes[0][0].plot(df2.index, df2.rolling(window=4).mean(), label='Trung
bình 4 tháng')
axes[0][0].set_xlabel("Năm 2003 đến 2018")
axes[0][0].set_ylabel("Doanh thu golf 2003 đến 2018 ") axes[0][0].set_title(" Trung bình 4 tháng (4MA)")
# Trung bình 6 tháng
axes[0][1].plot(df2.index, df2, label='Số liệu ban đầu (Original)') axes[0][1].plot(df2.index, df2.rolling(window=6).mean(), label='Trung
bình 6 tháng')
axes[0][1].set_xlabel("Năm 2003 đến 2018")
axes[0][1].set_ylabel("Doanh thu golf 2003 đến 2018") axes[0][1].set_title("Trung bình 6 tháng (6MA)")
axes[0][1].legend(loc='best')
# Trung bình 8 tháng
axes[1][0].plot(df2.index, df2, label='Số liệu ban đầu (Original)') axes[1][0].plot(df2.index, df2.rolling(window=8).mean(), label='Trung
bình 8 tháng')
axes[1][0].set_xlabel("Năm 2003 đến 2018")
axes[1][0].set_ylabel("Doanh thu golf 2003 đến 2018") axes[1][0].set_title(" Trung bình 8 tháng (8MA)") axes[1][0].legend(loc='best')
# Trung bình 12 tháng
axes[1][1].plot(df2.index, df2, label='Số liệu ban đầu (Original)') axes[1] [1].plot(df2.index, df2.rolling(window=12).mean(), label='Trung bình 12
tháng')
axes[1][1].set_xlabel("Năm 2003 đến 2018")
axes[1][1].set_ylabel("Doanh thu golf 2003 đến 2018") axes[1][1].set_title("Trung bình 12 tháng (12MA)") axes[1][1].legend(loc='best')
plt.tight_layout() plt.show()
- Kết quả của mơ hình dự báo theo 4, 6, 8,12 Hình 8:
- Độ lệch chuẩn và đường trung bình của 12 tháng :
✓ Xây dựng code độ lệch trung bình :
# Độ lệch trung bình và độ lệch chuẩn (Rolling Mean & Standard
Deviation)
rolmean = y.rolling(window=12).mean() rolstd = y.rolling(window=12).std() #Plot
rolling statistics:
orig = plt.plot(y, label='Dữ liệu gốc (Original)')
mean = plt.plot(rolmean, label='Độ lệch trung bình Mean') std = plt.plot(rolstd, label = 'Độ lệch chuẩn Std')
plt.legend(loc='best')
plt.title('Độ lệch trung bình và độ lệch chuẩn') plt.show()
✓ Kết quả độ lệch chuẩn trung bình 12 tháng theo Hình 9 :
Hình 9: Kết quả dự báo trung bình MA
- Thử nghiệm (Dickey –Fuller Test) :
✓ Xây dựng đoạn code thử nghiệm :
# Perform Dickey-Fuller test: (Mơ hình Test Dickey)
from statsmodels.tsa.stattools import adfuller
print('Results of Dickey-Fuller Test:')
dftest = adfuller(df2, autolag='AIC') dfoutput = pd.Series(dftest[0:4], index=['Test Statistic', 'p-
value', '#lags Used', 'Giá trị Observations Used'])
dfoutput['Critical Value (%s)'%key] = value
print(dfoutput)
✓ Kết quả thử nghiệm Dickey - Fuller Test với P- Value : 0.927364 và giá trị dự thử nghiệm như sau :
Results of Dickey-Fuller Test: Test Statistic -0.286720
P-value 0.927364
#lags Used 13.000000 Giá trị Observations Used 181.000000 Critical Value (1%) -3.467005 Critical Value (5%) -2.877644 Critical Value (10%) -2.575355 - Tính thời vụ và phân rã doanh thu Golf theo tháng :
✓ Xây dựng code phân rã doanh thu theo tháng
# Dữ liệu doanh thu Golf hàng tháng phân loại theo năm 2003 đến 2019
year_sales = pd.pivot_table(df, values ="Golf-Sales", columns =
"Month", index = "Year")
year_sales = year_sales[['Jan','Feb','Mar', 'Apr', 'May', 'Jun', 'Jul',
'Aug', 'Sep', 'Oct', 'Nov', 'Dec']] print(year_sales)
year_sales.boxplot()
✓ Biểu đồ phâ tích kết quả phân rã doanh thu theo tháng theo Hình 10:
- Phân rã doanh thu theo hồi quy tuyến tính theo : Xu hướng, mùa, Random
✓ Phân rã doanh thu theo thời gian
# Phân rã dữ liệu theo cấp số nhân decomposition
= sm.tsa.seasonal_decompose(df2,
model='multiplicative')
fig = decomposition.plot() fig.set_figwidth(12)
fig.set_figheight(8)
fig.suptitle('Phân tích số liệu cấp số nhân theo thời gian
(Multiplicative time series)')
plt.show()
✓ Kết quả theo biểu đồ phân tích số liệu theo thời gian theo Hình 11:
4.2.1.3 Xây dựng mơ hình ARIMA kết hợp
Xây dựng mơ hình ARIMA sự kết hợp của 3 phần gồm AR (Auto Regressive), I (Integrated), MA (Moving Average). Ký hiệu cho mơ hình ARIMA(p,d,q). Các ký hiệu p, d và q là ứng với từng phần AR, I và MA.
Xây dựng với công thức với I (Integrated): Xây dựng thử nghiệm với khơng có sự khác biệt d = 0, có sự khác biệt d = 1, … Khơng có sự khác biệt, d = 0: Y't = Yt
Có sự khác biệt thứ 1 với, d = 1: Y' t = Yt – Y t-1
Sự khác biệt thứ 2 với, d = 1: Y' t = Yt – Y t-1 - (Y t-1 - Y t- 2) = Y t - 2 * Y t-1 + Y t-2 - Xây dựng dịng lệnh phân tích sự khác biệt với cùng một số liệu.
# Doanh thu Golf theo mơ hình doanh thu và 1 khác
fig, axes = plt.subplots(1, 2, sharey=False, sharex=False) fig.set_figwidth(12)
fig.set_figheight(4)
axes[0].plot(df.index, df['Golf-Sales']) axes[0].set_xlabel("Year")
axes[0].set_ylabel("Goft-Sales") axes[0].set_title("Doanh thu Golf")
axes[1].plot(df.index, df['Golf-Sales'].diff(periods=1)) axes[1].set_xlabel("Year")
axes[1].set_ylabel("Differenced Doanh thu Golf ")
axes[1].set_title("1$^{st}$ Differenced Doanh thu Golf") plt.tight_layout()
plt.show()
- Biểu đồ doanh thu và kết quả khác biệt 1 theo Hình 12:
- Xây dựng doanh thu loại bỏ xu hướng:
# Loại bỏ xu hướng 1st Differencing (d=1) | Yt′=Yt−Yt−1
plt.figure(figsize=(10, 5)) plt.plot(df2.diff(periods=1)) plt.xlabel('Năm (Year)')
plt.ylabel('Doanh thu Golf (Golf Sales)')
-Biểu đồ donah thu loại bỏ xu hướng như Hình 13:
Hình 13: Biểu đồ doanh thu loại bỏ xu hướng
- Xây dựng số liệu cố định phương sai, phương trình sau đây biến đổi Log của dữ liệu doanh thu Golf: Ytnew
= log10(Yt)
# Ytnew =log10(Yt)
plt.figure(figsize=(10, 5)) plt.plot(np.log10(df2))
plt.xlabel('Year') plt.ylabel('Log
(Doanh thu Golf)')
-Biểu đồ biến đổi Log của doanh thu như Hình 14:
- Xây dựng số liệu cố định phương sai với sự khác biệt d = 1 với phương trình biến đổi Log của dữ liệu doanh thu Golf: Ytnew = log10(Yt) - log10(Yt -1)
# Ytnew=log10(Yt)−log10(Yt−1) với d=1
plt.figure(figsize=(10, 5))
plt.plot(np.log10(df2).diff(periods=1)) plt.xlabel('Year')
plt.ylabel('Differenced Log Yt - Yt -1 (Doanh thu Golf)')
- Biểu đồ biến đổi Log khác 1 như Hình 15:
Hình 15: Biểu đồ biến đổi với Log khác 1
- Vẽ sơ đồ ACF và PACF để xác định mơ hình AR và MA tiềm năng:
✓ Xây dựng dịng lệnh của chương trình tạo sơ đồ hệ số tự tương quang (ACF) và tương quan một phần (PACF) để xác định các mẫu ổn định trong dữ liệu:
# same as ts_log_diff = ts_log - ts_log.shift(periods=1)
df2_log = np.log10(df2) df2_log.dropna(inplace=True) df2_log_diff = df2_log.diff(periods=1)
df2_log_diff.dropna(inplace=True)
fig, axes = plt.subplots(1, 2, sharey=False,
sharex=False)
fig.set_figwidth(12) fig.set_figheight(4)
smt.graphics.plot_acf(df2_log_diff, lags=30, ax=axes[0],
alpha=0.5)
smt.graphics.plot_pacf(df2_log_diff, lags=30, ax=axes[1],
alpha=0.5)
✓ Sơ đồ hệ số tự tương quan (ACF) và một phần (PACF) như Hình 16:
Hình 16: Sơ đồ tự tương quan (AFC) và (PACF)
4.2.1.4 Xác định mơ hình ARIMA phù hợp nhất
- Để phù hợp dữ liệu doanh thu Golf theo chuỗi thời gian với mơ hình ARIMA theo mùa ta xác định các gía trị của mơ hình ARIMA (p, d, q) (P, D, Q) để tối ứu hóa số liệu quan tâm AIC hoặc BIC. Ta gắn kết mơ hình ARIMA với chức SARIMAX đánh giá các điểm tốt nhất cảu AIC, BIC.
- Xây dựng các dịng lệnh mơ hình:
# Mơ hình SARIMAX
p = d = q = range(0, 2)
pdq = list(itertools.product(p, d, q))
seasonal_pdq = [(x[0], x[1], x[2], 4) for x in list(itertools.product(p, d, q))]
print('Mơ hình ARIMA theo mùa:')
print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[1])) print('SARIMAX: {} x {}'.format(pdq[1], seasonal_pdq[2])) print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[3])) print('SARIMAX: {} x {}'.format(pdq[2], seasonal_pdq[4]))
for param in pdq:
for param_seasonal in seasonal_pdq: try: mod = sm.tsa.statespace.SARIMAX(df2, order=param, seasonal_order=param_seasonal, enforce_stationarity=False, enforce_invertibility=False)
results = mod.fit()
print('Best ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
except: continue mod = sm.tsa.statespace.SARIMAX(df2, order=(1, 1, 1), seasonal_order=(1, 1, 1, 4), enforce_stationarity=False, enforce_invertibility=False) results = mod.fit() print(results.summary().tables[1])
- Mơ hình ARIMA theo mùa: SARIMAX: (0, 0, 1) x (0, 0, 1, 4) SARIMAX: (0, 0, 1) x (0, 1, 0, 4) SARIMAX: (0, 1, 0) x (0, 1, 1, 4) SARIMAX: (0, 1, 0) x (1, 0, 0, 4) - Mơ hình ARIMA tốt nhất: ARIMA (1, 1, 1) x (1, 1, 1, 4) 4 - AIC: 751.7326182697827
- Dự đốn doanh thu bằng mơ hình ARIMA phù hợp nhất như Hình 17:
- Các sai số dự báo MSE, RMSE:
# MSE The Mean Squared Error of our forecasts is
y_forecasted = pred.predicted_mean y_truth = y['2018-01-01':]
mse = ((y_forecasted - y_truth) ** 2).mean()
print(' MSE of our forecasts {}'.format(round(mse, 2)))
# RMSE The Root Mean Squared Error of
print('RMSE our forecasts is {}'.format(round(np.sqrt(mse), 2))) MSE là: 3.23
RMSE là: 1.8
- Vẽ sơ đồ Log của AFC và PACF với ARIMA (1, 1, 1) x (1, 1, 1, 4) 4 - AIC: 751.7326182697827
results.plot_diagnostics(figsize=(16, 8)) plt.show()
4.2.1.5 Dự báo doanh thu Golf
- Dự báo trước 1 bước:
## Dự báo
pred = results.get_prediction(start=pd.to_datetime('2018-01-01'),
dynamic=False)
pred_ci = pred.conf_int()
ax = y['2003':].plot(label='Quan sát (observed)')
pred.predicted_mean.plot(ax=ax, label='Dự báo trước 1 bước (One-
step ahead Forecast)', alpha=.7, figsize=(14, 7))
ax.fill_between(pred_ci.index, pred_ci.iloc[:, 0],
pred_ci.iloc[:, 1], color='k', alpha=.2) ax.set_xlabel('Year')
ax.set_ylabel('Doanh thu Golf (Golf Sales)') plt.legend()
plt.show()
-Kết quả dự báo trước 1 bước như Hình 19:
- Dự báo doanh thu Golf trong vòng 10 năm tiếp theo
# Dự báo tiếp
pred_uc = results.get_forecast(steps=100) pred_ci = pred_uc.conf_int()
ax = y.plot(label='Quan sát (observed)', figsize=(14, 7))
pred_uc.predicted_mean.plot(ax=ax, label='Dự báo (Forecast)') ax.fill_between(pred_ci.index,
pred_ci.iloc[:, 0],
pred_ci.iloc[:, 1], color='k', alpha=.25) ax.set_xlabel('Date')
ax.set_ylabel('Doanh thu Golf ( Golf Sales') plt.legend()
plt.show()
-Kết quả dự báo doanh thu trong vịng 10 năm tiếp theo như Hình 20:
4.3 Xây dựng ứng dụng dự báo theo mơ hình mạng Long short-term memory (LSTM) term memory (LSTM)
4.3.1 Khai báo thư viện
Khai báo thư viện
import numpy as np import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler from keras.preprocessing.sequence import
TimeseriesGenerator from keras.models import Sequential
from keras.layers import Dense from keras.layers import LSTM from keras.layers import Dropout from tensorflow import keras import warnings
warnings.filterwarnings("ignore") [11]
Khai báo dữ liệu ban đầu
data = pd.read_csv('D:\CAOHOC\CODEANN\ARIMA2_Yt.csv') plt.plot(data.Sales_Yt.values, color='orange', label='Doanh thu Golf') plt.title('Doanh thu Golf 1.000.000 vnđ')
plt.xlabel('Thời gian [Month]') plt.ylabel('Doanh thu Sales Golf') plt.legend(loc='best')
plt.show()
Biểu đồ số liệu ban đầu như Hình 21 :
4.3.2 Xây dựng số liệu Dataset
Xây dựng tập số liệu traning [12]
data_end = int(np.floor(0.8*(data.shape[0]))) train = data[0:data_end]['Sales_Yt']
train =train.values.reshape(-1)
test = data[data_end:]['Sales_Yt'].values.reshape(-1) date_test = data[data_end:]['Year'].values.reshape(-1)
Xây dựng tập số liệu kiểm thử ( dữ liệu Test)
# xây dựng bộ dữ liệu test
def get_data(train,test,time_step,num_predict,Year): x_train= list() y_train = list() x_test = list() y_test = list() date_test= list()
for i in range(0,len(train) - time_step - num_predict):
x_train.append(train[i:i+time_step])
y_train.append(train[i+time_step:i+time_step+num_predict])
for i in range(0, len(test) - time_step - num_predict):
x_test.append(test[i:i+time_step])
y_test.append(test[i+time_step:i+time_step+num_predict]) date_test.append(Year[i+time_step:i+time_step+num_predict])
return np.asarray(x_train), np.asarray(y_train), np.asarray(x_test),
np.asarray(y_test), np.asarray(date_test)
x_train, y_train, x_test, y_test, date_test = get_data(train,test,3,1, date_test)
4.3.3 Xử lý số liệu
Xử lý tập số liệu Traning
# dua ve 0->1 cho tap train
scaler = MinMaxScaler()
x_train = x_train.reshape(-1,3)
x_train = scaler.fit_transform(x_train) y_train = scaler.fit_transform(y_train)
# dua ve 0->1 cho tap test
x_test = x_test.reshape(-1,3)
x_test = scaler.fit_transform(x_test) y_test = scaler.fit_transform(y_test)
# Reshape lai cho dung model
x_train = x_train.reshape(-1,3,1) y_train = y_train.reshape(-1,1)
#reshape lai cho test
x_test = x_test.reshape(-1,3,1) y_test = y_test.reshape(-1,1) date_test = date_test.reshape(-1,1)
4.3.4 Xây dựng mơ hình mạng LSTM
Bước đầu tiên khởi tạo lớp Sequential. Đây sẽ là lớp mơ hình và sẽ thêm các lớp LSTM, Dropout và Dense cho mơ hình này. Thêm vào 3 lớp LSTM liên tiếp và cứ qua 1 lớp là có 1 dropout 0.3. Cuối cùng ta cho qua một tầng Dense với đầu ra là 1 chiều. Sử dụng hàm loss bình phương trung bình là hàm mất mát và để tối ưu hóa thuật tốn, chúng tơi sử dụng trình tối ưu hóa adam.
#dau vao 3 doan 1
n_input = 3 n_features = 1 model = Sequential() model.add(LSTM(units=50,activation='relu', input_shape=(n_input, n_features), return_sequences=True)) model.add(Dropout(0.3)) model.add(LSTM(units=50, return_sequences=True)) model.add(Dropout(0.3)) model.add(LSTM(units=50)) model.add(Dropout(0.3)) model.add(Dense(1)) model.compile(optimizer='adam', loss='mse')
4.3.5 Huấn luyện mơ hình mạng
model.fit(x_train, y_train, epochs=500,
validation_split=0.2, verbose=1, batch_size=30) model.save('D:/CAOHOC/CODEANN/30_to_1.h5') model = keras.models.load_model('D:/CAOHOC/CODEANN/30_to_1.h5') test_output = model.predict(x_test) 4.3.6 Kết quả thử nghiệm # print(test_output) test_1 = scaler.inverse_transform(test_output) test_2=scaler.inverse_transform(y_test) plt.plot(test_1[:100], color='r') plt.plot(test_2[:100] ,color='b') plt.title("Sales Golf") plt.xlabel("STT")
plt.ylabel("Doanh thu Golf")
plt.legend(('Doanh thu dự đoán', 'Doanh thu thực tế'),loc='upper right') plt.show()
- Kết quả mơ hình LSTM như Hình 22:
Hình 22: Kết quả thư nghiệm mơ hình mạng LSTM
5.1 Kết quả dự báo
5.1.1 Kết quả xây dựng với mơ hình nhân :
Phương trình hồi quy Tt = 20.778, 56346 + 811,8253497*t căn cứ theo Bảng :
Kết quả dự báo mơ hình nhân theo Bảng 18 :
Bảng 18: Bảng kết quả mơ hình nhân
Kết quả trực quan mơ hình nhân minh họa theo Hình 23:
5.1.2 Mơ hình ARIMA
- Kết quả dự báo theo mơ hình trung bình MA theo Hình 24 :
Hình 24: Mơ hình trung bình MA ttheo tháng
- Độ lệch chuẩn trung bình biểu diễn minh họa theo Hình 25 :
Hình 25: Kết quả độ lệch chuẩn trung bình
- Kết quả mơ hình dự báo ARIMA theo Bảng 19 :
- Biêu đồ trực quan dự báo doanh thu ARIMA theo Hình 26 :
Hình 26: Hình minh họa kết quả dự báo
5.1.3 Mơ hình mạng LSTM
- Kết quả dự báo bằng hình ảnh trực quan Hình 27 :
Hình 27: Đồ thị minh họa trực quan LSTM
5.2 Bảng kết quả kiểm nghiệm doanh thu khi kiểm nghiệm mơ hình
Bảng kết quả dự báo so sánh giữa các mơ hình như Bảng 20:
Bảng 20: Bảng kết quả dự báo các mơ hình
Sai số dự
Số liệu Mơ hình Mơ hình Mơ Hình báo Mơ Sai số Sai số Quarter Year thực tế nhân ARIMA LSTM hình nhân ARIMA LSTM
1 2019 84,750 75,005 83,891 80,213 9,745 859 4,537
2 2019 77,457 71,306 81,867 79,123 6,151 -4,410 -1,666
3 2019 75,263 81,261 81,087 74,178 -5,998 -5,824 1,085
KẾT LUẬN
Ứng dùng phần mềm Excel để phân tích và dự báo với mơ hình nhân bên cạnh đó dùng ngơn ngữ lập trình python và các thư viện để phân tích và dự báo.
Ứng dụng Mơ hình nhân Yt = Tt x St với ứng dung cho kết quả nhanh chóng dễ làm và có thể dự đốn các năm tiếp theo khi có kết quả của các năm trước và dựa vào yếu tố theo màu để dự đốn chính xác các số liệu cua các quý hoặc các năm tiếp theo dễ dàng.
Ứng dụng mơ hình ARIMA để phân tích và dự báo số liệu doanh thu với tự hồi quy, trung bình, khử biến đổi theo mùa, hồi quy tuyến tính, độ lệch chuẩn, phương sai,… và các khả năng ứng dụng của mơ hình ARIMA.
Mạng LSTM là một trong những mạng thần kinh được sử dụng phân tích chuỗi thời gian. Khả năng ghi nhớ thơng tin trước đó của LSTM khiến nó trở nên lý tưởng cho các nhiệm vụ. Cho kết quả khá nhanh và khá chính xác với ứng dụng thư viện TensorFlow và các thư viện khác có từ Python.
Ứng dụng nghiên cứ với mơ hình nhân với kết quả với phương trình tuyến tính Tt = 20.778, 56346 + 811,8253497*t và sai số R2 = 0.900185312, dự đoán kết quả cho các năm tiếp theo cũng gần chính xác với số liệu thực tế.
Nghiên cứu khả năng ứng dụng của mơ hình ARIMA vào việc dự báo doanh thu Golf, mục đích tìm ra mơ hình tốt nhất cho việc dự báo doanh thu Golf.
Nghiên cứu ứng dụng mơ hình mạng LSTM phân tích số liệu và dự báo cho
kết quả nhanh và khá chính xác với ứng dụng thư viện TensorFlow kết hợp với các thư viện khác có từ ứng dụng ngơn ngữ lập trình Python
Hiện bài tốn phân tích dự báo doanh thu golf chỉ dựa trên số liệu doanh thu nên có phần chưa đánh giá tốt hoạt động của doanh nghiệp. Để phân tích và dự đốn chính xác thì cần dựa vào các chỉ tiêu như dịng tiền, tài sản, chi phí, nguồn vốn, lợi nhuận,…để có dự phân tích và dự báo chính xác hơn.
Tác giả mới dựa vào một số mơ hình tốn để dự báo như mơ hình nhân, mơ hình trung bình, mơ hình ARIMA và SARIMA kết hợp để phân tích cũng như dự báo và ứnng dụng mơ hình mạng LSTM là một phần đặc biệt của mạng RNN (Recurrent Neural Networks) để phân tích và dự báo bằng phương pháp học sâu.
Khi dùng phương pháp LSTM học nhanh hơn và phân tích kết quả và dự đoán nhanh hơn so với hồi quy Logistic và phương pháp Suport Vector Macchin chỉ mang tính chất phân loại.
DANH MỤC TÀI LIỆU THAM KHẢO
[1]Đỗ Thị Hương (2016), Phân tích báo cáo tài chính của Cơng ty TNHH thương
mại và đầu tư Xuân Anh, Luận văn Thạc sĩ Kế toán, Đại học Lao Động Xã Hội. [2]Nguyễn Văn Hn, Phạm Việt Bình (2011), Phân tích dữ liệu và dự báo kinh tế,
NXB Khoa học và kỹ thuật.
[3]Nguyễn Văn Huân, Lê Anh Tú (2015), Giải pháp xây dựng hệ thống phân tích
dữ liệu và dự báo doanh thu cho doanh nghiệp vừa và nhỏ tại Việt Nam, Tạp chí
Khoa học & Cơng nghệ, 135(05):191 – 198.
[4]Trần Văn Lý, Lê Thị Hải Yên, Nguyễn Huyền Trang, Trần Kim Yến, Bùi Minh Trung và Lâm Quốc Tồn (2016), Phân tích hồi quy xu thế và một áp dụng thú