当前位置: 首页 > 知识库问答 >
问题:

理解statsmodels线性回归

毛德曜
2023-03-14

我试图拟合在statsmodels库中实现的线性回归模型。

我对fit()方法有疑问。假设我有大小为15的数据样本,我将其分为3部分,并拟合模型。调用每个fit()将正确拟合模型或覆盖以前的值。

import numpy as np
import statsmodels.api as sm

# First call
X = [377, 295, 457, 495, 9] # independent variable
y = [23, 79, 16, 41, 40]    # dependent variable
X = sm.add_constant(X)
ols = sm.OLS(y,X).fit()
#print(ols.summary())

# Second call
X = [243, 493, 106, 227, 334]
y = [3, 5, 1, 62, 92]
X = sm.add_constant(X)
ols = sm.OLS(y,X).fit()
#print(ols.summary())

# Third call
X = [412, 332, 429, 96, 336] 
y = [30, 1, 99, 4, 33]
X = sm.add_constant(X)
ols = sm.OLS(y,X).fit()
#print(ols.summary())

scores = [9, 219, 200, 134, 499]
scores = sm.add_constant(scores)
print(ols.predict(scores))

共有1个答案

闾丘博超
2023-03-14

每次调用sm。OLS(y, X)创建一个新的模型实例,每次调用. fi()都会创建一个新的结果实例,并引用基础模型。实例是相互独立的,也就是说,它们不共享任何属性,除了可能的基础数据。

但是,在您的示例中,您为每个回归结果指定了相同的名称ols,因此名称ols仅指最后一个实例。

更多细节:

创建一个类似于sm的模型。OLS(y,X)不复制数据y和X(如果不需要复制)。具体来说,如果y和X是numpy ndarray,则不需要任何副本。(从技术上讲,转换和复制行为取决于np.asarray(y)和np.asarray(X))

fit方法的重复调用每次都会创建一个新的结果实例,但它们保留对同一模型实例的引用。例如,我们可以使用不同的cov_类型选项调用拟合,这将使用不同的假设创建参数估计的协方差。

model = sm.OLS(y,X)
ols_nonrobust = model.fit()
ols_hc = model.fit(cov_type="HC3")

在大多数模型中,来自拟合的所有相关信息都附加到结果实例中。在上面的例子中,我们可以同时查看两个结果实例,例如比较参数标准误差

ols_nonrobust.bse
ols_hc.bse

在RLM和一些时间序列模型中,一些合适的选项可能会改变基础模型。在这种情况下,只有最后的结果实例创建的适合将具有正确的模型属性。如果我们在循环中只需要最后一个实例,这些情况很好,但是如果同时使用几个结果实例并且它们引用相同的基础模型实例,这些情况可能会显示不正确的结果。http://www.statsmodels.org/devel/pitfalls.html#repeated-calls-to-fit-with-different-parameters

 类似资料:
  • 我对机器学习算法不熟悉,对统计学知识了解不多。我知道这个例子可能不能给你正确的体积预测。然而,让我们考虑我有两个功能和来预测音量。这是样本数据 让我们假设股票是“趋势股票”,在第四天和第五天,股票价值正在上升。我想预测剩余时间框架的音量。在这种情况下,线性回归如何计算数量的产出值?

  • 我在做多元回归问题。我有如下数据集。 我把工资作为因变量,其他变量作为自变量。在做了数据预处理之后,我运行了梯度下降、回归模型。我估计了所有独立特征的偏差(截距)和系数。我想做实际值的散点图和我预测的假设的回归线。因为我们这里有不止一个功能, 我有以下问题。 > 在绘制回归线时,特征值是多少,这样我就可以计算假设值。?意思是现在,我有截距和所有特征的权重,但是我没有特征值。我现在如何决定特征值?

  • 我有困难得到的线性回归中的加权数组来影响输出。 这里有一个没有加权的例子。 现在,当添加重量时,我得到了相同的最佳拟合线。我希望看到回归有利于曲线的陡峭部分。我做错了什么?

  • 我正在使用statsmodels的OLS线性回归和Patsy四次公式,但得到的回归与LibreOffice Calc的数据相比不太吻合。为什么这与LibreOffice Calc的结果不匹配? STATSAMDELS代码: 生成以下系数: 和下面的图表: 但是,如果我将数据放入LibreOffice Calc,请单击绘图并选择“插入趋势线…”,选择“多项式”,输入“度”=4,然后选择“显示方程”,

  • 主要内容:假设函数,损失函数通过前面内容的介绍,我相信你对线性回归算法已经有了初步的认识。那我们应该如何在一大堆数据中求解出“线性方程呢”比如前面提及的房价预测问题?这种问题才是符合实际应用的。数据样本会散落在“线性方程”的周围(下图 2 所示), 而我们要做就是让线性方程的“直线”尽可能“拟合”周围的数据点。本节我们将从数学角度解析线性回归模型。 假设函数 通过前面知识的学习,我们知道假设函数是用来预测结果的。前面讲述时为

  • statsmodels是一个包含统计模型、统计测试和统计数据挖掘python模块。对每一个模型都会生成一个对应的统计结果。统计结果会和现有的统计包进行对比来保证其正确性。 特点 线性回归模型: 普通最小二乘法 广义最小二乘法 加权最小二乘法 具有自回归误差的最小二乘法 分位数回归 递归最小二乘法 具有混合效应和方差成分的混合线性模型 GLM:支持所有一参数指数族分布的广义线性模型 用于二项式和泊松