I need to perform a rolling linear regression for X periods at a time. I have the following pandas dataframe:
value
0 4354
1 7564
2 657
3 7876
I can perform a linear regression on the whole dataframe by using scipy as follows:
from scipy import stats
slope, intercept, r_value, p_value, std_err = stats.linregress(df.index, df['value'])
And then to get the linear regression line I do:
df['linreg'] = intercept + slope * df.index
But what I have been unable to figure out how to do is a rolling linear regression, for example with a 20 row rolling window.