Hướng dẫn confidence interval in forecasting python - khoảng tin cậy trong dự báo python

Cập nhật lần cuối vào ngày 10 tháng 12 năm 2020

Các mô hình dự báo chuỗi thời gian có thể đưa ra dự đoán vừa cung cấp khoảng thời gian dự đoán cho những dự đoán đó.

Các khoảng dự đoán cung cấp một kỳ vọng trên và thấp hơn cho quan sát thực sự. Chúng có thể hữu ích để đánh giá phạm vi kết quả thực tế có thể để dự đoán và để hiểu rõ hơn về kỹ năng của mô hình

Trong hướng dẫn này, bạn sẽ khám phá cách tính toán và giải thích các khoảng thời gian dự đoán cho dự báo chuỗi thời gian với Python.

Cụ thể, bạn sẽ học:

  • Làm thế nào để đưa ra dự báo với mô hình ARIMA và thu thập thông tin chẩn đoán dự báo.
  • Làm thế nào để tính toán và báo cáo một khoảng dự đoán cho một dự báo.
  • Làm thế nào để diễn giải một khoảng dự đoán cho một dự báo và định cấu hình các khoảng khác nhau.

Khởi động dự án của bạn với dự báo chuỗi thời gian cuốn sách mới của tôi với Python, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ. with my new book Time Series Forecasting With Python, including step-by-step tutorials and the Python source code files for all examples.

Hãy để lặn trong.

  • Cập nhật APR/2019: Cập nhật liên kết đến tập dữ liệu.: Updated the link to dataset.
  • Cập nhật tháng 6/2019: Thay đổi từ các khoảng thời gian dự đoán thành khoảng thời gian dự đoán.: Changed from prediction intervals to prediction intervals.
  • Cập nhật tháng 8/2019: Tải dữ liệu được cập nhật để sử dụng API mới.: Updated data loading to use new API.
  • Cập nhật Dec/2020: Mô hình hóa cập nhật cho các thay đổi đối với API.: Updated modeling for changes to the API.

Hướng dẫn confidence interval in forecasting python - khoảng tin cậy trong dự báo python

Hiểu chuỗi thời gian dự báo độ không đảm bảo bằng cách sử dụng các khoảng dự đoán với Pythonphoto của Bernard Spragg. New Zealand, một số quyền được bảo lưu.
Photo by Bernard Spragg. NZ, some rights reserved.

Dự báo Arima

Việc triển khai ARIMA trong Thư viện Python StatSmodels có thể được sử dụng để phù hợp với mô hình ARIMA.

Nó trả về một đối tượng arimaresults. Đối tượng này cung cấp hàm get_forecast () & nbsp; có thể được sử dụng để đưa ra dự đoán về các bước thời gian trong tương lai và mặc định để dự đoán giá trị ở bước tiếp theo sau khi kết thúc dữ liệu đào tạo.

Giả sử chúng tôi dự đoán chỉ bước tiếp theo, hàm get_forecast () trả về một đối tượng dự đoán với thông tin hữu ích như:

  • dự đoán_mean. Giá trị dự báo trong các đơn vị của chuỗi thời gian đào tạo.. The forecasted value in the units of the training time series.
  • Mean_se. Lỗi tiêu chuẩn cho mô hình.. The standard error for the model.
  • Conf_int. Khoảng dự đoán cho dự báo cho một mức alpha nhất định.. The prediction interval for the forecast for a given alpha level.

Trong hướng dẫn này, chúng tôi sẽ hiểu rõ hơn về khoảng thời gian dự đoán được cung cấp với dự báo Arima.

Trước khi chúng tôi đi sâu vào, trước tiên hãy nhìn vào bộ dữ liệu ca sinh nữ hàng ngày mà chúng tôi sẽ sử dụng làm bối cảnh cho hướng dẫn này.

Ngừng học chuỗi thời gian dự báo cách chậm!

Lấy khóa học email 7 ngày miễn phí của tôi và khám phá cách bắt đầu (với mã mẫu).

Nhấp để đăng ký và cũng nhận được phiên bản Ebook PDF miễn phí của khóa học.

Bộ dữ liệu ca sinh nữ hàng ngày

