- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
谁能给我解释一下 statsmodel.formula.api 中的 ols 和 statsmodel.api 中的 ols 之间的区别?
使用 ISLR 文本中的广告数据,我使用两者运行了一个 ols,得到了不同的结果。然后我与 scikit-learn 的 LinearRegression 进行了比较。
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression
df = pd.read_csv("C:\...\Advertising.csv")
x1 = df.loc[:,['TV']]
y1 = df.loc[:,['Sales']]
print "Statsmodel.Formula.Api Method"
model1 = smf.ols(formula='Sales ~ TV', data=df).fit()
print model1.params
print "\nStatsmodel.Api Method"
model2 = sm.OLS(y1, x1)
results = model2.fit()
print results.params
print "\nSci-Kit Learn Method"
model3 = LinearRegression()
model3.fit(x1, y1)
print model3.coef_
print model3.intercept_
输出如下:
Statsmodel.Formula.Api Method
Intercept 7.032594
TV 0.047537
dtype: float64
Statsmodel.Api Method
TV 0.08325
dtype: float64
Sci-Kit Learn Method
[[ 0.04753664]]
[ 7.03259355]
statsmodel.api 方法从 statsmodel.formula.api 和 scikit-learn 方法返回一个不同的电视参数。
statsmodel.api 运行的是哪种 ols 算法会产生不同的结果?有没有人有指向可以帮助回答这个问题的文档的链接?
最佳答案
今天遇到这个问题,想详细说明@stellasia 的回答,因为 statsmodels 文档可能有点模棱两可。
除非您使用 actual R-style string-formulas 在实例化 OLS
时,您需要在 statsmodels.formulas.api
和普通 statsmodels.api 下添加一个常量(实际上是一列 1)
。 @Chetan 在这里使用 R 风格的格式 (formula='Sales ~ TV'
),所以他不会遇到这种微妙的情况,但对于具有一些 Python 知识但没有 R 背景的人来说,这可能非常令人困惑。
此外,您是否指定 hasconst
也无关紧要建立模型时的参数。 (这有点傻。)换句话说,除非您使用 R 风格的字符串公式,否则 hasconst
将被忽略,即使它应该是
[Indicate] whether the RHS includes a user-supplied constant
因为,在脚注中
No constant is added by the model unless you are using formulas.
下面的示例表明,如果不使用 R 风格的字符串公式,.formulas.api
和 .api
都需要用户添加的 1 列向量。
# Generate some relational data
np.random.seed(123)
nobs = 25
x = np.random.random((nobs, 2))
x_with_ones = sm.add_constant(x, prepend=False)
beta = [.1, .5, 1]
e = np.random.random(nobs)
y = np.dot(x_with_ones, beta) + e
现在将 x
和 y
放入 Excel 并运行 Data>Data Analysis>Regression,确保未选中“Constant is zero”。您将获得以下系数:
Intercept 1.497761024
X Variable 1 0.012073045
X Variable 2 0.623936056
现在,在 statsmodels.formula.api
或 statsmodels.api 中尝试在
,x
而不是 x_with_ones
上运行此回归hasconst
设置为 None
、True
或 False
。您会看到,在这 6 种情况中的每一种情况下,都没有返回拦截。 (只有2个参数。)
import statsmodels.formula.api as smf
import statsmodels.api as sm
print('smf models')
print('-' * 10)
for hc in [None, True, False]:
model = smf.OLS(endog=y, exog=x, hasconst=hc).fit()
print(model.params)
# smf models
# ----------
# [ 1.46852293 1.8558273 ]
# [ 1.46852293 1.8558273 ]
# [ 1.46852293 1.8558273 ]
现在可以通过将 1.0
添加到 x
的列向量正确运行。您可以在此处使用 smf
,但如果您不使用公式,则实际上没有必要。
print('sm models')
print('-' * 10)
for hc in [None, True, False]:
model = sm.OLS(endog=y, exog=x_with_ones, hasconst=hc).fit()
print(model.params)
# sm models
# ----------
# [ 0.01207304 0.62393606 1.49776102]
# [ 0.01207304 0.62393606 1.49776102]
# [ 0.01207304 0.62393606 1.49776102]
关于python - 使用 statsmodel.formula.api 与 statsmodel.api 的 OLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650257/
我有这个html Ordered List Style Here’s another, they shouldn’t be too terribly long, but might
这是文档导出功能中包含的html {{ $leftdata->title }} {{ $rightdata->title }}
对于我的评估,我想运行一个滚动的 1000 窗口 OLS 回归估计 在此 URL 中找到的数据集: https://drive.google.com/open?id=0B2Iv8dfU4fTUa3dP
我有很多使用无法正常工作的旧嵌套列表的 html 页面。我想动态查看页面是否使用它并添加类属性或建议更好的方法。 动态更新所有出现的 to 或者建议我是否仍然可以使用该类型但使用嵌入式 CSS 应
我已将数据分为训练样本和验证样本,并成功地将我的模型与三种类型的线性模型拟合。我不知道该怎么做是将模型应用于验证样本以评估拟合度。当我尝试将模型应用于保留样本时(抱歉,我知道这不是一个可重现的示例,但
我用的是 OpenLayers 4.1.1 我有一个用 ol-debug.js 编写的函数 我的目标是手动输入第一个坐标并简单地绘制线串。 ol.interaction.Draw.prototype.
我遇到了一个问题,我正在使用的所见即所得编辑器通过在父 ol 内部而不是内部创建新的 ol 来在列表中创建子项父 li 的,这让我很难理解如何让计数器将元素 3 识别为 3 而不是 4。我意识到正确的
可以为 ol.style.Text 实例(offsetX 和 offsetY 属性)定义一个偏移量,并为ol.style.Icon 实例。此功能在 ol.style.Circle 和 ol.style
我需要像这样 用这个标记 Lorem ipsum dolor sit amet consectetuer adipiscing elit
我试图在选择 VectorTile 图层后更改该要素的样式。但是,第一次触发选择交互时,控制台会报告错误: Uncaught TypeError: feature.getId is not a fun
我试图在选择 VectorTile 图层后更改该要素的样式。但是,第一次触发选择交互时,控制台会报告错误: Uncaught TypeError: feature.getId is not a fun
我用python处理一个线性回归模型,json数据如下: {"Y":[1,2,3,4,5],"X":[[1,43,23],[2,3,43],[3,23,334],[4,43,23],[232,234,
这个问题在这里已经有了答案: Does UL have default margin or padding [duplicate] (2 个答案) 关闭 3 年前。
我有以下 HTML: A numbered bullet An un-numbered bullet 但是显示是这样的: 1. A numbered b
我正在计算蒙特卡罗回归,以分析因变量中的测量误差对 OLS 估计的影响。这方面的理论很清楚。平均而言,常数和斜率系数的估计应该是正确的。但是,我的 R 代码会产生一个有偏常数但无偏斜率系数。我怀疑我在
我想在单击链接时切换订单列表 **Group 1**
奇怪的问题列表项编号与其内容不一致。参见 live page或截图:1 , 2 看到有序列表的行号与其内容不对齐。当屏幕很宽时它们都在下面,当屏幕很窄时它们都在空中。 认为是 CSS 有问题,因为 C
我使用下面的 CSS 代码在我的网页中显示有序列表。我已将内容导出到 PDF,然后 PDF 中的有序列表显示不同,如下图链接所示。 ol { counter-reset: item; } o
我是使用 CSS 列表的后来者。我使用此代码创建列表,其中第一个缩进为 a-z,第二个缩进为罗马、i、ii、iii、iv 等: /* SF/2013-10-16; this code will cre
出于样式的原因,我使用带有伪类的 ol 元素。不幸的是,我无法开始计算所需索引中的列表项。怎么了? js fiddle HTML car flower garden
我是一名优秀的程序员,十分优秀!