我这样做linear regression
with StatsModels
:
import numpy as np
import statsmodels.api as sm
from statsmodels.sandbox.regression.predstd import wls_prediction_std
n = 100
x = np.linspace(0, 10, n)
e = np.random.normal(size=n)
y = 1 + 0.5*x + 2*e
X = sm.add_constant(x)
re = sm.OLS(y, X).fit()
print(re.summary())
prstd, iv_l, iv_u = wls_prediction_std(re)
我的问题是,iv_l
and iv_u
是上部和下部置信区间 or 预测区间?
我如何得到别人?
我需要所有点的置信度和预测区间来绘制图。
对于测试数据,您可以尝试使用以下内容。
predictions = result.get_prediction(out_of_sample_df)
predictions.summary_frame(alpha=0.05)
我发现summary_frame()方法被埋没了here你可以找到 get_prediction() 方法here。您可以通过修改“alpha”参数来更改置信区间和预测区间的显着性水平。
我在这里发布这篇文章是因为这是在寻找置信度和预测区间的解决方案时出现的第一篇文章 - 尽管这本身与测试数据有关。
这是一个使用此方法获取模型、新数据和任意分位数的函数:
def ols_quantile(m, X, q):
# m: OLS model.
# X: X matrix.
# q: Quantile.
#
# Set alpha based on q.
a = q * 2
if q > 0.5:
a = 2 * (1 - q)
predictions = m.get_prediction(X)
frame = predictions.summary_frame(alpha=a)
if q > 0.5:
return frame.obs_ci_upper
return frame.obs_ci_lower
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)