擅长:python、mysql、java
<p>所以,首先,我认为这两条线你做的是完全错误的:</p>
<pre class="lang-py prettyprint-override"><code>y_pred=reg.predict(bank_matrix[['LDO.MI']][lookback:])
Residuals.append(bank_matrix[['EXO.MI']][lookback:].to_numpy()-y_pred)
</code></pre>
<p>你基本上试着对所有的点进行线性回归,从1到20,然后从2到21,从3到22等等。然后你试着将回归拟合到从观察20开始的数据。因此,你得到了5到24的模型,并在此基础上预测了20个观测值直到最后,并得到了预测值和实际值之间的差异(请注意,在你的<code>for</code>循环中<code>bank_matrix[['EXO.MI']][lookback:].to_numpy()</code>不会改变)。你知道吗</p>
<p>我想这里更有意义的是:</p>
<pre class="lang-py prettyprint-override"><code>y_pred=reg.predict(bank_matrix[['LDO.MI']][i-lookback+1:i])
Residuals.append(bank_matrix[['EXO.MI']][i-lookback+1:i].to_numpy()-y_pred)
</code></pre>
<p>所以你要考虑模型的误差,或者:</p>
<pre class="lang-py prettyprint-override"><code>y_pred=reg.predict(bank_matrix[['LDO.MI']][i:])
Residuals.append(bank_matrix[['EXO.MI']][i:].to_numpy()-y_pred)
</code></pre>
<p>因此,您可以尝试将基于当前时间跨度的预测与未来的数据相匹配。你知道吗</p>
<p>现在第一个选项将产生每行19个元素的列表,而另一个选项将产生430个元素的列表,每行减少1个元素,直到最后一行中有1个元素。因为这些都是残差,所以你有一条线,有一个斜率,每个给定的时间跨度有一个树篱,但是你有在这个范围内的观测数,产生每个不同的结果。所以取决于你想如何表达它-你可以让它成为平方残差的和,或者取平均残差-你可以让它成为一个数字,只需要对它进行进一步的变换。你知道吗</p>
<p>希望这有帮助。。。你知道吗</p>