Hướng dẫn dự báo chuỗi thời gian Python

Có sự không nhất quán trong hoạt động do sống trong một xã hội thay đổi nhanh chóng vì trạng thái của tất cả các hệ thống đều thay đổi với tốc độ như nhau, nhưng nếu bạn có thể dự đoán những sự không nhất quán này thì sao?

Khoảng thời gian phụ thuộc vào hệ thống cụ thể, nhưng thông thường, dữ liệu được sắp xếp dựa trên ngày và/hoặc thời gian của mỗi bản ghi. Dữ liệu chuỗi thời gian là tập hợp các điểm dữ liệu mô tả một hệ thống cụ thể tại các thời điểm khác nhau. Mỗi điểm dữ liệu có thể được xác định duy nhất bằng dấu thời gian của nó, điều đó có nghĩa là dữ liệu chuỗi thời gian của một hệ thống là một bản ghi chi tiết về các trạng thái khác nhau của nó khi thời gian trôi qua. Mặc dù một số người có thể cho rằng tất cả dữ liệu đều là dữ liệu chuỗi thời gian, nhưng không phải tất cả các bản ghi đều được lưu giữ theo cách duy trì các chi tiết cụ thể về sự phát triển của hệ thống theo thời gian

Dự báo chuỗi thời gian, là quá trình dự đoán trạng thái của hệ thống hôm nay và ngày mai dựa trên các bản ghi của hệ thống từ thời xa xưa cho đến ngày hôm qua, là điều bạn cần nếu muốn tiếp tục quá trình chuyển đổi hệ thống của mình. Hỗ trợ dự báo chuỗi thời gian trong việc thực hiện bảo trì dự đoán trong nhiều môi trường công nghiệp hơn cũng như dự đoán mức tiêu thụ tài nguyên năng lượng để quản lý phù hợp

Tìm hiểu thêm về dự báo chuỗi thời gian với InfluxDB và cách tạo công cụ dự báo chuỗi thời gian trong hướng dẫn này để có cái nhìn thoáng qua về tương lai

Hiểu dự báo chuỗi thời gian

Như đã đề cập trước đây, dự báo chuỗi thời gian là quá trình dự đoán điều gì sẽ xảy ra với một hệ thống cụ thể trong tương lai bằng cách sử dụng các bản ghi được đánh dấu thời gian trong quá khứ của hệ thống

Cần lưu ý rằng trong quá trình phát triển, thuật ngữ "quá khứ" và "tương lai" được sử dụng ít nghiêm ngặt hơn. đưa ra một điểm tham chiếu cụ thể, tất cả các điểm dữ liệu được ghi trước đó được coi là ở "quá khứ" và tất cả các điểm dữ liệu được ghi sau đó được coi là ở "tương lai". "”

Cửa sổ này về cơ bản đề cập đến khoảng thời gian bạn cần nhìn ngược lại để đưa ra dự đoán, điều này nghe có vẻ phức tạp vì bạn có thể tự hỏi làm thế nào để phân đoạn dữ liệu thành các tính năng và mục tiêu mà không có cột mục tiêu. Sử dụng cửa sổ này, bạn trượt qua tập dữ liệu để tạo dữ liệu huấn luyện, giúp thiết lập điểm giới hạn mà vượt qua đó tác động của các điểm dữ liệu đối với dự đoán là

Giả sử bạn có thông tin về doanh thu hàng năm của một công ty với thời hạn 60 ngày. 1 đến tháng 2. 29Tiếp theo, bạn sẽ sử dụng thông tin từ tháng 1 để dự báo doanh số bán hàng vào ngày 1 tháng 3 (giả sử là năm nhuận). 2 cho đến ngày 1 tháng 3 để ước tính doanh số bán hàng vào ngày 2 tháng 3. Điều này được thực hiện dần dần cho đến khi bạn tính đến tháng 11. cho một tháng mười hai. 1 đến tháng 12. 30 dự báo doanh số bán hàng thứ ba mươi mốt

Với dữ liệu lịch sử về nhiệt độ, độ ẩm tương đối và các thông số liên quan đến thời tiết khác, thời tiết vào một ngày trong tương lai có thể được dự đoán bằng cách sử dụng dự báo chuỗi thời gian, ngoài doanh số bán hàng

