Почему я получаю разные результаты для sm.OLS и sklearn.linear_model, хотя я использую один и тот же вход? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь запустить регрессионную модель с двумя разными функциями: OLS из statsmodels.api и linear_regression из sklearn, выходные данные, похоже, сильно отличаются друг от друга.

Вот мой код:

import statsmodels.api as sm
import pandas as pd
import matplotlib
import scipy.stats as stats
import matplotlib.pyplot as plt
from patsy import dmatrices
from sklearn import linear_model

data = pd.read_excel("2001_SCF_Pivot.xlsx")
y,x = dmatrices("np.log(RETQLIQ) ~ W_P_ADJ+np.power(W_P_ADJ,2)+np.power(W_P_ADJ,3)+INCOME+np.power(INCOME,2)+WHITE+AGE+EDUC+FEMALE+SINGLE",data = data)

LinearRegression = linear_model.LinearRegression()
ols = LinearRegression.fit(x,y)
sm_prediction = ols.predict(x)

model_fit = sm.OLS(y,x)
results = model_fit.fit()
sklearn_prediction = results.predict(x)

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

Вы можете найти соответствующий график здесь: https://imgur.com/a/OkqCcd1

...