分析短時間序列數據中的向上/向下模式
我沒有經常處理時間序列數據,所以我正在尋找一些關於如何最好地處理這個特定問題的指針。
假設我有以下數據 - 如下圖所示:
這裡的 x 軸上有年份。y 軸是衡量“不平等”的指標,例如它可能是一個國家的收入不平等。
對於這個問題,我有興趣詢問數據是否逐年上升/下降(因為需要更好的描述)。本質上,我想問的是,如果去年的不平等比去年上升,那麼現在是否有可能回落?起伏的大小也可能很重要。
我認為類似
wavelet analysis
或Fourier analysis
可能會有所幫助,儘管我以前沒有使用過這些,而且我相信這樣的樣本量太小了。會對我跟進的任何想法/建議感興趣。
編輯:
這些是此圖表的數據:
# year value #1 1956 0.9570912 #2 1957 1.0303563 #3 1958 0.9568302 #4 1959 1.1449074 #5 1960 0.8962963 #6 1961 1.0431552 #7 1962 0.8050077 #8 1963 0.8533181 #9 1964 0.9971713 #10 1965 1.0453083 #11 1966 0.8221328 #12 1967 1.0594876 #13 1968 1.1244195 #14 1969 1.0705498 #15 1970 0.8669457 #16 1971 0.8757319 #17 1972 1.0815189 #18 1973 1.1458959 #19 1974 1.2782848 #20 1975 1.0729718 #21 1976 1.1569416 #22 1977 1.2063673 #23 1978 1.1509700 #24 1979 1.1172020 #25 1980 1.0691429 #26 1981 1.0907407 #27 1982 1.1753854 #28 1983 0.9440187 #29 1984 1.1214175 #30 1985 1.2777778 #31 1986 1.2141739 #32 1987 0.9481722 #33 1988 1.1484652 #34 1989 0.7968458 #35 1990 1.1721074 #36 1991 1.1569523 #37 1992 0.8160300 #38 1993 0.9483291 #39 1994 1.0898612 #40 1995 0.8196819 #41 1996 1.0297017 #42 1997 1.0207769 #43 1998 0.9720285 #44 1999 0.8685848 #45 2000 0.9228595 #46 2001 0.9171540 #47 2002 1.0470085 #48 2003 0.9313437 #49 2004 1.0943982 #50 2005 1.0248419 #51 2006 0.9392917 #52 2007 0.9666248 #53 2008 1.1243693 #54 2009 0.8829184 #55 2010 0.9619517 #56 2011 1.0030864 #57 2012 1.1576998 #58 2013 0.9944945
它們的
R
格式如下:structure(list(year = structure(1:58, .Label = c("1956", "1957", "1958", "1959", "1960", "1961", "1962", "1963", "1964", "1965", "1966", "1967", "1968", "1969", "1970", "1971", "1972", "1973", "1974", "1975", "1976", "1977", "1978", "1979", "1980", "1981", "1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989", "1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013" ), class = "factor"), value = c(0.957091237579043, 1.03035630567276, 0.956830206830207, 1.14490740740741, 0.896296296296296, 1.04315524964493, 0.805007684426229, 0.853318117977528, 0.997171336206897, 1.04530832219251, 0.822132760780104, 1.05948756976154, 1.1244195265602, 1.07054981337927, 0.866945712836124, 0.875731948296804, 1.081518931763, 1.1458958958959, 1.27828479729065, 1.07297178130511, 1.15694159981794, 1.20636732623034, 1.15097001763668, 1.11720201026986, 1.06914289768696, 1.09074074074074, 1.17538544689082, 0.944018731375053, 1.12141754850088, 1.27777777777778, 1.21417390277039, 0.948172198172198, 1.14846524606799, 0.796845829569407, 1.17210737869653, 1.15695226716732, 0.816029959161985, 0.94832907620264, 1.08986124767836, 0.819681861348528, 1.02970169141241, 1.02077687443541, 0.972028455959697, 0.868584838281808, 0.922859547859548, 0.917153996101365, 1.04700854700855, 0.931343718539713, 1.09439821062628, 1.02484191508582, 0.939291692822766, 0.966624816907303, 1.12436929683306, 0.882918437563246, 0.961951667980037, 1.00308641975309, 1.15769980506823, 0.994494494494494 )), row.names = c(NA, -58L), class = "data.frame", .Names = c("year", "value"))
如果序列不相關,則不必要地採用差異會注入自相關。即使序列是自相關的,無根據的差分也是不合適的。簡單的想法和簡單的方法通常會產生不良的副作用。模型識別過程(ARIMA)從原始序列開始,可能會導致差異,但除非有理論上的理由,否則它不應該從無根據的差異開始。如果您希望可以發布您的短時間系列,我將用它來向您解釋如何確定該系列的模型。
收到數據後:
您的數據的 ACF 最初(或最終)在 ACF 和 PACF
和這裡只是 ACF 並沒有指示任何 ARIMA 過程:
但是,您的數據似乎有兩個級別的變化……一個在 1972 年,另一個在 1992 年……他們似乎幾乎取消了電平轉換。一個有用的模型還可能包括在 1989、1959 和 1983 年期間合併三個不尋常的值。然後是方程
,這裡
是模型統計數據:此處
是實際/擬合和預測,此處是殘差圖,表明模型充分性。殘差的 acf 證實了這一點。最後擬合和預測總結了調查結果。
總之,該系列(可能是一個比率)沒有顯著的自回歸記憶,但確實具有一些明顯的確定性結構(統計顯著)。所有模型都是錯誤的,但有些是有用的(GEP Box)。
經過一番討論..如果要對差異進行建模,那麼將得到以下模型…帶有 ACTUAL/FIT 和 FORECAST 。預測看起來非常相似…… MA 係數有效地取消了差分算子。