问题陈述:
我在pandas数据框中有一些很好的数据。我想对它进行简单的线性回归:
使用statmodels,我执行回归。现在,我如何得到我的情节?我试过statsmodels的plot_fit
方法,但情节有点古怪:
我希望得到一条水平线,它代表回归的实际结果。
Statsmodels有多种绘制回归曲线的方法(a few more details about them here),但似乎没有一种是超级简单的“只在数据上绘制回归线”--plot_fit
似乎是最接近的方法。
问题:
- 上面的第一张图片来自pandas的plot函数,它返回一个
matplotlib.axes._subplots.AxesSubplot
。我可以很容易地将回归线叠加到该图上吗? - 在statmodels中有什么功能我忽略了吗?
- 有没有更好的方法来统计这个数字?
两个相关问题:
- Plotting Pandas OLS linear regression results
- Getting the regression line to plot from a Pandas regression
两人似乎都没有一个好的答案。
示例数据
motifScore expression
6870 1.401123 0.55
10456 1.188554 -1.58
12455 1.476361 -1.75
18052 1.805736 0.13
19725 1.110953 2.30
30401 1.744645 -0.49
30716 1.098253 -1.59
30771 1.098253 -2.04
abline_plot
我试过了,但似乎不起作用...不知道为什么:
2条答案
按热度按时间pbwdgjma1#
正如我在评论中提到的,
seaborn
是统计数据可视化的绝佳选择。或者,可以使用
statsmodels.regression.linear_model.OLS
手动绘制回归线。另一种解决方案是
statsmodels.graphics.regressionplots.abline_plot
,它从上述方法中去除了一些样板。3duebb1j2#
我同意@Igor Rauch的观点,当涉及到绘制简单回归拟合线时,seaborn非常容易使用(特别是因为OLS拟合是在引擎盖下完成的)。
使用seaborn,您可以关闭
ci
,传递kwargs用于线和散点。相关的
statsmodels
方法是abline_plot()
。它使用matplotlib.lines.Line2D
构建引擎盖下的拟合线;因此,如果轴限制设置不当,则可能不会显示该线。例如,对于默认限制((0,1),(0,1)),样本数据的拟合线根本不会显示出来。它不绘制原始数据,因此必须单独绘制。由于abline是一条拟合线,它可能会穿过分散的标记,因此不需要调整轴限制。请注意,在
abline_plot()
之前绘制散点图可能更好,以获得更明确定义的轴限制。如果您想坚持使用
statsmodels.graphics
,还有另一个绘图仪值得查看:plot_ccpr()
。因为这绘制了CCPR,它的主要功能是查看特定回归量对因变量的影响(对于模型y=a+b*x
,绘制x against b*x
),它将被常数项关闭。如果y-刻度并不重要,它是有用的。