Bộ dữ liệu này mô tả số lượng ca sinh nữ hàng ngày ở California vào năm 1959.

Các đơn vị là một đếm và có 365 quan sát. Nguồn của bộ dữ liệu được ghi có vào Newton (1988).

  • Tải xuống bộ dữ liệu.

Tải xuống bộ dữ liệu và lưu nó trong thư mục làm việc hiện tại của bạn với tên tệp hàng ngày-total-female-births.csv.

Ví dụ dưới đây tải và đồ thị tập dữ liệu.

Từ Pandas Nhập READ_CSVpandas import read_csv

từ pyplot nhập khẩu matplotlibmatplotlib import pyplot

series=read_csv('daily-total-female-births.csv',header=0,index_col=0)=read_csv('daily-total-female-births.csv',header=0,index_col=0)

series.plot().plot()

pyplot.show().show()

Chạy ví dụ tải tập dữ liệu và đồ thị dưới dạng biểu đồ dòng.

Hướng dẫn confidence interval in forecasting python - khoảng tin cậy trong dự báo python

Bộ dữ liệu ca sinh nữ hàng ngày

Bộ dữ liệu này mô tả số lượng ca sinh nữ hàng ngày ở California vào năm 1959.

Các đơn vị là một đếm và có 365 quan sát. Nguồn của bộ dữ liệu được ghi có vào Newton (1988).

Tải xuống bộ dữ liệu.

Tải xuống bộ dữ liệu và lưu nó trong thư mục làm việc hiện tại của bạn với tên tệp hàng ngày-total-female-births.csv.

Ví dụ dưới đây tải và đồ thị tập dữ liệu.

Từ Pandas Nhập READ_CSV

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

từ pyplot nhập khẩu matplotlib

Từ Pandas Nhập READ_CSVpandas import read_csv

từ pyplot nhập khẩu matplotlibstatsmodels.tsa.arima.model import ARIMA

Chạy ví dụ tải tập dữ liệu và đồ thị dưới dạng biểu đồ dòng.

series=read_csv('daily-total-female-births.csv',header=0,index_col=0,parse_dates=True,squeeze=True)= read_csv('daily-total-female-births.csv',header=0,index_col=0,parse_dates=True,squeeze=True)

Dự báo khoảng dự đoán

X=series.values =series.values

X=X.astype('float32')=X.astype('float32')

size=len(X)-1=len(X)-1

train,test=X[0:size],X[size:],test =X[0:size],X[size:]

Trong phần này, chúng tôi sẽ đào tạo một mô hình Arima, sử dụng nó để đưa ra dự đoán và kiểm tra khoảng thời gian dự đoán.

model=ARIMA(train,order=(5,1,1))=ARIMA(train, order=(5,1,1))

model_fit=model.fit()=model.fit()

Đầu tiên, chúng tôi sẽ chia bộ dữ liệu đào tạo thành một bộ dữ liệu đào tạo và kiểm tra. Hầu như tất cả các quan sát sẽ được sử dụng để đào tạo và chúng tôi sẽ giữ lại quan sát duy nhất cuối cùng như một bộ dữ liệu thử nghiệm mà chúng tôi sẽ đưa ra dự đoán.

result=model_fit.get_forecast()=model_fit.get_forecast()

Một mô hình Arima (5,1,1) được đào tạo. Đây không phải là mô hình tối ưu cho vấn đề này, chỉ là một mô hình tốt cho mục đích trình diễn.

Mô hình được đào tạo sau đó được sử dụng để đưa ra dự đoán bằng cách gọi hàm get_forecast (). Kết quả dự báo sau đó được in.('Expected: %.3f'%result.predicted_mean)

Ví dụ hoàn chỉnh được liệt kê dưới đây.('Forecast: %.3f'%test[0])

# Tóm tắt khoảng tin cậy về dự báo Arima('Standard Error: %.3f' %result.se_mean)

ci=result.conf_int(0.05)=result.conf_int(0.05)

từ statsmodels.tsa.arima.model nhập khẩu arima('95%% Interval: %.3f to %.3f'% (ci[0,0],ci[0,1]))

# Tải tập dữ liệu

Dự kiến: 45.149

Dự báo: 50.000

