[英]How to calculate a prediction interval for a fitted statsmodels OLS model?
我得到了以下模型:
因此,將X增加一個單位的預期產出變化由下式給出:
假設我假設X的值為 40 。
如何計算以0.25 個單位增加X的效果的 95% 置信區間?
下面是一個可復制的例子。
# Generate data
import pandas as pd
from scipy import stats as st
df = pd.DataFrame({'const':1,'X':st.norm(loc=40, scale=5).rvs(1000)})
df['X_sq'] = df['X'].pow(2)
df['y'] = 1200 + df['X'] + df['X_sq'] + st.norm().rvs(1000)
df = df[['y','const','X','X_sq']]
# Declare and fit model
y = df['y']
X = df[['const','X','X_sq']]
m1 = OLS(endog=y, exog=X).fit()
# Assume a value for `Xi`
x = 40
# Predicted marginal effect of increasing `Xi` in ONE UNIT
Mg = m1.params['X'] + (2 * m1.params['X_sq'] * x)
很好,所以y
的預期變化,然后將X
從 40 增加到 41 等於Mg
。
如何計算X
為 0.25 個單位的邊際變化的 95% 置信區間?
作為提示,我認為這可以用m1.t_test()
來完成
t_test
有效,因為統計量Mg
在參數中是線性的。
我們可以使用由字符串或顯式約束矩陣定義的限制。
我使用老式的字符串插值,並在模擬之前添加了一個種子以獲得可復制的結果。
np.random.seed(987125348)
"X + %f * X_sq" % (2 * x)
'X + 80.000000 * X_sq'
m1.t_test("X + %f * X_sq" % (2 * x))
<class 'statsmodels.stats.contrast.ContrastResults'>
Test for Constraints
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
c0 81.0089 0.007 1.24e+04 0.000 80.996 81.022
==============================================================================
Mg
80.99974702127943
使用顯式限制矩陣:
m1.t_test([0, 1, 2 * x])
<class 'statsmodels.stats.contrast.ContrastResults'>
Test for Constraints
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
c0 81.0089 0.007 1.24e+04 0.000 80.996 81.022
==============================================================================
t 檢驗該值為 80
m1.t_test("X + %f * X_sq = 80" % (2 * x))
<class 'statsmodels.stats.contrast.ContrastResults'>
Test for Constraints
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
c0 81.0089 0.007 1.24e+04 0.000 80.996 81.022
==============================================================================
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.