【发布时间】:2020-02-07 00:15:45
【问题描述】:
标题概述了我对以下脚本的问题(请先运行它,然后阅读我的最后一个问题):
现在是整个代码:
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 个问题:
- 'reg._residues' 是来自 Y('EXO.MI' 的实际值)和 y 预测的真实残差吗?我之所以这么问,是因为残差图除了正态分布或平稳之外,其余都是正常分布或静止的
- 伙计们,我快疯了:我如何计算“FOR”循环中的日常残差?????
我的意思是,我试图:
- 在实际 y 值和 reg.predict 之间做出区别
- 进行手动计算:y_predicted= Intercetta + Hedge*bank_matrix[['LDO.MI]]
但是 Python 总是向我报告问题。老实说,我很难理解 Python 是如何工作的......
谢谢
【问题讨论】:
-
sn-p 不起作用。我在
import datetime中进行了编辑,因为这不会以任何方式破坏代码。y_pred=reg.predict(bank_matrix[['LDO.MI']][lookback:]) Residuals.append(bank_matrix[['EXO.MI']][lookback:].to_numpy()-y_pred)也引发了我的错误,但y_pred=reg.predict(bank_matrix[['LDO.MI']][lookback:]) Residuals.append(bank_matrix[['EXO.MI']][lookback:]-y_pred)工作正常。但我没有将其包含在编辑中,因为由于版本可能不同,它可能对您有用。
标签: python loops for-loop regression