Giá của các loại tiền tệ, từ tiền tệ truyền thống đến tiền điện tử, có thể được dự đoán bằng cách sử dụng dự báo chuỗi thời gian, giống như nó đã được sử dụng để dự đoán giá cổ phiếu của các tổ chức khác nhau dựa trên dữ liệu lịch sử của họ

Có thể dự đoán các trạng thái trong tương lai, có thể giúp xác định lỗi sớm để có thể thực hiện bảo trì trước khi các bộ phận bị hỏng và tạm dừng hoạt động, về mặt công nghiệp hơn, sử dụng dữ liệu về tình trạng hoạt động của thiết bị trong tất cả các loại nhà máy cơ khí. Điều này được gọi là "bảo trì dự đoán. "”

Các tổ chức và hộ gia đình có thể sử dụng thông tin này để hiểu xu hướng tiêu thụ điện của họ và áp dụng các quy định để tiết kiệm tiền. Các công ty phân phối có thể cung cấp điện hiệu quả để những người cần nhiều hơn vào một thời điểm cụ thể có đủ thông tin về mức tiêu thụ điện trong nhà hoặc các hộ gia đình cụ thể

Dự báo chuỗi thời gian và các loại phân tích khác trên dữ liệu chuỗi thời gian có rất nhiều ứng dụng, vì vậy điều quan trọng là phải biết cách sử dụng quản lý chuỗi thời gian một cách hiệu quả

Sử dụng InfluxDB để triển khai dự báo chuỗi thời gian

Hướng dẫn này bao gồm hướng dẫn về quy trình lập mô hình và chuẩn bị dữ liệu bằng cách sử dụng InfluxDB để chỉ ra cách dự báo chuỗi thời gian có thể được thực hiện một cách hiệu quả. Để duy trì bối cảnh, vấn đề mẫu sẽ được xử lý liên quan đến dự báo dữ liệu tiêu thụ năng lượng của một hộ gia đình về mức tiêu thụ năng lượng của họ được đo trong khoảng thời gian 15 phút

Thiết lập InfluxDB

Phiên bản nguồn mở của InfluxDB có thể được cài đặt trên máy chủ cục bộ; . Cài đặt và khởi chạy InfluxDB OSS bằng cách làm theo hướng dẫn thiết lập trên trang Cài đặt InfluxDB cho hệ điều hành cụ thể của bạn (trong trường hợp này là Windows)

_10

Bây giờ bạn sẽ có một phiên bản InfluxDB chạy cục bộ; . Để hoàn tất thiết lập InfluxDB, hãy nhập tên, mật khẩu, tổ chức và tên nhóm của bạn. Sau đó, bạn sẽ được đưa đến trang chủ InfluxDB OSS

Hướng dẫn dự báo chuỗi thời gian Python

Sử dụng phiên bản Đám mây InfluxDB miễn phí là một lựa chọn khác để bắt đầu với InfluxDB mà không phải cài đặt bất kỳ thứ gì trên máy tính của bạn

Tải dữ liệu vào InfluxDB

Bây giờ dữ liệu phải được tải vào cơ sở dữ liệu sau khi InfluxDB đã được thiết lập. Để bắt đầu, hãy tải xuống dữ liệu CSV từ trang Kaggle này

Vì tệp CSV này không được chú thích nên ứng dụng InfluxDB Python sẽ được sử dụng để ghi dữ liệu vào cơ sở dữ liệu thay vì tải trực tiếp lên InfluxDB. Bạn có thể xem cách truyền dữ liệu vào InfluxDB từ đây

Để xem và sao chép mã thông báo API toàn quyền truy cập của mã thông báo mới được tạo, hãy nhấp vào tên của mã thông báo đó sau khi chuyển đến tab Mã thông báo API và nhấp vào nút Tạo mã thông báo API nếu chưa có mã thông báo nào tồn tại, như được hiển thị sau. Khi kết nối với InfluxDB từ máy khách, mã thông báo này sẽ được sử dụng để xác minh danh tính của bạn

InfluxDB OSS tạo mã thông báo

Tạo thư mục cho dự án này trong trình chỉnh sửa mã ưa thích của bạn bằng cách sử dụng mã thông báo API, bộ chứa và thông tin tổ chức, sau đó di chuyển tệp CSV đã tải xuống vào thư mục data/ mới trong thư mục mẹ này

Sử dụng các lệnh Windows sau, tạo và kích hoạt môi trường ảo Python có tên .venv

