Как получить результаты численного подбора при построении регрессии в морском дне?

Если я использую морскую библиотеку в Python для построения результата линейной регрессии, есть ли способ узнать числовые результаты регрессии? Например, мне может понадобиться узнать коэффициенты подгонки или R 2 подгонки.

Я мог бы повторно запустить ту же самую установку, используя базовый интерфейс statsmodels, но это, казалось бы, было бы ненужным дублирующим усилием, и в любом случае я хотел бы иметь возможность сравнить полученные коэффициенты, чтобы быть уверенным, что числовые результаты одинаковы как то, что я вижу в сюжете.

Ответ 1

Нет никакого способа сделать это.

По моему мнению, попросить библиотеку визуализации дать вам результаты статистического моделирования в обратном порядке. statsmodels, библиотека моделирования, позволяет вам подгонять модель, а затем рисовать график, который точно соответствует подходящей модели. Если вам нужно это точное соответствие, этот порядок операций имеет для меня больше смысла.

Вы можете сказать "но графики в statsmodels не имеют столько эстетических опций, сколько seaborn". Но я думаю, что это имеет смысл - statsmodels - это библиотека моделирования, которая иногда использует визуализацию в сервисе моделирования. seaborn - это библиотека визуализации, которая иногда использует моделирование в сервисе визуализации. Хорошо специализироваться и плохо пытаться сделать все.

К счастью, как seaborn, так и statsmodels используйте tidy data. Это означает, что вам действительно нужно очень мало дублирования усилий, чтобы получить как графики, так и модели с помощью соответствующих инструментов.

Ответ 2

Просматривая доступный в настоящее время документ, ближайший я смог определить, можно ли теперь выполнить эту функцию, если вы используете модуль scipy.stats.pearsonr.

r2 = stats.pearsonr("pct", "rdiff", df)

При попытке заставить его работать непосредственно в фреймворке Pandas, из-за нарушения основных требований к входному входному сигналу произошла ошибка:

TypeError: pearsonr() takes exactly 2 arguments (3 given)

Мне удалось найти другого пользователя Pandas Seaborn, который, очевидно, решил it: https://github.com/scipy/scipy/blob/v0.14.0/scipy/stats/stats.py#L2392

sns.regplot("rdiff", "pct", df, corr_func=stats.pearsonr);

Но, к сожалению, мне не удалось заставить это работать, поскольку, по-видимому, автор создал свой собственный "corr_func", либо есть недокументированный метод прохождения аргументов Seaborn, доступный с использованием более ручного метода:

# x and y should have same length.
    x = np.asarray(x)
    y = np.asarray(y)
    n = len(x)
    mx = x.mean()
    my = y.mean()
    xm, ym = x-mx, y-my
    r_num = np.add.reduce(xm * ym)
    r_den = np.sqrt(ss(xm) * ss(ym))
    r = r_num / r_den

# Presumably, if abs(r) > 1, then it is only some small artifact of floating
# point arithmetic.
r = max(min(r, 1.0), -1.0)
df = n-2
if abs(r) == 1.0:
    prob = 0.0
else:
    t_squared = r*r * (df / ((1.0 - r) * (1.0 + r)))
    prob = betai(0.5*df, 0.5, df / (df + t_squared))
return r, prob

Надеемся, что это поможет продвинуть этот первоначальный запрос в сторону промежуточного решения, поскольку там очень нужна утилита для добавления статистики соответствия регрессии к пакету Seaborn в качестве замены тому, что можно легко получить из MS-Excel или линейного плана Matplotlib.