【问题标题】:How to create as scatter plot with regression line based on statsmodel OLS?如何使用基于 statsmodelS 的回归线创建散点图?
【发布时间】:2018-12-27 01:41:40
【问题描述】:

我很难在散点图上添加回归线(statsmodel OLS 所基于的回归线)。请注意,使用 seaborn 的 lmplot,我可以得到一条线(参见示例),但我想使用来自 statsmodel OLS 的确切线来实现完全一致性。

如何调整下面的代码以将回归线添加到第一个散点图中?

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

data = {'Xvalue': range(20, 30), 'Yvalue': np.random.randint(low=10, high=100, size=10)}

data = pd.DataFrame(data)

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

#Plot
data.plot(kind='scatter', x='Xvalue', y='Yvalue')

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

散点图(试图弄清楚如何在 statsmodel OLS 回归线中添加

seaborn lmplot 及其回归线(试图模仿)

【问题讨论】:

  • 有什么问题或错误?您只是不知道如何绘制 statsmodels 的结果吗?
  • 正确,我只是想让线路通过,以匹配线路通过(匹配 summary() 结果)
  • 这可能是 stackoverflow.com/questions/42261976/… 的副本(应该对你有帮助)
  • 感谢它的工作原理!
  • 顺便说一句 - 我将如何调整 seaborn 以将 x 轴也一直延伸到 0?

标签: python linear-regression seaborn statsmodels


【解决方案1】:

感谢@busybear 的链接,它现在可以工作了!

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

data = {'Xvalue': range(20, 30), 'Yvalue': np.random.randint(low=10, high=100, size=10)}

data = pd.DataFrame(data)

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


#Plot
p
x = np.arange(0,40)
ax = data.plot(kind='scatter', x='Xvalue', y='Yvalue')
ax.plot(x, p.const + p.Xvalue * x)
ax.set_xlim([0,30])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2021-02-06
    • 1970-01-01
    • 2012-06-27
    • 2017-12-28
    • 1970-01-01
    • 2016-05-30
    相关资源
    最近更新 更多