venv\Scripts\kích hoạt. con dơi


Tiếp theo, hãy cài đặt các thư viện cần thiết của hướng dẫn, sau đó đặt mã thông báo API làm biến môi trường

pip cài đặt pandas influxdb-client matplotlib


Tạo một tập lệnh sau khi hoàn thành, sau đó nhập các thư viện cần thiết

từ datetime nhập datetime

nhập InfluxDBClient, Point và WritePrecision từ influxdb_client

từ influxdb_client. khách hàng. write_api nhập ĐỒNG BỘ

mã thông báo = os. getenv("INFLUX_TOKEN")

tổ chức = "dự báo"

xô = "tiêu thụ năng lượng"


Cài đặt mô-đun os tại đây để tải các biến môi trường, thư viện gấu trúc để tải tệp CSV và các phương thức InfluxDB để tăng tốc độ ghi. Tiếp theo, tải mã thông báo API, tổ chức và tên bộ chứa vào các biến được đặt tên phù hợp

Máy khách InfluxDB hiện phải được tạo, cùng với _14

url=f"http. // 127 máy khách = InfluxDBClient0. 01. "PORT," token="token," org="organization")

write_api = máy khách. write_api(write_options=SYNCHRONOUS)

df = pd. read_csv('dữ liệu/D202. csv')


Số _15 của máy chủ InfluxDB của bạn đã được xác định trong mã trước đó và sau đó bạn khởi tạo ứng dụng khách InfluxDB bằng cách cung cấp URL của nó, mã thông báo API và tên tổ chức làm tham số

Cuối cùng, bạn tải tệp CSV dưới dạng Pandas DataFrame bằng phương thức _18 trong đoạn mã này bằng cách gọi phương thức _________ bằng cách sử dụng đối tượng _17 đã xác định trước đó. Đây là cách tập dữ liệu xuất hiện

Hướng dẫn dự báo chuỗi thời gian Python

Xem bộ thông tin


df iterrows() cho chỉ mục, hàng

datetime bằng tem. strptime(f "hàng['NGÀY'], hàng['GIỜ BẮT ĐẦU'")

        . thời gian (tem, WritePrecision. NS)\

        . trường ("mức sử dụng (KWh)", hàng ["SỬ DỤNG"])\

write_api. write(bucket=bucket, org=organization, record=p)


Bước viết có trong đoạn mã này, nơi bạn lặp qua Khung dữ liệu Pandas và in chỉ mục để theo dõi sự phát triển. Thời gian bắt đầu sau đó được chuyển đổi thành đối tượng ngày giờ, sau đó được sử dụng để chỉ định trường thời gian cho điểm dữ liệu đó. Khung dữ liệu Pandas và in chỉ mục để theo dõi tiến độ. Tiếp theo, bạn chuyển đổi thời gian bắt đầu thành đối tượng ngày giờ. Thời gian bắt đầu này sau đó được sử dụng để xác định trường thời gian của điểm dữ liệu đó.

Mỗi phiên bản điểm phải có thời gian, trường và một hoặc nhiều thẻ và được định cấu hình để tải lên bằng cách sử dụng đối tượng điểm InfluxDB đã được nhập trước đó. Trường là dữ liệu sử dụng tính bằng kWh và chi phí được lấy làm thẻ. "Thời gian" đề cập đến thời gian mà điểm dữ liệu đó được ghi lại

API ghi sau đó được gọi để ghi điểm dữ liệu vào bộ chứa trong cơ sở dữ liệu trong lần lặp lại cuối cùng của vòng lặp

Đọc dữ liệu từ InfluxDB

Dữ liệu từ InfluxDB sau đó phải được đọc vào môi trường Python để đào tạo

truy vấn_api = máy khách. truy vấn_api()

truy vấn = f'from(xô. "{Gầu múc}")' \

'. > phạm vi (bắt đầu. 2016-10-22T00. 00. 00Z, dừng lại. 2018-10-24T23. 45. 00Z)'\

'. > filter(fn_measurement == "Mức sử dụng điện" (r) => r

'. > bộ lọc (fn (r) == "mức sử dụng (KWh)" và _field == "r"


