How to plot statsmodels linear regression (OLS) cleanly How to plot statsmodels linear regression (OLS) cleanly pandas pandas

How to plot statsmodels linear regression (OLS) cleanly


As I mentioned in the comments, seaborn is a great choice for statistical data visualization.

import seaborn as snssns.regplot(x='motifScore', y='expression', data=motif)

sns.regplot


Alternatively, you can use statsmodels.regression.linear_model.OLS and manually plot a regression line.

import statsmodels.api as sm# regress "expression" onto "motifScore" (plus an intercept)model = sm.OLS(motif.expression, sm.add_constant(motif.motifScore))p = model.fit().params# generate x-values for your regression line (two is sufficient)x = np.arange(1, 3)# scatter-plot dataax = motif.plot(x='motifScore', y='expression', kind='scatter')# plot regression line on the same axes, set x-axis limitsax.plot(x, p.const + p.motifScore * x)ax.set_xlim([1, 2])

manual


Yet another solution is statsmodels.graphics.regressionplots.abline_plot which takes away some of the boilerplate from the above approach.

import statsmodels.api as smfrom statsmodels.graphics.regressionplots import abline_plot# regress "expression" onto "motifScore" (plus an intercept)model = sm.OLS(motif.expression, sm.add_constant(motif.motifScore))# scatter-plot dataax = motif.plot(x='motifScore', y='expression', kind='scatter')# plot regression lineabline_plot(model_results=model.fit(), ax=ax)

abline_plot