2016-07-22 68 views
0

adfuller()中使用的迴歸方法是什麼?我正在對時間序列進行擴展的dickey更全面的測試,我正在嘗試兩種不同的方式來做到這一點。迴歸方法用於statsmodels adfuller()?

首先我用pandas.diff()得到價格dy的變化。然後,我將原始時間序列作爲自變量y以及dy作爲從屬關係轉換爲statsmodels.OLS(dy,y)並獲得結果。然後,我提取斜率參數model.params[1]和斜率參數model.bse[1]的標準誤差。這些術語的商數是Dickey Fuller檢驗統計量,我稱之爲DF = model.params[1]/model.bse[1]

其次,我奇時間價格序列傳遞到adfuller()這樣:

adfstat, pvalue, critvalues, resstore = ts.adfuller(y.y,regression='c',store=True,regresults=True) 

現在,讓迪基富勒檢驗統計量,我只是通過 DF = resstore.tvalues[1]

使用OLS我得到:

DF = -1.81495580198 

隨着adfuller():

DF = -1.56386414181 

我想知道這兩種方法有什麼區別? adfuller()是否在內部執行與OLS不同的線性迴歸?我發現OLS的結果根據我從中得到的例子是無可否認的正確。但我更喜歡使用adfuller(),因爲它爲測試統計提供了臨界值作爲輸出的一部分。此外,似乎有對adfuller()結果許多回歸係數:

print resstore.resols.params ==> 
[-0.00491391 0.02366782 -0.00295179 0.01354619 0.06399901 -0.06018851 
-0.00328142 -0.03876784 0.02934003 -0.10224276 0.00227549 0.01042279 
-0.04627873 0.05503934 -0.02707106 0.02664511 -0.02428741 0.04894767 
-0.06206492 0.00508655] 

我通過獲取迴歸直線的斜率確定均值迴歸的半衰期。看起來這裏adfuller()正在計算20階迴歸?這看起來不正確。也許我做錯了,但?有人可以點亮adfuller()

回答

2

這可以通過在adfuller的輸入中設置maxlag = 1來解決()