传递给 StatsModels 预测函数的第一个值是什么?

What is first value that is passed into StatsModels predict function?

我有以下来自 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])

我不清楚这里的工作概念。有人知道这是怎么回事吗?

您正在向 X = statsmodels.tools.tools.add_constant(X) 的回归方程中添加一个常数。所以你的回归变量 X 有两列,其中第一列是一个数组。

您需要对预测中使用的回归量执行相同的操作。因此,1 意味着在预测中包含常量。如果改为使用零,则常数 (0 * params[0]) 的贡献为零,预测只是斜率效应。

公式界面会自动为模型中的回归量和预测中的回归量添加常量。但是,对于 pandas DataFrame 或 numpy ndarray 接口,用户需要为模型和预测添加常量。