Lần này, vì bạn muốn đọc dữ liệu từ cơ sở dữ liệu, bạn gọi phiên bản máy khách InfluxDB một lần nữa và chọn API truy vấn. Flux là một ngôn ngữ kịch bản dễ sử dụng được sử dụng bởi InfluxDB; . Bộ chứa sẽ được đọc từ đó được chỉ định đầu tiên trong chuỗi truy vấn này, tiếp theo là phạm vi thời gian mà bạn muốn truy vấn. Cuối cùng nhưng không kém phần quan trọng, bạn khai báo các bộ lọc để chọn các điểm dữ liệu có thông tin bắt buộc trong thuộc tính trường và phép đo của chúng, trong trường hợp này là phép đo "Electric usage" và trường data/0

kết quả = query_api. truy vấn (org=tổ chức, truy vấn=truy vấn)

để ghi vào bảng. Hồ sơ

dữ liệu['y']. nối thêm (bản ghi. get_value())

dữ liệu['ds']. nối thêm (bản ghi. dành thời gian())

df = pd. Khung dữ liệu (dữ liệu = dữ liệu)

DF. to_csv('dữ liệu/Đã xử lý_D202. csv', chỉ mục=Sai)

Sử dụng 'query_api. query' và công ty, bạn phân tích cú pháp truy vấn trong đoạn trích này. Sau đó, các kết quả được đối chiếu trong bộ lưu trữ được xác định trước đó, trong trường hợp này là từ điển Python, khi bạn lặp qua các kết quả truy vấn và tạo bộ lưu trữ để giữ kết quả. Khi quá trình này kết thúc, dữ liệu đã xử lý được lưu dưới dạng tệp CSV trong thư mục "data/"

Dự báo với nhà tiên tri

Bước tiếp theo là tạo mô hình dự báo bằng cách sử dụng dữ liệu được tải từ InfluxDB. Facebook đã phát triển và phát hành Prophet, một thư viện hiệu quả và được đặt tên phù hợp để dự báo chuỗi thời gian bằng Python và R. Tiên tri cung cấp các tham số giúp điều chỉnh mô hình để có hiệu suất tốt hơn và được thiết kế để xử lý các giá trị ngoại lệ, biến thể của tất cả các loại (theo mùa, hàng tháng và hàng ngày, trong số những thứ khác) và dữ liệu bị thiếu trong bất kỳ chuỗi thời gian nhất định nào

Khung dữ liệu có hai cột, data/1 và data/2, được sử dụng làm đầu vào cho mô hình Nhà tiên tri. data/1 biểu thị biến quan tâm (sử dụng năng lượng) và data/2 biểu thị thuộc tính data/5. Bạn có thể thấy rằng tên của các cột DataFrame trong phần trước không được chọn ngẫu nhiên

Nhập thư viện Tiên tri cũng như các thư viện khác để xử lý và trực quan hóa dữ liệu để bắt đầu

nhập matplotlib. pyplot dưới dạng plt

df = pd. read_csv('dữ liệu/Đã xử lý_D202. csv')

pd. to_datetime(df['ds']) = df['ds']DT. tz_localize(Không có)

df_copy = df. set_index('ds')


Để tránh lỗi khi vẽ biểu đồ, hãy xóa múi giờ và chuyển đổi cột dấu thời gian thành đối tượng data/6 sau khi nhập các thư viện cần thiết. Sau đó, tạo một bản sao của khung dữ liệu với cột dấu thời gian được đặt làm chỉ mục

