sm.add_constant
在 statsmodels 中,sm.add_constant 是一个用于在回归分析中添加常数项(截距项)的函数。在执行线性回归等分析时,经常需要在自变量矩阵中添加一个常数列,以便模型可以包括截距项。
该函数接受一个数组或者 DataFrame 作为输入,然后在输入数据的第一列添加一个常数项(通常是1),以便用于回归模型中的截距项。
示例
import statsmodels.api as sm
import pandas as pd
# 创建一个包含自变量的 DataFrame
data = pd.DataFrame({'x1': [1, 2, 3, 4], 'x2': [2, 4, 5, 4]})
# 使用 add_constant 函数为自变量添加常数项
X = sm.add_constant(data)
# 现在 X 包含了常数列
print(X)
const x1 x2
0 1.0 1 2
1 1.0 2 4
2 1.0 3 5
3 1.0 4 4
sm.formula.ols函数 和 sm.OLS函数
在 statsmodels 库中,sm.formula.ols 和 sm.OLS 都是用于执行普通最小二乘(OLS)回归分析的函数,但它们之间存在一些区别。
sm.formula.ols:
- 这个函数使用公式字符串来指定回归模型,类似于 R 语言中的模型指定方式。
- 通过公式字符串,可以方便地指定因变量和自变量之间的关系,以及交互项等。
- 适合于对模型公式比较熟悉的用户,或者希望使用 R风格公式的用户。
sm.OLS:
- 这个函数则是基于数组的接口,需要显式地传入因变量和自变量的数组。
- 适合于对模型公式不太熟悉,或者更倾向于直接操作数组的用户。
示例:
import statsmodels.api as sm
import pandas as pd
data = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [2, 4, 5, 4]})
model = sm.formula.ols(formula='y ~ x', data=data).fit()
print(model.predict(data['x']))
print(model.params)
0 2.7
1 3.4
2 4.1
3 4.8
dtype: float64
Intercept 2.0
x 0.7
dtype: float64
import statsmodels.api as sm
import pandas as pd
data = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [2, 4, 5, 4]})
X = data['x']
y = data['y']
X = sm.add_constant(X) # 添加常数项
model = sm.OLS(y, X).fit()
print(model.predict(X))
print(model.params)
0 2.7
1 3.4
2 4.1
3 4.8
dtype: float64
const 2.0
x 0.7
dtype: float64