我想使用迭代方案在Python中“预白”一个时间序列。我知道使用R可能更容易。我不想使用LMS方法,而是想使用泰尔森估值器。我正在使用Wang和Swail(2000)中所述的方法
我们拟合以下模型:Yt=a+bt+Xt,其中a和b是Yt的截距和斜率参数,Xt是滞后1自相关的红噪声过程c:Xt=cXt-1+et
(1)计算时间序列Yt的滞后1自相关系数c,作为c的第一个估计值。如果c<;0.05,序列相关性的影响可以忽略不计。回归参数按原样使用
(2)否则,对预白化时间序列Wt=(Yt-cYt-1)/(1-c)执行泰尔森估计
如何用Python编写第(2)部分
(3)从原始数据系列中删除估计的趋势成分,并重新估计c。换句话说,我们对c的新估计是时间序列Yt-bt的滞后1自相关
(4)继续进行迭代,直到c<;0.005或cs和bs之间的差异非常小,即0.0001
https://www.pacificclimate.org/~wernera/zyp/Wang%20Swail%202001%20JOC.pdf
from sklearn.linear_model import LinearRegression, TheilSenRegressor
from sklearn.linear_model import RANSACRegressor
from statsmodels.tsa import stattools
x = df['ordinal'].values
y = df[variable].values
res = stats.theilslopes(y, x, 0.95)
a = res[1]
b = res[0]
autocorr = stattools.acf(y)
autocorr_coeff = autocorr[1]
c = autocorr_coeff
if c < 0.05:
#perform trend analysis on Wt = (Yt - cYt-1)/(1-c)
(Yt - cYt-1)/(1-c) = a + c*b/(1-c) + b*t + et/(1-c)
res = stats.theilslopes(-, -, 0.95)
目前没有回答
相关问题 更多 >
编程相关推荐