def lm(data, xseq, **params):
"""
Fit OLS / WLS if data has weight
"""
X = sm.add_constant(data['x'])
Xseq = sm.add_constant(xseq)
try:
model = sm.WLS(data['y'], X, weights=data['weight'])
except KeyError:
model = sm.OLS(data['y'], X)
results = model.fit(**params['method_args'])
data = pd.DataFrame({'x': xseq})
data['y'] = results.predict(Xseq)
if params['se']:
alpha = 1 - params['level']
prstd, iv_l, iv_u = wls_prediction_std(
results, Xseq, alpha=alpha)
data['se'] = prstd
data['ymin'] = iv_l
data['ymax'] = iv_u
return data
评论列表
文章目录