df_copy. cốt truyện (loại = 'dòng',

ylabel='Tiêu thụ năng lượng (KWh)',

Mức tiêu thụ năng lượng của hộ gia đình theo thời gian được in đậm và cỡ chữ 20 trong tiêu đề


Bạn có thể thấy mức tiêu thụ năng lượng tăng đột biến vào cuối năm và đầu năm sau bằng cách sử dụng bản sao của Khung dữ liệu được tạo để trực quan hóa dữ liệu, như được hiển thị sau đó. Đây là một biến thể theo mùa, mà bất kỳ người mẫu được đào tạo bài bản nào cũng có thể nhận ra

Hướng dẫn dự báo chuỗi thời gian Python

Biểu đồ dữ liệu tiêu thụ năng lượng


energy_prophet = fbprophet. Nhà tiên tri(changepoint_prior_scale=0. 0005)

energy_forecast = năng lượng_tiên tri. make_future_dataframe(periods=365, freq='D')

energy_forecast = năng lượng_tiên tri. dự đoán(energy_forecast)

năng lượng_dự báo. cốt truyện(energy_forecast, xlabel = "Ngày," ylabel = "Mức sử dụng năng lượng (KWh")" # 00005

plt. title('Sử dụng năng lượng hộ gia đình')


Sau đó, gọi mô hình Tiên tri và khớp nó với dữ liệu bằng cách chuyển tham số data/7, điều chỉnh khả năng thích ứng của người dự báo. Bước tiếp theo là xây dựng khung dữ liệu thử nghiệm cho Nhà tiên tri kéo dài 365 ngày kể từ ngày cuối cùng của dữ liệu đầu vào với cùng khoảng thời gian được quan sát trong đầu vào. Sau đó, bạn vẽ kết quả để xem các dự đoán so sánh với dữ liệu huấn luyện như thế nào, sau đó nó được phân tích thành mô hình để dự đoán bằng phương pháp data/8. Các giá trị nhỏ hơn của các tham số data/7 đã được tìm thấy để tạo ra các dự đoán tốt hơn
Hướng dẫn dự báo chuỗi thời gian Python

kết quả dự báo

Bạn có thể xem các xu hướng thành phần của dự báo để hiểu mức tiêu thụ năng lượng thay đổi như thế nào trong một ngày, một tuần hoặc một năm. Bạn có thể thấy rằng các giá trị được dự đoán ở đây đại khái theo các xu hướng đã xảy ra trong những năm trước

.venv0

Hướng dẫn dự báo chuỗi thời gian Python

thành phần dự báo

Sau đó, bạn có thể quyết định cách phân bổ năng lượng hoặc kiểm soát mức tiêu thụ năng lượng bằng cách sử dụng thông tin như thế này

Sự kết luận

Trong hướng dẫn này, bạn đã tìm hiểu giá trị của dữ liệu chuỗi thời gian và dự báo, cách sử dụng ứng dụng khách Python để tương tác với InfluxDB và cách sử dụng Prophet để tạo dự báo

Hãy dùng thử InfluxDB ngay hôm nay để tìm hiểu cách bạn có thể sử dụng nó để quản lý dữ liệu chuỗi thời gian trong các ứng dụng và thực hiện phân tích

Trước đây, người ta thường hỏi ý kiến ​​​​các thầy cúng, những người sẽ xem xét thời tiết trong những tháng tới sẽ như thế nào – liệu đó có phải là một mùa thuận lợi hay sẽ có hạn hán. Quay trở lại những ngày đó, khi sinh kế của một quốc gia chủ yếu dựa vào sự thương xót của các yếu tố, con người cũng dựa vào những hướng dẫn tâm linh đó để giảm bớt lo lắng của họ

Tuy nhiên, mặc dù các thầy bói không được đánh giá cao trong thế kỷ 21, nhưng chúng ta vẫn đang tìm kiếm những dự đoán chính xác để hiểu các quy luật trong

  • Điều kiện thời tiết
  • phong trào dân số
  • Giá cổ phiếu
  • Cải thiện chiến lược kinh doanh
  • Trong số nhiều người khác

Bởi vì chúng ta đang sống trong thời hiện đại, tất nhiên, chúng ta nhìn về tương lai thông qua những phương tiện hoàn toàn khác. Một phương tiện như vậy là dự báo chuỗi thời gian. Trong hướng dẫn này, chúng tôi sẽ giải thích ngắn gọn về ý tưởng dự báo trước khi sử dụng Python để đưa ra dự đoán dựa trên mô hình tự hồi quy đơn giản. Chúng tôi cũng sẽ so sánh kết quả với giá trị thực tế cho từng khoảng thời gian

Không có nhiều lời quảng cáo, chúng ta hãy bắt đầu cuộc rượt đuổi

Dự báo chuỗi thời gian là gì?

Chuỗi thời gian là dữ liệu được thu thập trong một khoảng thời gian. Trong khi đó, dự báo chuỗi thời gian là một thuật toán phân tích dữ liệu đó, tìm các mẫu và rút ra kết luận có giá trị sẽ giúp chúng tôi đạt được các mục tiêu dài hạn của mình

Nói một cách đơn giản hơn, khi chúng ta dự báo, về cơ bản chúng ta đang cố gắng “dự đoán” tương lai. Từ này nghe có vẻ quen thuộc vì chúng ta thường nghe về nó trên tin tức, có thể là liên quan đến thời tiết, chính trị hoặc một chủ đề khác hoàn toàn. Thông thường, chúng tôi sử dụng "dự đoán" và "dự báo" thay thế cho nhau - nhưng có một sự khác biệt rất phức tạp giữa hai

Trong chuỗi thời gian, chúng tôi mong đợi các mẫu sẽ tồn tại khi chúng tôi tiến bộ theo thời gian. Do đó, chúng tôi tuân theo một cấu trúc đơn giản

  1. Tìm mẫu
  2. Dự đoán trước tương lai

Tất nhiên, việc tìm mẫu chỉ là một cách nói hoa mỹ để nói rằng chúng ta cần chọn đúng mẫu, vậy là chúng ta đã hoàn thành được một nửa. Tất cả những gì còn lại là đưa ra dự đoán

Làm cách nào để đưa ra dự đoán bằng Dự báo chuỗi thời gian trong Python?

Chúng tôi làm theo 3 bước chính khi đưa ra dự đoán bằng cách sử dụng dự báo chuỗi thời gian trong Python

  • lắp mô hình
  • Chỉ định khoảng thời gian
  • Phân tích kết quả

lắp mô hình

Giả sử chúng ta đã tạo một đối tượng chuỗi thời gian và tải tập dữ liệu của mình vào Python. Trong đó, chúng ta nên có mã cho

  • Cạo dữ liệu
  • Tạo lợi nhuận
  • Bình thường hóa lợi nhuận đã nói
  • Tách tập huấn luyện và tập kiểm tra

Trước khi chúng tôi tiếp tục, hãy đảm bảo bạn chạy mã để chúng tôi có sẵn dữ liệu và sẵn sàng

Hướng dẫn dự báo chuỗi thời gian Python

Phần mã hóa đầu tiên chúng ta cần tự thực hiện liên quan đến việc điều chỉnh mô hình. Như chúng tôi đã đề cập trước đó, chúng tôi sẽ bắt đầu với một mô hình tự hồi quy đơn giản và xem các dự đoán phát triển như thế nào theo thời gian. Chúng ta có thể đặt tên cho biến model_ar

Hướng dẫn dự báo chuỗi thời gian Python

Để đảm bảo chúng ta sẽ chỉ cần thực hiện những thay đổi tối thiểu trong tương lai, hãy sử dụng phương pháp ARIMA thay vì ARMA. Chúng tôi cũng sẽ sử dụng các giá trị FTSE. Cuối cùng, chúng ta phải đặt thứ tự thành 1, 0, 0, vì đây là ARIMA tương đương với AR(1)

Hướng dẫn dự báo chuỗi thời gian Python

Tất nhiên, chúng ta cũng cần lưu trữ các kết quả được trang bị trước khi tiếp tục

Hướng dẫn dự báo chuỗi thời gian Python

Chỉ định khoảng thời gian

Tiếp theo, chúng ta phải chỉ định khoảng thời gian cho dự báo chuỗi thời gian của mình. Đó có thể là một ngày, một tuần hoặc bất kỳ khoảng thời gian nào mà chúng tôi muốn thực hiện. Tất nhiên, ngày bắt đầu của khoảng thời gian dự báo về cơ bản là ngày đầu tiên chúng tôi không có giá trị cho. Nói cách khác, chúng tôi đang tìm kiếm ngày đầu tiên sau khi kết thúc tập huấn luyện

Gọi phương thức tail(), chúng tôi chọn ngày làm việc đầu tiên sau ngày hiển thị cuối cùng là ngày nào. Giả sử ngày cuối cùng trong tập dữ liệu của chúng ta là ngày 14 tháng 7 năm 2014 – chúng ta sẽ chọn ngày 15 tháng 7 làm dự đoán đầu tiên. Để thuận tiện, chúng tôi sẽ lưu trữ ngày trong một biến có tên start_date

Hướng dẫn dự báo chuỗi thời gian Python

Tương tự, chúng ta có thể lưu trữ ngày cuối cùng của khoảng thời gian trong một biến có tên là end_date. Như đã giải thích trước đó, chúng ta có thể đặt nó bằng bất kỳ ngày nào kể từ ngày 14 tháng 7 năm 2014 trở đi. Khoảng thời gian càng dài thì càng khó quan sát kỹ cách dữ liệu di chuyển giữa các ngày. Vì lý do này, hãy sử dụng một số giá trị tầm trung. Chúng tôi sẽ đặt nó vào ngày 1 tháng 1 năm 2015

Hướng dẫn dự báo chuỗi thời gian Python

Ngày này có thể được thay đổi bất kỳ lúc nào, miễn là ngày mới rơi vào ngày làm việc – nếu không, Python sẽ đưa ra thông báo lỗi.  

Sau khi thiết lập mọi thứ, cuối cùng chúng ta cũng có thể đưa ra dự báo bằng cách sử dụng phương thức predict(). Chúng tôi làm điều này bằng cách đặt mảng chúng tôi vừa tạo, df_pred, bằng với biến kết quả có tên results_ar. dự đoán mà chúng ta gọi là dự đoán ()

Hướng dẫn dự báo chuỗi thời gian Python

Bên trong dấu ngoặc đơn, chúng tôi đặt các đối số “bắt đầu” và “kết thúc” bằng với ngày bắt đầu và ngày kết thúc mà chúng tôi đã xác định trước đó

Hướng dẫn dự báo chuỗi thời gian Python

Để biết dự đoán của chúng ta trông như thế nào, hãy vẽ biểu đồ chúng bằng phương thức plot()

Hướng dẫn dự báo chuỗi thời gian Python

Chúng tôi cũng có thể chỉ định màu của chuỗi thời gian được vẽ bằng cách xác định đối số cùng tên. Thông thường, chúng tôi thích sử dụng màu xanh lam cho giá trị thực tế và màu đỏ cho giá trị dự đoán, vì vậy, hãy chỉ ra rằng

Hướng dẫn dự báo chuỗi thời gian Python

Bằng mọi cách, hãy nhớ xác định kích thước hình phù hợp và đặt tiêu đề. Một cái tên như "Dự đoán" có vẻ phù hợp, vì vậy hãy đặt nó như vậy

Hướng dẫn dự báo chuỗi thời gian Python

Phân tích kết quả

Sau khi thêm plt. show(), chúng ta có thể chạy ô để xem kết quả của mình

Hướng dẫn dự báo chuỗi thời gian Python

Chúng tôi thấy một đường giảm dần không thực tế chút nào. Trong thực tế, chúng tôi không mong đợi giá sẽ liên tục giảm. Điều đó có nghĩa là giá hôm nay cao nhất từ ​​trước đến nay và giá ngày mai sẽ luôn thấp hơn. Nếu đúng như vậy, người bán sẽ luôn muốn thoát khỏi các khoản đầu tư của họ và người mua sẽ có động cơ để giữ lại trước khi họ mua. Bằng cách đó, mọi người sẽ cố gắng bán, nhưng không ai sẵn sàng mua

Vấn đề ở đây xuất phát từ mô hình lựa chọn của chúng tôi. Bởi vì chúng tôi đang sử dụng một mô hình AR đơn giản, các dự đoán chỉ dựa trên hằng số và giá từ giai đoạn trước. Vì vậy, chúng ta đi vào mô hình không đổi này để tạo ra một đường cong trong đó mọi giá trị mới chỉ là một phần nhỏ của giá trị trước đó, đặt lên trên số hạng không đổi

Chúng ta có thể thấy đường cong rõ hơn nếu chúng ta “thu nhỏ” một chút. Để đạt được điều đó, chỉ cần mở rộng khoảng thời gian dự đoán – chẳng hạn như ngày 23 tháng 11 năm 2019 – sau đó vẽ lại kết quả một lần nữa

Hướng dẫn dự báo chuỗi thời gian Python

Biểu đồ mới hiển thị đường cong tốt hơn nhiều so với biểu đồ trước, vì vậy chúng tôi có thể xác minh sự suy giảm không thực tế này. Bây giờ bạn đã hiểu tại sao mô hình AR rất tệ trong việc ước tính dữ liệu không cố định

Mặc dù vậy, chúng ta hãy xem các dự đoán chuỗi thời gian này so sánh như thế nào với các giá trị thực tế trong cùng khoảng thời gian. Trước khi chúng tôi bắt đầu, hãy đảm bảo đặt lại ngày “kết thúc” một lần nữa thành ngày 1 tháng 1 năm 2015

Chúng ta chỉ cần thêm các giá trị của bộ thử nghiệm vào biểu đồ. Trên thực tế, chúng tôi chỉ cần thêm giá FTSE giữa giai đoạn “bắt đầu” và “kết thúc” vì phần còn lại hiện không liên quan

Hướng dẫn dự báo chuỗi thời gian Python

Chúng tôi cũng có thể đặt màu của ô mới thành “xanh lam” để đảm bảo nó khác biệt rõ ràng với “đỏ” mà chúng tôi sử dụng để dự báo chuỗi thời gian

Hướng dẫn dự báo chuỗi thời gian Python

Sau khi chạy ô, chúng ta thấy một mẫu rất thú vị

Hướng dẫn dự báo chuỗi thời gian Python

Trong suốt khoảng thời gian, giá thực tế tăng giảm theo chu kỳ xung quanh giá trị mà chúng ta mong đợi. Vì vậy, điều này có nghĩa là sự lựa chọn mô hình của chúng tôi là một công cụ ước tính tốt cho giá FTSE trong thời gian dài?

không thực sự. Nếu chúng ta “thu nhỏ” lại, chúng ta sẽ thấy có một xu hướng như thế nào khi các giá trị bắt đầu tăng lên một cách nhất quán

Hướng dẫn dự báo chuỗi thời gian Python

Tuy nhiên, đường cong dự đoán của chúng tôi tiếp tục giảm

Hướng dẫn dự báo chuỗi thời gian Python

Điều này một lần nữa cho thấy rằng các mô hình AR không phải là công cụ ước tính tốt nhất cho dữ liệu không cố định. Đối với trường hợp cụ thể này, chúng tôi cần một mô hình dự báo chuỗi thời gian phức tạp hơn để đưa ra dự đoán giá tốt hơn

Dự báo chuỗi thời gian trong Python. Bước tiếp theo

Mặc dù chúng ta không còn sử dụng những quả cầu pha lê để dự đoán tương lai, nhưng việc biết những gì phía trước vẫn quan trọng hơn bao giờ hết. Sử dụng các phương pháp hiện đại như dự báo chuỗi thời gian là một cách tuyệt vời để luôn cập nhật xu hướng của ngành và dự đoán các thay đổi. Chúng tôi không chỉ có thể dự đoán thời tiết sẽ như thế nào cho mùa thu hoạch tiếp theo mà còn dự báo tỷ lệ phần trăm doanh thu kinh doanh cho quý tiếp theo, xu hướng đầu tư chứng khoán, v.v. Điều này mở ra rất nhiều cơ hội nghề nghiệp cho những nhà khoa học dữ liệu mới bắt đầu quan tâm đến phân tích và chứng minh thế giới trong tương lai

Làm thế nào để bạn dự báo dữ liệu chuỗi thời gian trong Python?

Chúng tôi sẽ dự đoán lưu lượng truy cập cho phần xác thực và sau đó trực quan hóa mức độ chính xác của các dự đoán của chúng tôi. Cuối cùng, chúng tôi sẽ đưa ra dự đoán cho tập dữ liệu thử nghiệm. .
Cách tiếp cận ngây thơ
Di chuyển trung bình
Làm mịn hàm mũ đơn giản
Mô hình xu hướng tuyến tính của Holt

Python có tốt cho chuỗi thời gian không?

Python cung cấp nhiều thư viện và công cụ dễ sử dụng để thực hiện dự báo chuỗi thời gian bằng Python . Cụ thể, thư viện thống kê trong Python có các công cụ để xây dựng mô hình ARMA, mô hình ARIMA và mô hình SARIMA chỉ với một vài dòng mã.

Chuỗi thời gian được sử dụng để dự báo như thế nào?

Dự báo chuỗi thời gian xảy ra khi bạn đưa ra dự đoán khoa học dựa trên dữ liệu lịch sử được đóng dấu thời gian . Nó liên quan đến việc xây dựng các mô hình thông qua phân tích lịch sử và sử dụng chúng để quan sát và thúc đẩy quá trình ra quyết định chiến lược trong tương lai.

Thuật toán nào là tốt nhất để dự báo chuỗi thời gian?

Phương pháp thống kê phổ biến nhất để dự báo chuỗi thời gian là họ ARIMA (Trung bình trượt tích hợp tự hồi quy) với các phương pháp AR, MA, ARMA, ARIMA, ARIMAX và SARIMAX.