Вывод статистической регрессии - PullRequest
0 голосов
/ 23 сентября 2019

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

Я пытаюсь создать модель для переменной «Направление», которая принимает значение 0, есливозврат на соответствующую дату был отрицательным и 1, если он был положительным.Объяснительные переменные - это (5) лаги возвратов.Df13 содержит лаги, а также направление для каждой наблюдаемой даты.Я попробовал этот код, и, как я уже говорил, он не выдает ошибку, а говорит: «Оптимизация успешно завершена. Текущее значение функции: 0.682314 Итерации 5

Однако я хотел бы увидеть типичную таблицу со всеми значениями бета-версии, их значимостьюи т. д.

Кроме того, что бы вы сказали, поскольку Direction - это двоичная переменная, может быть, лучше использовать logit вместо линейной модели? Однако в задании это выглядит как линейная модель.

И, наконец, мне жаль, что он не отображается здесь правильно, но я не знаю, как написать в виде кода или вставить мой фрейм данных

import numpy as np

import pandas as pd

from sklearn.model_selection import train_test_split

import os

import itertools

from sklearn import preprocessing

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import accuracy_score

import statsmodels.api as sm

import matplotlib.pyplot as plt

from statsmodels.sandbox.regression.predstd import wls_prediction_std

...



X = df13[['Lag1', 'Lag2', 'Lag3', 'Lag4', 'Lag5']]
Y = df13['Direction']

X = sm.add_constant(X)


model = sm.Logit(Y.astype(float), X.astype(float)).fit()
predictions = model.predict(X)

print_model = model.summary
print(print_model)

Редактировать: я уверен, что это должен быть логитрегрессия, поэтому я обновил эту часть

1 Ответ

1 голос
/ 23 сентября 2019

Я не знаю, является ли это непреднамеренным, но похоже, что вам нужно определить X и Y отдельно:

X = df13[['Lag1', 'Lag2', 'Lag3', 'Lag4', 'Lag5']]

Y = df13['Direction']

Во-вторых, я не знаком со statsmodel, но я бы попробовал преобразоватьваши датафреймы в массивы.Вы можете сделать это с помощью

Xnum = X.to_numpy() 

ynum = y.to_numpy() 

и попробовать передать их регрессорам.

...