我有来自StatsModels的以下OLS模型:
X = df['Grade']
y = df['Results']
X = statsmodels.tools.tools.add_constant(X)
mod = sm.OLS(y,X)
results = mod.fit()
当试图预测X值为4的新Y值时,我必须传递以下内容:
results.predict([1,4])
我不明白为什么需要传递第一个值为'1'的数组才能使预测函数正常工作。为什么我需要包含1而不是仅仅说:
results.predict([4])
我不清楚这里的概念。有人知道发生了什么吗?
答案 0 :(得分:1)
您正在使用X = statsmodels.tools.tools.add_constant(X)
向回归方程式添加常量。所以你的回归量X有两列,第一列是一列数。
您需要对预测中使用的回归量做同样的事情。因此,1
表示在预测中包含常量。如果改为使用零,则常量(0 * params[0]
)的贡献为零,预测仅为斜率效应。
公式接口自动为模型中的回归量和预测中的回归量添加常量。但是,使用pandas DataFrame或numpy ndarray接口时,用户需要为模型和预测添加常量。