Добавить уравнение линии регрессии и R-квадрат к PLOTNINE - PullRequest
1 голос
/ 10 апреля 2020

Легко получить линейное наилучшее соответствие данных на плотине - используя stat_smooth(method="gls"). Однако я не могу понять, как вывести коэффициенты на линию наилучшего соответствия или значение R2. Ggplot в R имеет функцию stat_regline_equation(), которая делает это, но я не могу найти аналогичный инструмент в plotnine.

В настоящее время я использую statsmodels.formula.api.ols, чтобы получить эти значения, но должен быть лучший способ внутри плотнина

PS: я новичок ie во всем, что касается кодирования.

1 Ответ

0 голосов
/ 13 апреля 2020

Я использовал следующий код; не PlotNine, но очень легко реализовать.

import plotnine as p9
from scipy import stats
from plotnine.data import mtcars as df

#calculate best fit line
slope, intercept, r_value, p_value, std_err = stats.linregress(df['wt'],df['mpg'])
df['fit']=df.wt*slope+intercept
#format text 
txt= 'y = {:4.2e} x + {:4.2E};   R^2= {:2.2f}'.format(slope, intercept, r_value*r_value)
#create plot. The 'factor' is a nice trick to force a discrete color scale
plot=(p9.ggplot(data=df, mapping= p9.aes('wt','mpg', color = 'factor(gear)'))
    + p9.geom_point(p9.aes())
    + p9.xlab('Wt')+ p9.ylab(r'MPG')
    + p9.geom_line(p9.aes(x='wt', y='fit'), color='black')
    + p9.annotate('text', x= 3, y = 35, label = txt))
#for some reason, I have to print my plot 
print(plot)
...