[掃雷]預測分析的二三事
我們都在做預測,但是當你做預測時需要考慮什麼事情呢?預測的方法有很多種,特別是從現在主流的機器學習和Python衍伸出的預測分析。不過我不想討論這類偏向程式的預測分析運作,而是想討論我們如果遵循建模需要的變因來考量,那麼或許是不錯的一個角度。
在這邊,我指的變因不只是自變數而已,而是會影響預測的原因。那麼就讓我一一來分享預測過程中所遭遇的迷惘吧。
但是在監測的同時,「是否真的可以做股價預測呢?」一文內提到的我們一樣是可以做預測。但是預測是建構在我獲得的數據上。這些數字產生了這樣的規律,讓我看到了這樣的數學方程式,然後再根據這規律去預測明天。
什麼影響建模
想要建立模型,那麼就要考量你的模型情況。在「分析法差之毫釐 - 你真認識迴歸分析的二三事?」提到我們慣用的迴歸模型其實分為三個部份,期望值、變異數、序列相關。這其實也對應著迴歸分析的假設。
那回到建模的最初目的就是為了要找出關聯,而且這個可以代表關聯的方程式是可信的。所以建模能夠愈精確愈好,換句話說就是誤差愈少愈好。可是這三個部份當中的前二者其實可以有很多的數學模型變化,所以建模的第一個問題就是要注意模式有沒有配好。沒配好就不用談什麼建模了!
那假設我們可以做到建模的第一個問題,接下來第二個問題就是資料量足夠闡述資訊嗎?為什麼這樣說呢?如果你蒐集的資料是僅有上升階段,那麼預測的結果也會是走上升的。此時千萬不要有像2020年新冠病毒疫情出現!因為你建立的模型無法精準預測,誤差特別大。
資料量問題
對於資料量,你選多,可能因為過去的模式不同而影響了整體的數字結構。你選少,可能因為資訊不足而造成未來的意外出現都無法控制的情況。所以這就是為什麼當我們在挑選資料量時總難免有些困惑。
針對這樣的問題,我自己的方法就是主觀認定適合的資料量,然後持續使用一段時間。這是因為從【統計談股市】粉絲專頁的預測分析得到的經驗。在估量小樣本的疫情資料時,就讓我發現每天新增加的數據很可能會改變整體的數字架構。無論有無變化,我們都需要小心觀察著,才能知道數字架構的改變。這個行為不是在做預測分析,而是做監測。
你會遭遇到的是「規律」是不是足夠幫助你預測,這就是資料量問題。在大數據分析觀念中,當然是資料量愈多愈好,代表資訊量也會更加充足。可是資訊量足夠充足的過程中,也會產生數學模型能夠維持住低誤差。所以這就是為什麼我們需要人工智能分析法來幫助我們,找出最佳的資料筆數。
如果你想主觀認定,那麼又可以怎麼做呢?如果是股市或基金分析的話,通常就會是1年、3年、5年、10年的數據量做報酬率分析,同樣,我們在選擇數據量也可以主觀根據專家常用的這些數據量來進行分析。不過,這樣的選擇方式就會回到前面所寫的問題:數學模型要能夠維持住低誤差!
實例
讓我們用實際的例子來看看吧。就以美國道瓊工業指數當日收盤價來做分析對象吧。自變數選擇前一日的開盤指數、最高指數、最低指數、收盤指數,以及時間變數。
為什麼選擇這些自變數的理由有兩個,第一個是時間序列資料本身就可以使用時間變數衡量,第二個是要選擇相關度最高的數據來解釋才有意義,並且符合迴歸分析的自變數挑選原則。這點是不同於目前主流針對尋找市場原因的論文要求。我們的目的是追求的是精準分析方法。有了精準度才能做預測。所以不同的目的就需要使用不同的自變數,但是這也表示迴歸分析雖然是用於尋找變數間的關聯,但數字結構不同是很難成為迴歸分析內的主要因子。
案例1
資料期間:從2020/06/22往前推100筆的資料
使用近100筆資料,經過預測後,可以得到以時間表示的近100天收盤指數預測
圖1 近100筆資料估計後得到的預測區間
最左邊的區間範圍就是預測明天的區間。如果是從區間上界來看是穩定且緩慢疊高,但是從區間下界來看則是起伏波動比較明顯。至於藍點(實際收盤指數)則偏向下界的點。
近100筆資料相當於半年線再少1個月的資料量。在這100筆的時間範圍中包含整個疫情期間,所以如果單就道瓊工業指數的走法來看,幾乎快要回到當初的高點,委實讓人懷疑。但深思了解現況後,可以發現美國復工後,實體經濟逐漸運轉,加上釋放在外的資金量。換句話說就是先用資金墊實體經濟。聯準會在美國經濟回復到一部份後理應回收資金,但這都是未來的事情,就目前來看,聯準會的政策就是低利率讓資金在外墊高。所以如果美國疫情沒有問題了,勢必會突破之前的高點[註1],才能反映資金擴張影響,以及經濟復甦影響。
案例2
使用更多的數據量來分析與預測又會如何呢?
資料期間:從2020/06/22往前推500筆的資料
使用近500筆資料估計後的方程式,經過預測後,可以得到以時間表示的近100天收盤指數預測
圖2 近500筆資料估計後得到近100筆資料的預測區間
比對一下案例1和2的區間預測圖,有發現不同之處嗎?
- 案例2的縱軸區間範圍較窄
- 案例2的最後三紅點有下滑趨勢;案例1則是上升趨勢
- 案例2最後四紅點是平滑的,案例1最後四點有跳躍點出現
類似的不同之處,可以在不同區段上看到。所以這讓我們知道資料量會影響估計趨勢的結果,同時也影響這預測的結果。
那麼如果直接使用近500筆資料的預測結果又是如何呢?
圖3 近500筆資料估計得到的預測區間
圖3可以清楚看到如果將近500筆資料進行預測區間計算後,過去的歷史走勢主導了整個圖形的型態。相比於近100筆資料跑出來的預測區間(見圖1),新冠疫情影響的收盤指數下跌後回漲走勢不相同。在圖中可以明確顯示近500筆資料多數都是非新冠疫情期間的狀態,以股價指數反映經濟實體情況,但是新冠疫情改變實體經濟情況,而這大幅度的反彈,可見其資金力道。
而圖1或2,因為只有近100筆資料,所以整個圖形型態就會讓走勢較為平緩。最後,讓我們看看預測出來的數字有什麼差異呢?
近100筆資料 | 近500筆資料 | |
期望估計值 | 26167.09 | 25903.34 |
樣本標準差 | 389.11 | 231.12 |
95%預測區間 上漲可能狀態 | 25848.86 27374.11 | 25840.94 26747.25 |
95%預測區間 下跌可能狀態 | 25157.69 26682.95 | 25148.74 26055.05 |
95%預測區間 上+下可能狀態 | 25157.69 27374.11 | 25148.74 26747.25 |
近1日條件下預測上漲的機率 近1日條件下預測上漲的機率 | 0.52 0.48 | 0.596 0.404 |
近2日條件下預測上漲的機率 近2日條件下預測上漲的機率 | 0.54 0.46 | 0.596 0.404 |
近3日條件下預測上漲的機率 近3日條件下預測上漲的機率 | 0.64 0.36 | 0.55 0.45 |
近4日條件下預測上漲的機率 近4日條件下預測上漲的機率 | 0.5 0.5 | 0.43 0.57 |
近5日條件下預測上漲的機率 近5日條件下預測上漲的機率 | 1 0 | 0.45 0.55 |
近6日條件下預測上漲的機率 近6日條件下預測上漲的機率 | 1 0 | 0.44 0.56 |
近7日條件下預測上漲的機率 近7日條件下預測上漲的機率 | ---- | 0.5 0.5 |
近8日條件下預測上漲的機率 近8日條件下預測上漲的機率 | ---- | 1 0 |
觀察上表的情況,可以看出為什麼我們要討論大數據,因為數據量大更能提高獲得的資訊量,從而在估計時就會更為精確,形成精準分析。接著做預測,就能達到精準預測。所以我們可以總結出
- 估計要先準,不是尋找理論上的成因,而是尋找最有相關的變數資料。因為我們的目的是估計準確,而不是要特地討論成因。但是在尋找最有相關的成因,就會帶出最好的變數,但很可能被認為是較無意義的分析。另外,討論成因時,同時也該注意估計準確。
- 資料量的設定,要加入的資料量愈多愈好。但如果可以知道資料有明顯轉折,那麼或許可以分為兩段去估算。但此時,你可能沒有良好的指標幫你做比對。當然為了預測,你很可能捨棄過去的資料。
--------------------------------------------
註1:美國疫情前的高點是經濟最好的時候以及資金量反映出來的結果。換句話說,想要到29000以上的收盤價位,應該是最佳的實體經濟狀態 + 資金量。所以反推方法可讓你知道第二季結束的統計資料,計算出美國釋放出來在外流動的累計資金量 - 最高收盤價狀態時的累計資金總量,剩下的就是因為疫情而造就的資金量。
接著,以美國第二季的生產總值 - 最高收盤價狀態所記錄的生產總值,就是疫情期間的經濟損失。最後比對資金量與經濟損失就能夠知道美國用資金量墊經濟損失的情況。