Python statsmodels GLM: изменение режима классов при применении 0 и 1 - PullRequest
1 голос
/ 18 января 2020

У меня есть набор данных фондового рынка от GitHub:

import pandas as pd
import numpy as np
import statsmodels.api as sm

Smarket_url = 'https://raw.githubusercontent.com/selva86/datasets/master/Smarket.csv'
#Load data
Smarket = pd.read_csv(Smarket_url)

Я делаю регрессию c с помощью функции GLM пакета statsmodels. Я сделал ту же регрессию, используя R-Studio, и она дает мне те же результаты, за исключением того, что результирующие коэффициенты в R, которые являются отрицательными, отображаются как положительные в Python, и наоборот. В python я изначально использовал:

Smarket_model = sm.formula.glm('Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Lag5 + Volume',
                         data=Smarket,family=sm.families.Binomial()).fit()

Это были результаты:

Intercept      0.1260 
Lag1           0.0731
Lag2           0.0423
Lag3          -0.0111
Lag4          -0.0094 
Lag5          -0.0103 
Volume        -0.1354

Я уменьшил проблему до того, как statsmodels классифицировал выходную переменную: «Запас» было 0, а 'Stock Down' было 1. Поэтому я создал массив numpy, изменив эту конфигурацию на Stock Up = 1 и Stock Down = 0. Затем я использовал вместо этого функцию statsmodel.GML ():

#Create numpy array changing zeros to ones and vice versa
change = np.where(Smarket['Direction']=='Up',1,0)   

#Add intercept
smarket_vars = sm.add_constant(Smarket[['Lag1','Lag2', 'Lag3', 'Lag4','Lag5','Volume']]) 
#Fit model
market_model = sm.GLM(change, smarket_vars,family=sm.families.Binomial() ).fit()

Это дало мне правильные отрицательные коэффициенты:

const         -0.1260      
Lag1          -0.0731      
Lag2          -0.0423      
Lag3           0.0111      
Lag4           0.0094      
Lag5           0.0103     
Volume         0.1354    

Мой вопрос: как мне получить правильные значения, не создавая массив numpy, изменяющий 0 и 1? Почему sm.formula.glm() предположил, что «Stock Up» был 0, а «Stock Down» был 1? Спасибо всем, кто прочитал всю эту чушь и готов помочь мне:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...