2013-07-09 28 views
17

tôi làm hồi quy này tuyến tính với StatsModels:sự tự tin và dự đoán khoảng thời gian với StatsModels

import numpy as np 
import statsmodels.api as sm 
from statsmodels.sandbox.regression.predstd import wls_prediction_std 

#measurements genre 
nmuestra = 100 

x = np.linspace(0, 10, nmuestra) 
e = np.random.normal(size=nmuestra) 
y = 1 + 0.5*x + 2*e 
X = sm.add_constant(x) 

re = sm.OLS(y, X).fit() 
print re.summary() #print the result type Stata 

prstd, iv_l, iv_u = wls_prediction_std(re) 

Câu hỏi của tôi là, iv_l và iv_u là khoảng tin cậy trên và dưới hoặc khoảng thời gian dự đoán ?? Làm thế nào tôi có được người khác ?? (Tôi cần độ tin cậy và khoảng thời gian dự đoán cho tất cả các điểm, để làm cốt truyện)

Trả lời

18

iv_l, iv_u cung cấp cho bạn giới hạn của khoảng dự đoán cho mỗi điểm.

thấy cốt truyện đầu tiên ở đây http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html

khoảng Dự đoán là khoảng tin cậy cho một quan sát và bao gồm các ước tính của lỗi.

Tôi nghĩ, khoảng tin cậy cho dự đoán trung bình chưa có sẵn trong các mô hình thống kê. (Trên thực tế, khoảng tin cậy cho các giá trị được trang bị đang ẩn bên trong summary_table của affect_outlier, nhưng tôi cần xác minh điều này.)

Phương pháp dự đoán đúng cho các mô hình thống kê nằm trong danh sách TODO.

Addition

khoảng tin cậy là có cho OLS nhưng việc tiếp cận là một chút vụng về.

Để được đưa vào sau khi chạy script của bạn:

from statsmodels.stats.outliers_influence import summary_table 

st, data, ss2 = summary_table(re, alpha=0.05) 

fittedvalues = data[:,2] 
predict_mean_se = data[:,3] 
predict_mean_ci_low, predict_mean_ci_upp = data[:,4:6].T 
predict_ci_low, predict_ci_upp = data[:,6:8].T 

# check we got the right things 
print np.max(np.abs(re.fittedvalues - fittedvalues)) 
print np.max(np.abs(iv_l - predict_ci_low)) 
print np.max(np.abs(iv_u - predict_ci_upp)) 

plt.plot(x, y, 'o') 
plt.plot(x, fittedvalues, '-', lw=2) 
plt.plot(x, predict_ci_low, 'r--', lw=2) 
plt.plot(x, predict_ci_upp, 'r--', lw=2) 
plt.plot(x, predict_mean_ci_low, 'r--', lw=2) 
plt.plot(x, predict_mean_ci_upp, 'r--', lw=2) 
plt.show() 

enter image description here

Điều này sẽ cho kết quả tương tự như SAS, http://jpktd.blogspot.ca/2012/01/nice-thing-about-seeing-zeros.html

+1

Một vấn đề với phương pháp này là nếu các điểm bị thưa thớt, 'predict_mean_ci_low' và' predict_mean_ci_upp' sẽ bị lởm chởm/nhọn khi vẽ bởi vì chúng chỉ tồn tại ở các giá trị được lắp, thay vì một loạt các điểm. Tuy nhiên, đường phù hợp được xác định cho tất cả các điểm. Có một nhận xét cho biết 'sử dụng hat_matrix chỉ hoạt động đối với các giá trị được trang bị' trong https://github.com/statsmodels/statsmodels/blob/master/statsmodels/stats/outliers_influence.py#L693 - bất kỳ ý tưởng nào để đi lại cái đó? –

+0

Tôi gặp sự cố với việc áp dụng câu trả lời này cho tập dữ liệu của mình, được đăng dưới dạng câu hỏi riêng biệt tại đây: http://stackoverflow.com/questions/34998772/plotting-confidence-and-prediction-intervals-with-repeated-entries. Bất kỳ lời khuyên nào được đánh giá cao! – PJW

1

Bạn có thể lấy chu kỳ dự đoán bằng cách sử dụng LRPI() lớp từ sổ ghi chép Ipython trong repo của tôi (https://github.com/shahejokarian/regression-prediction-interval).

Bạn cần đặt giá trị t để nhận khoảng tin cậy mong muốn cho các giá trị dự đoán, nếu không giá trị mặc định là 95% conf. khoảng thời gian.

Lớp LRPI sử dụng thư viện LinearRegression, gumpy và gấu trúc của sklearn.linear_model.

Có một ví dụ được hiển thị trong sổ ghi chép.

4

Để có dữ liệu thử nghiệm, bạn có thể thử sử dụng các mục sau.

predictions = result.get_prediction(out_of_sample_df) 
predictions.summary_frame(alpha=0.05) 

tôi thấy phương pháp summary_frame() chôn here và bạn có thể tìm ra phương pháp get_prediction() here. Bạn có thể thay đổi mức ý nghĩa của khoảng tin cậy và khoảng thời gian dự đoán bằng cách sửa đổi thông số "alpha".

Tôi đăng bài đăng này tại đây vì đây là bài đăng đầu tiên xuất hiện khi tìm kiếm giải pháp cho sự tự tin & khoảng dự đoán - mặc dù điều này liên quan đến dữ liệu kiểm tra.

Các vấn đề liên quan