使用 statsmodels 线性回归预测特定向量 x 的结果
forecast results for a specific vector x using statsmodels linear regressions
我已经成功地使用 OLS 为大量数据建立了一个模型。
results = smf.ols(formula='ind ~ Age + C(County) + C(Class)', data=df).fit()
我想实现一种方法,允许用户输入向量 X
并使其 return 成为基于回归的 y
。我研究了 statsmodels 的 "predict" 和 "forecast" 特性,但它似乎不是我要找的。
例如,我想做的是:
## Although the following is wrong, It shows what I'm trying to do:
def forecast_y(X):
return results.forecast(X)
## example:
print forecast_y([1, 3, 4])
# the model should return
4.53
如果我没看错,您不需要 y
的样本内预测,这就是您不想使用 predict
方法的原因;相反,您只想插入任意 x
值并根据预测系数获得 y
的值 ?
如果是这样,继续你的例子:
params = results.params #vector of your coefficients
arbitrary_x = np.array([.5, .5, .5...]) #whatever x values you want to test, with the constant first
assert(len(params) == len(arbitrary_x))
arbitrary_y = (params * arbitrary_x).sum()
我会把理解这个的含义留给 reader,但请小心使用。
我已经成功地使用 OLS 为大量数据建立了一个模型。
results = smf.ols(formula='ind ~ Age + C(County) + C(Class)', data=df).fit()
我想实现一种方法,允许用户输入向量 X
并使其 return 成为基于回归的 y
。我研究了 statsmodels 的 "predict" 和 "forecast" 特性,但它似乎不是我要找的。
例如,我想做的是:
## Although the following is wrong, It shows what I'm trying to do:
def forecast_y(X):
return results.forecast(X)
## example:
print forecast_y([1, 3, 4])
# the model should return
4.53
如果我没看错,您不需要 y
的样本内预测,这就是您不想使用 predict
方法的原因;相反,您只想插入任意 x
值并根据预测系数获得 y
的值 ?
如果是这样,继续你的例子:
params = results.params #vector of your coefficients
arbitrary_x = np.array([.5, .5, .5...]) #whatever x values you want to test, with the constant first
assert(len(params) == len(arbitrary_x))
arbitrary_y = (params * arbitrary_x).sum()
我会把理解这个的含义留给 reader,但请小心使用。