R語言代寫k-Shape時間序列聚類方法對股票價格時間序列聚類


 

原文 :http://tecdat.cn/?p=3726

這次,我們將使用k-Shape時間序列聚類方法檢查與我們有業務關系的公司的股票收益率的時間序列。

執行環境如下。

  • R:3.5.1

企業對企業交易和股票價格

 
在本研究中,我們將研究具有交易關系的公司的價格變化率的時間序列的相似性,而不是網絡結構的分析。
由於特定客戶的銷售額與供應商公司的銷售額之比較大,當客戶公司的股票價格發生變化時,對供應商公司股票價格的反應被認為更大。 

 k-Shape

k-Shape [Paparrizos和Gravano,2015]是一種關注時間序列形狀的時間序列聚類方法。在我們進入k-Shape之前,讓我們談談時間序列的不變性和常用時間序列之間的距離。

 

時間序列距離測度

歐幾里德距離(ED)和動態時間扭曲(DTW)通常用作距離測量值,用於時間序列之間的比較。

兩個時間序列x =(x1,...,xm)和y =(y1,...,ym)的ED,其中m是系列的長度如下。

  \ begin {eqnarray *} ED(\ vec {x},\ vec {y})= \ sqrt {\ sum_ {i = 1} ^ m(x_i-y_i)^ 2} \ end {eqnarray *}

DTW是ED的擴展,允許局部和非線性對齊。

  \ begin {eqnarray *} DTW(\ vec {x},\ vec {y})= min \ sqrt {\ sum_ {i = 1} ^ k w_i \ end {eqnarray *}

k-Shape提出稱為基於形狀的距離(SBD)的距離。

k-Shape算法

k-Shape聚類側重於縮放和移位的不變性。k-Shape有兩個主要特征:基於形狀的距離(SBD)和時間序列形狀提取。

SBD

互相關是在信號處理領域中經常使用的度量。使用FFT(+α)代替DFT來提高計算效率。

  \ begin {eqnarray *} CC(\ vec {x},\ vec {y})= F ^ {-1} {F(\ vec {x})* F(\ vec {y})} \ end {eqnarray *}

歸一化互相關(系數歸一化)NCCc是互相關系列除以單個系列自相關的幾何平均值。檢測NCCc最大的位置ω。

  \ begin {eqnarray *} SBD(\ vec {x},\ vec {y})= 1-max_w \ left(\ frac {CC_w(\ vec {x},\ vec {y})}} {\ sqrt {R_0 (\ vec {x},\ vec {x})\ cdot R_0(\ vec {y},\ vec {y})}} \ right)\ end {eqnarray *}

SBD取0到2之間的值,兩個時間序列越接近0就越相似。

形狀提取

通過SBD找到時間序列聚類的質心向量 有關詳細的表示法,請參閱文章。

  \begin{eqnarray*} \vec{\mu}_{k}^{*} = argmax_{\vec{\mu}_{k}} \sum_{\vec{x}_i \in P_k} NCC_c(\vec{x_i}, \vec{\mu}_{k})^2 \\ = argmax_{\vec{\mu}_{k}} \sum_{\vec{x}_i \in P_k} \left(\frac{max_w CC_w(\vec{x_i}, \vec{\mu}_{k})}{\sqrt{R_0(\vec{x_i}, \vec{x_i}) \cdot R_0(\vec{\mu}_{k}}, \vec{\mu}_{k}})}} \right) \\ = argmax_{\vec{\mu}_{k}} \sum_{\vec{x}_i \in P_k} (\vec{x_i} \cdot \vec{\mu}_{k})^2 \\ = argmax_{\vec{\mu}_{k}} \vec{\mu}_{k}^{\mathrm{T}} \cdot \sum_{\vec{x}_i \in P_k} (\vec{x_i} \cdot \vec{x_i}^{\mathrm{T}})^2 \cdot \vec{\mu}_{k} \\ = argmax_{\vec{\mu}_{k}} \vec{\mu}_{k}^{\mathrm{T}} \cdot S \cdot \vec{\mu}_{k} \\ = argmax_{\vec{\mu}_{k}} \frac{\vec{\mu}_{k}^{\mathrm{T}} \cdot Q^{\mathrm{T}} \cdot S \cdot Q \cdot \vec{\mu}_{k}}{\vec{\mu}_{k}^{\mathrm{T}} \cdot \vec{\mu}_{k}} \\ = argmax_{\vec{\mu}_{k}} \frac{\vec{\mu}_{k}^{\mathrm{T}} \cdot M \cdot \vec{\mu}_{k}}{\vec{\mu}_{k}^{\mathrm{T}} \cdot \vec{\mu}_{k}} \end{eqnarray*}

k-Shape的整個算法如下。

k-Shape通過像k-means這樣的迭代過程為每個時間序列分配簇。

  1. 將每個時間序列與每個聚類的質心向量進行比較,並將其分配給最近的質心向量的聚類
  2. 更新群集質心向量

重復上述步驟1和2,直到集群成員中沒有發生更改或迭代次數達到最大值。

 R 語言k-Shape

 

> start <- "2014-01-01"
> df_7974 %>%
+     filter(date > as.Date(start))
# A tibble: 1,222 x 10
   date        open  high   low close   volume close_adj change rate_of_change  code
                                 
 1 2014-01-06 14000 14330 13920 14320  1013000     14320    310       0.0221    7974
 2 2014-01-07 14200 14380 14060 14310   887900     14310    -10      -0.000698  7974
 3 2014-01-08 14380 16050 14380 15850  3030500     15850   1540       0.108     7974
 4 2014-01-09 15520 15530 15140 15420  1817400     15420   -430      -0.0271    7974
 5 2014-01-10 15310 16150 15230 16080  2124100     16080    660       0.0428    7974
 6 2014-01-14 15410 15755 15370 15500  1462200     15500   -580      -0.0361    7974
 7 2014-01-15 15750 15880 15265 15360  1186800     15360   -140      -0.00903   7974
 8 2014-01-16 15165 15410 14940 15060  1606600     15060   -300      -0.0195    7974
 9 2014-01-17 15100 15270 14575 14645  1612600     14645   -415      -0.0276    7974
10 2014-01-20 11945 13800 11935 13745 10731500     13745   -9

 缺失度量與前一個工作日的值相互補充。(K-Shape允許一些偏差,但以防萬一)

每種股票的股票價格和股票價格變化率。

如果將“部分”指定為列表,則將tsclust(),zscore作為“preproc”,“sbd”作為距離,以及centroid =“shape”的系列數字向量的類型,它變為k-Shape。

聚類結果如下。

> df_res %>%
+     arrange(cluster)
  cluster centroid_dist code           name
1       1     0.1897561 1928     積水ハウス
2       1     0.2196533 6479 ミネベアミツミ
3       1     0.1481051 8411         みずほ
4       2     0.3468301 6658 シライ電子工業
5       2     0.2158674 6804       ホシデン
6       2     0.2372485 7974         任天堂

Nintendo,Hosiden和Siray Electronics Industries被分配到同一個集群。Hosiden在2016年對任天堂的銷售比例為50.5%,這表明公司之間的業務關系也會影響股價的變動。
另一方面,MinebeaMitsumi成為另一個集群,但是在2017年Mitsumi與2017年的Minebea合並, 沒有應對2016年7月Pockemon Go發布時股價飆升的影響 。

 

如果您有任何疑問,請在下面發表評論。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM