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

Statsmodel截距不同于Seaborn lmplot截距

沈良策
2023-03-14

什么可以解释statsmodel OLS回归和seaborn lmplot之间截距的差异?

我的statsmodel代码:

X = mmm_ma[['Xvalue']]
Y = mmm_ma['Yvalue']
model2 = sm.OLS(Y,sm.add_constant(X), data=mmm_ma)
model_fit = model2.fit()
model_fit.summary()

我的seaborn lmplot代码:

sns.lmplot(x='Xvalue', y='Yvalue', data=mmm_ma)

我的statsmodel截距为28.9775,seaborn lmplot截距约为45.5。

  • 截获是否应该相同
  • 为什么可以解释为什么这些是不同的?(我可以更改一些代码使其相等吗)
  • 是否有一种方法可以获得类似于seaborn lmplot的图,但使用精确的回归结果来确保它们对齐

@马苏德,谢谢你的发帖。我想我已经意识到了问题所在。我的x值在1400到2600之间,y值在40到70之间。因此,使用seaborn lmplot,它只绘制回归曲线,截距基于最小范围X值,即46的截距。

然而,对于statsmodel OLS,它保持线路运行直到X=0,这就是为什么我得到28左右的截距。

所以我想问题是有一种方法可以继续趋势线,使用seaborn一直走到x=0。

我试着改变轴,但它似乎没有延长线。

axes = lm.axes
axes[0,0].set_xlim(0,)

共有1个答案

卢鸿博
2023-03-14

这很奇怪。也许如果你能提供更多的细节,我们可以帮助得更好。我试图复制这个问题,但我从两种方法中得到了相同的截获。

代码:

import matplotlib.pyplot as plt
import statsmodels.regression.linear_model as sm
import seaborn as sns
import pandas as pd
import numpy as np
np.random.seed(0)

mmm_ma = {'Xvalue': range(0, 40), 'Yvalue': np.random.randint(low=0, high=40, size=40)}

mmm_ma = pd.DataFrame(mmm_ma)

X = mmm_ma[['Xvalue']]
Y = mmm_ma['Yvalue']
model2 = sm.OLS(Y,sm.add_constant(X), data=mmm_ma)
model_fit = model2.fit()
print(model_fit.summary())


sns.lmplot(x='Xvalue', y='Yvalue', data=mmm_ma)
plt.show()

以下是输出:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 Yvalue   R-squared:                       0.005
Model:                            OLS   Adj. R-squared:                 -0.021
Method:                 Least Squares   F-statistic:                    0.2071
Date:                Wed, 18 Jul 2018   Prob (F-statistic):              0.652
Time:                        00:51:04   Log-Likelihood:                -155.75
No. Observations:                  40   AIC:                             315.5
Df Residuals:                      38   BIC:                             318.9
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         17.2183      3.783      4.551      0.000       9.559      24.877
Xvalue         0.0760      0.167      0.455      0.652      -0.262       0.414
==============================================================================
Omnibus:                        3.327   Durbin-Watson:                   1.618
Prob(Omnibus):                  0.189   Jarque-Bera (JB):                1.738
Skew:                           0.197   Prob(JB):                        0.419
Kurtosis:                       2.058   Cond. No.                         44.5
==============================================================================
 类似资料:
  • 我试图通过一条线性回归线,通过共享相同斜率的单独数据簇。然而,尽管我已经成功地为点本身绘制了不同的颜色,并成功地绘制了这些颜色的图形,但我在线条上的尝试不起作用。 早些时候,我尝试了一个hashset,它通过颜色调用集群,但这会导致行的输入顺序出现问题。 在这次尝试中,我尝试通过一个数字附件链接集群,然后根据该附件调用线路。 代码的第一部分并不是真正相关的,因为我没有在那里更改任何内容,并且该部分

  • 我正在使用Apache CXF开发REST服务。我正在使用Spring3.1注释来连接bean。我编写了一个拦截器,它截取我的REST方法以进行监视。要做到这一点,我必须自动连接作为库添加到项目中的Monitor类@自动连线在这种情况下似乎不起作用,导致NPE。我做错什么了吗? 应用上下文:

  • 现在,当我到达spring-boot应用程序的endpoint时,它工作得很好 基本上,它根本不调用preandle。我错过了什么????

  • 我用Spring framework 4.0.2 Spring MVC JavaMelody构建了我的应用程序,用于监控应用程序性能。使用LoginInterceptor,除javamelody dashboard:mydomain外,没有登录会话的其他所有请求URL都将重定向到登录页面。com/监控;我需要用过滤器替换拦截器吗?因为RequestParameterFilter中设置的断点可以很好

  • 我目前正在学习梯度下降,所以我写了一段代码,使用梯度下降和线性回归。然而,我得到的这条线并不是最好的。我计算了梯度下降线性回归和最小二乘误差回归的误差。无论我使用什么数据,最小二乘误差总是给我一个更低的误差。我决定看一看斜坡和y截距。使用梯度下降的y截距总是非常接近于零,好像它没有正确地改变。我觉得这很奇怪,我不知道发生了什么。我是否错误地实现了梯度下降?

  • 我使用反应原生66时运行得到错误 Yarn run v1.22.17$react-原生run-android info运行jetifier将库迁移到AndroidX。您可以使用“--no-jetifier”标志禁用它。Jetifier发现1428个文件要转发jetify。使用4个工作人员... info JS服务器已经运行。信息安装应用程序...配置项目:react-nate-fire base