Lỗi tiêu chuẩn: 7.009

Khoảng 95%: 31.413 đến 58.886

Diễn giải khoảng thời gian dự đoán

Hàm get_forecast () cho phép khoảng thời gian dự đoán được chỉ định.

Đối số alpha trên hàm conf_int () trên dự đoán chỉ định mức dự đoán.

Alpha là 0,05 có nghĩa là mô hình ARIMA sẽ ước tính các giá trị trên và thấp hơn xung quanh dự báo trong đó chỉ có 5% cơ hội rằng giá trị thực sẽ không nằm trong phạm vi đó.

Nói cách khác, khoảng thời gian dự đoán 95% cho thấy rằng có khả năng cao rằng quan sát thực sự sẽ nằm trong phạm vi.

Trong ví dụ trên, dự báo là 45,149. Khoảng dự đoán 95% cho thấy rằng quan sát thực sự có khả năng nằm trong phạm vi của các giá trị trong khoảng từ 31.413 đến 58.886.

Quan sát thực sự là 50,0 và nằm trong phạm vi này.

Chúng ta có thể thắt chặt phạm vi của các giá trị có khả năng theo một vài cách:

  • Chúng ta có thể yêu cầu một phạm vi hẹp hơn nhưng làm tăng khả năng thống kê của một quan sát thực sự nằm ngoài phạm vi.
  • Chúng ta có thể phát triển một mô hình có sức mạnh dự đoán nhiều hơn và lần lượt đưa ra dự đoán chính xác hơn.

Hơn nữa, khoảng thời gian dự đoán cũng bị giới hạn bởi các giả định được thực hiện bởi mô hình, chẳng hạn như phân phối các lỗi được thực hiện bởi mô hình phù hợp với phân phối Gaussian với giá trị trung bình bằng 0 (ví dụ: nhiễu trắng).

Mở rộng ví dụ trên, chúng tôi có thể báo cáo dự báo của mình với một vài khoảng thời gian dự đoán thường được sử dụng là 80%, 90%, 95%và 99%.

Ví dụ hoàn chỉnh được liệt kê dưới đây.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# Tóm tắt nhiều khoảng tin cậy trên dự báo Arima

Từ Pandas Nhập READ_CSVpandas import read_csv

từ statsmodels.tsa.arima.model nhập khẩu arimastatsmodels.tsa.arima.model import ARIMA

# tải dữ liệu

series=read_csv('daily-total-female-births.csv',header=0,index_col=0,parse_dates=True,squeeze=True)= read_csv('daily-total-female-births.csv',header=0,index_col=0,parse_dates=True,squeeze=True)

# chia dữ liệu thành các tập hợp và kiểm tra tập hợp

X=series.values =series.values

X=X.astype('float32')=X.astype('float32')

size=len(X)-1=len(X)-1

train,test=X[0:size],X[size:],test =X[0:size],X[size:]

# phù hợp với một mô hình arima

model=ARIMA(train,order=(5,1,1))=ARIMA(train, order=(5,1,1))

model_fit=model.fit()=model.fit()

result=model_fit.get_forecast()=model_fit.get_forecast()

forecast=result.predicted_mean =result.predicted_mean

# Tóm tắt khoảng tin cậy

intervals=[0.2,0.1,0.05,0.01]=[0.2,0.1,0.05,0.01]

forainintervals:ain intervals:

ci=result.conf_int(alpha=a)=result.conf_int(alpha=a)

