Я пытаюсь определить матрицу ковариантности остатков.
Мне было интересно, могу ли я получить некоторую помощь по приведенному ниже коду.
Приведенный ниже код работает, как в это выводит значение. Я просто не уверен, правильное ли это значение.
Так мы вычисляем ковариацию невязок модели линейной регрессии -
import nonlinshrink as nls
import statsmodels.api as sm
import scipy
import yfinance as yf
import numpy as np
index = yf.download("SPY", start="2010-02-05", end="2019-05-31")
stock_data=yf.download("AMZN", start="2010-02-05", end="2019-05-31")
close_price_index=index['Close']
close_price_stock=stock_data['Close']
rets_index = close_price_index.pct_change().dropna()
rets_stock=close_price_stock.pct_change().dropna()
X=rets_index
y=rets_index
X = sm.add_constant(X)
model = sm.OLS(y, X).fit()
predictions = model.predict(X) # make the predictions by the model
alpha=model.params[0]
residuals=model.resid.to_numpy()
B = np.reshape(residuals, (-1, 2))
covry=nls.shrink_cov(B, k=2)
Ниже приведен пример, я не уверен, что моя математика верна
import numpy as np
import nonlinshrink as nls
p = 2
n = 14
sigma = np.eye(p, p)
data = np.random.multivariate_normal(np.zeros(p), sigma, n) + np.arange(n)[:, np.newaxis] + 1
x = np.vstack((np.ones(n).T, np.arange(n).T)).T
betahat = np.linalg.solve(np.dot(x.T, x), np.dot(x.T, data))
datahat = np.dot(x, betahat)
res = data - datahat
sigma_tilde = nls.shrink_cov(res, k=2) # corresponding to 2 degrees of freedom