作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上,我尝试基于没有截距的数据帧运行回归,因此我将拟合截距设置为 false,但以下代码生成包含截距的参数。有人知道为什么会出现这种情况吗?
model2 = smf.ols('Y ~ X', data=df_final)
result2 = model2.fit(cov_type = 'HAC', cov_kwds = {'maxlags':5}, fit_intercept= False)
result2.params
Intercept 0.032649
X 0.014521
dtype: float64
最佳答案
使用公式运行 OLS 模型时,默认情况下会添加截距。省略截距项的一种方法是在公式中添加 -1
:
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
df = pd.DataFrame({'X': np.random.randint(0, 100, size=20),
'Y': np.random.randint(0, 100, size=20)})
model = smf.ols('Y ~ X - 1', data=df)
result = model.fit()
拟合模型现在仅包含一个参数(对于 X
):
X 0.691876
dtype: float64
如果您不使用公式 API,则 OLS 模型不包含截距,因此您无需担心它(在这种情况下,您需要将其显式添加到数据中)
我不确定您从哪里获得 fit_intercept
参数,因为我在 statsmodels documentation 中找不到任何对它的引用。或source code 。也许您正在考虑使用 scikit-learn 进行线性回归,它确实使用一个参数来控制拦截
关于python - 即使我设置了 fit_intercept= False,为什么我的回归模型仍返回截距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249177/
我是一名优秀的程序员,十分优秀!