In ('%.('%.1f%% Confidence Interval: %.3f between %.3f and %.3f'% ((1-a)*100,forecast,ci[0,0],ci[0,1]))

Chạy ví dụ in các dự báo và khoảng dự đoán cho mỗi giá trị alpha.

Chúng ta có thể thấy rằng chúng ta có được giá trị dự báo tương tự mỗi lần và một khoảng thời gian mở rộng khi mong muốn của chúng ta về khoảng thời gian an toàn hơn tăng lên. Chúng ta có thể thấy rằng 80% nắm bắt giá trị thực tế của chúng ta chỉ tốt trong trường hợp cụ thể này.

Khoảng tin cậy 80,0%

Khoảng tin cậy 90,0%: 45,149 giữa 33.621 đến 56.677

Khoảng tin cậy 95,0%: 45,149 giữa 31.413 đến 58.886

Khoảng tin cậy 99,0%: 45,149 trong khoảng từ 27.096 đến 63,202

Bản tóm tắt

Trong hướng dẫn này, bạn đã phát hiện ra cách tính và giải thích khoảng thời gian dự đoán cho dự báo chuỗi thời gian với Python.

Cụ thể, bạn đã học được:

  • Làm thế nào để báo cáo dự báo thống kê chẩn đoán khi đưa ra dự báo điểm.
  • Làm thế nào để tính toán và báo cáo một khoảng dự đoán cho một dự báo.
  • Cách diễn giải và định cấu hình khoảng dự đoán cho dự báo chuỗi thời gian.

Bạn có bất kỳ câu hỏi nào về các khoảng dự đoán dự báo, hoặc về hướng dẫn này? Đặt câu hỏi của bạn trong các ý kiến ​​dưới đây và tôi sẽ cố gắng hết sức để trả lời.
Ask your questions in the comments below and I will do my best to answer.

Bạn muốn phát triển dự báo chuỗi thời gian với Python?

Hướng dẫn confidence interval in forecasting python - khoảng tin cậy trong dự báo python

Phát triển dự báo của riêng bạn trong vài phút

... Chỉ với một vài dòng mã Python

Khám phá cách trong ebook mới của tôi: Giới thiệu về dự báo chuỗi thời gian với Python
Introduction to Time Series Forecasting With Python

Nó bao gồm các hướng dẫn tự học và các dự án đầu cuối về các chủ đề như: tải dữ liệu, trực quan hóa, mô hình hóa, điều chỉnh thuật toán và nhiều hơn nữa ...self-study tutorials and end-to-end projects on topics like: Loading data, visualization, modeling, algorithm tuning, and much more...

Cuối cùng mang lại dự báo chuỗi thời gian cho các dự án của riêng bạn
Your Own Projects

Bỏ qua các học giả. Chỉ là kết quả.

Xem những gì bên trong

Làm thế nào để Python tính toán khoảng tin cậy cho dự đoán?

Máy tính khoảng tin cậy trong Python..
Nhập khẩu Numpy dưới dạng NP. ....
x = np.random.nqual (size = 100) ....
m = x.mean () ....
t_crit = np.abs (t.ppf ((1-confidence)/2, dof)) ....
.

Khoảng tin cậy trong dự báo là gì?

Khoảng tin cậy là các ước tính được tính toán từ dữ liệu mẫu để xác định phạm vi có khả năng chứa tham số dân số (trung bình, độ lệch chuẩn) quan tâm. Ví dụ, nếu dân số của chúng ta là (2,6), khoảng tin cậy của giá trị trung bình cho thấy trung bình dân số có thể nằm trong khoảng từ 2 đến 6.estimates that are calculated from sample data to determine ranges likely to contain the population parameter(mean, standard deviation)of interest. For example, if our population is (2,6), a confidence interval of the mean suggests that the population mean is likely between 2 and 6.

Làm thế nào để bạn tạo ra một khoảng tin cậy 95 trong Python?

Khoảng tin cậy với thống kê T vì vậy, bây giờ bạn muốn xây dựng khoảng tin cậy 95%.Vì vậy, chúng tôi có độ lệch STD mẫu, số lượng mẫu và trung bình mẫu.Tất cả những gì chúng ta cần là t*.Vì vậy, t* cho khoảng tin cậy 95% với mức độ tự do 19 (N-1 = 20-1) là 2.093.sample std deviation, the number of samples, and sample mean. All we need is t*. So, t* for a 95% confidence interval with a degree of freedom of 19(n-1 = 20-1) is 2.093.

Khoảng tin cậy trong Python là gì?

Cách tiếp cận này được sử dụng để tính toán khoảng tin cậy cho bộ dữ liệu lớn trong đó n> 30 và đối với điều này, người dùng cần gọi định mức.hàm khoảng () từ scipy.Thư viện thống kê để có được khoảng tin cậy cho một phương tiện dân số của bộ dữ liệu đã cho nơi bộ dữ liệu thường được phân phối trong Python.