Python Как вычислить и сохранить остатки в регрессии FOR-LOOP - PullRequest
1 голос
/ 09 октября 2019

Название описывает мою проблему для следующего скрипта (пожалуйста, запустите его сначала, а затем прочитайте мой последний вопрос):

Теперь весь код:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pandas_datareader as pdr
from sklearn.linear_model import LinearRegression
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import datetime    

tickers=['EXO.MI','LDO.MI']
end=datetime.date.today()
gap=datetime.timedelta(days=650)
start=end- gap

Bank=pdr.get_data_yahoo(tickers,start=start,end=end)
bank_matrix=Bank['Adj Close']
bank_matrix=bank_matrix.dropna()

exor=bank_matrix['EXO.MI']
leonardo=bank_matrix['LDO.MI']

Regressione=pd.DataFrame(data=np.zeros((len(exor),3)),columns=['Intercetta','Hedge','Residuals'],index=bank_matrix['EXO.MI'].index)
lookback=20
Hedge=[]
Intercetta=[]
Residuals=[]

for i in range(lookback,len(exor)):
    reg=LinearRegression().fit(bank_matrix[['LDO.MI']][i-lookback+1:i],bank_matrix[['EXO.MI']][i-lookback+1:i])
    # Regressione.iloc[Regressione[i,'Hedge']]=reg.coef_[0]
    Hedge.append(reg.coef_[0])
    Intercetta.append(reg.intercept_)
    y_pred=reg.predict(bank_matrix[['LDO.MI']][lookback:])
    Residuals.append(bank_matrix[['EXO.MI']][lookback:].to_numpy()-y_pred)
Regressione=pd.DataFrame(list(zip(Intercetta,Hedge,Residuals)),columns=['Intercetta','Hedge','Residuals'])
Regressione.set_index(bank_matrix[['EXO.MI']].index[lookback:],inplace=True)

Код работает, однакоУ меня есть 2 вопроса:

  1. Это 'reg._residues' реальные остатки от Y (реальное значение 'EXO.MI') и y предсказано? Я спрашиваю, потому что график остатков былвсе, кроме нормально распределенного или стационарного
  2. Ребята, я схожу с ума: КАК МОЖНО СЧИТАТЬ ЖИЗНЕННЫЕ ОСТАТКИ В 'FOR'LOOP? попытался:
    1. сделать разницу между реальными значениями y и reg.predict
    2. сделать ручное вычисление: y_predicted = Intercetta + Hedge * bank_matrix [['LDO.MI]]

    Но Python всегда сообщает мне о проблемах. Честно говоря, мне очень трудно понять, как Python работает для этого ....

    Спасибо

...