Я хочу построить в Python функцию, которая создает простую регрессию OLS со следующим уравнением:
Y_i - Y_i-1 = A + B(X_i - X_i-1) + E
Другими словами, Y_Lag = альфа + бета (X_Lag) + термин ошибки
В настоящее время у меня есть следующий набор данных (это короткая версия)
Примечание: Y = Historic_Rate
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=['Historic_Rate', 'Overnight', '1M', '3M', '6M'])
Итак, я пытаюсь построить то, что я итеративно берупеременная X и поместить ее в простую линейную регрессию, код, который я до сих пор строил, выглядит следующим образом:
#Start the iteration process for the regression to in turn fit 1 parameter
#Import required packages
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
#Import dataset
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=['Historic_Rate', 'Overnight', '1M', '3M', '6M'])
#Y_Lag is always 1 time period only
df['Y_Lag'] = df['Historic_Rate'].shift(1)
#Begin the process with 1 lag, taking one x variable in turn
array = df[0:0]
array.drop(array.columns[[0,5]], axis=1, inplace=True)
for X in array:
df['X_Lag'] = df['X'].shift(1)
Model = df[df.columns[4:5]]
Y = Model['Y_Lag']
X = Model['X_Lag']
Reg_model = sm.OLS(Y,X).fit()
predictions = model.predict(X)
# make the predictions by the model
# Print out the statistics
model.summary()
Итак, в сущности, я хочу создать список заголовков столбцов,который, в свою очередь, будет систематически проходить через мой цикл, и каждая переменная будет отставать, а затем регрессировать против отставшей переменной Y.
Буду также признателен за знание того, как вывести модель. X, где X - X-я итерация массива, для динамического именования переменных.