簡體   English   中英

回歸模型statsmodel python

[英]regression model statsmodel python

由於代碼可以正常工作,所以這更多是一個統計問題,但是我正在學習python中的回歸建模。 我在下面的一些代碼中使用statsmodel創建一個簡單的線性回歸模型:

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

ng = pd.read_csv('C:/Users/ben/ngDataBaseline.csv',  thousands=',', index_col='Date', parse_dates=True)

X = ng['HDD']
y = ng['Therm']

# Note the difference in argument order
model = sm.OLS(y, X).fit()

# Print out the statistics
model.summary()

我得到如下屏幕截圖所示的輸出。 我正在嘗試判斷擬合優度,並且我知道R ^ 2高,但是是否可以通過statsmodel找到預測的均方根誤差(RMSE)?

我還嘗試研究是否可以估計置信區間的采樣分布。 如果我正確地解釋了截距HDD 5.9309的表,標准誤為0.220,p值低0.000,並且我認為置信區間為97.5%,那么HDD的值(或者是我的因變量Therm?)將介於5.489和6.373? 或者我認為以百分比形式可以表示為〜+-0.072%

在此處輸入圖片說明

編輯包括多元回歸表 在此處輸入圖片說明

是否可以使用statsmodels計算RMSE? 是的,但是您必須首先使用模型生成預測,然后使用rmse方法。

from statsmodels.tools.eval_measures import rmse

# fit your model which you have already done

# now generate predictions
ypred = model.predict(X)

# calc rmse
rmse = rmse(y, ypred)

至於解釋結果, HDD不是攔截器。 這是您的自變量。 系數(例如權重)為5.9309,標准誤差為0.220。 此變量的t分數確實很高,表明它是一個很好的預測指標,並且由於它很高,因此p值非常小(接近0)。

5.489和6.373值是95%置信區間的置信區間。 簡單地基於從系數中減去與95%置信區間關聯的t統計量的標准誤差乘以標准誤差即可計算出邊界。

t統計量取決於樣本量,在您的情況下為53,因此您的自由度為52。使用t表 ,這意味着對於df = 52和95%的置信度,t統計量是2.0066。 因此,可以按照以下方式手動計算邊界:

lower: 5.9309 - (2.0066 x 0.220) = 5.498
upper: 5.9309 + (2.0066 x 0.220) = 6.372

當然,由於四舍五入會導致一些精度損失,但是您可以看到手動計算的確與摘要中的報告非常接近。

對您的評論的其他回復:

您可以使用幾個指標來評估擬合優度。 其中之一是調整后的R平方統計量。 其他是RMSE,F統計或AIC / BIC。 由您決定使用哪個或哪些度量來評估擬合優度。 對我來說,我通常使用調整后的R平方和/或RMSE,盡管RMSE更像是與其他模型進行比較的相對指標。

現在查看您的模型摘要,這兩個模型都很合適,尤其是第一個模型,它具有較高的已調整R平方值。 第二個模型可能有潛在的改進(可以嘗試使用自變量的不同組合),但是除非您進行實驗,否則您將不會知道。 最終,沒有對與錯的模型。 它只是建立幾個模型並比較它們以獲得最佳模型。 我還將鏈接一篇文章 ,解釋回歸模型的擬合指標的某些優點。

至於置信區間,我將鏈接此SO帖子,因為回答問題的人具有創建置信區間的代碼。 您將要查看他在代碼中創建的predict_mean_ci_lowpredict_mean_ci_high 這兩個變量將為您提供每次觀察的置信區間,然后您可以通過從預測值減去下限CI或從上限CI減去預測來計算+/- therms / kWh。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM