Я новичок в использовании statsmodel в Python (и многих более обобщенных статистических данных в целом), но у меня есть вопрос относительно разницы между тем, как sm.GLM и smf.glm вычисляют свои результаты. Насколько я понимаю, если вы обеспечите добавленный коэффициент к sm.GLM, они должны давать одинаковые результаты. Однако при расчете я обнаружил, что полученные коэффициенты являются отрицательным результатом других.
Например, используя образцы наборов данных из книги «Введение в статистическое обучение для Python»:
Код: Выделить всё
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.formula.api as smf
import statsmodels.api as sm
np.random.seed(0)
Default = pd.read_csv('../data/Default.csv')
X = Default[["balance", "income"]]
Y_=Default.default=='Yes'
X=sm.add_constant(X)
glmtest=sm.GLM(Y_,X,family=sm.families.Binomial()).fit()
glmtest.summary()
дает коэффициент баланса 0,0056. Однако если я использую smf
Код: Выделить всё
mod1 = smf.glm(
formula="default~income+balance", data=Default, family=sm.families.Binomial()
).fit()
mod1.summary()
Вместо этого я получаю коэффициент -0,0056. Остальные коэффициенты аналогично имеют перевернутые знаки. Поскольку результаты те же, что и при игнорировании знака, я полагаю, что что-то происходит под капотом, и хочу понять, почему.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... ficient-re