Statsmodel拦截与Seaborn lmplot拦截不同

时间:2018-07-18 06:28:13

标签: python regression linear-regression seaborn statsmodels

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

我的统计模型代码:

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()

我的Seamping Lmplot代码:

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

我的statsmodel截距是28.9775,而我的seampt的截距是45.5。

问题

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

编辑

@Massoud感谢您的发布。我想我已经意识到了问题所在。我的x值介于1400到2600之间,y值介于40到70之间。因此,使用seaborn lmplot可以绘制回归曲线,并且截距基于最低的X值-截距46。 >

enter image description here

但是对于statsmodel OLS,它使行一直持续到X = 0,这就是为什么我得到28左右的截距的原因。

所以我想问题是有一种方法可以使用seaborn一直沿趋势线一直延伸到x = 0。

enter image description here

我尝试更改轴,但似乎没有延长线。

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

enter image description here

1 个答案:

答案 0 :(得分:1)

这很奇怪。也许您可以提供更多详细信息,我们将为您提供更好的帮助。我试图重现该问题,但两种方法都得到了相同的拦截。

代码:

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
==============================================================================

下面是Seaborn的剧情: enter image description here