{"id":2,"date":"2014-09-05T04:41:07","date_gmt":"2014-09-05T03:41:07","guid":{"rendered":"http:\/\/localhost\/wordpress-4.0\/wordpress\/?page_id=2"},"modified":"2025-12-12T12:53:02","modified_gmt":"2025-12-12T11:53:02","slug":"algorithm","status":"publish","type":"page","link":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/","title":{"rendered":"Algorithm"},"content":{"rendered":"<p><strong>Singular Spectrum Decomposition (SSD)<\/strong>\u00a0algorithm is highly based on the <strong>Singular Spectrum Analysis (SSA) <\/strong>algorithm, which has been shown suitable for short and noisy time series analysis. SSA is a principal component analysis-based nonparametric spectral estimation method, which uses no prior knowledge about the biology and physics of the system. The main\u00a0advantage of SSA is that its components are not necessarily harmonic functions and can capture highly non-harmonic oscillatory shapes. One main disadvantage is that both the window length, or embedding dimension, and the principal components to choose for reconstructing a specific component series have to be selected manually.\u00a0Those two processes have been automated in the SSD algorithm.<\/p>\n<p>First step of SSD algorithm is <strong>finding the trajectory matrix<\/strong> <strong>X<\/strong>. With respect to standard way of building it, a new approach is proposed.<br \/>\nGiven a time series x(n) of length N and an embedding dimension M, an ( M x N ) matrix <strong>X\u00a0<\/strong>is generated such that its i-th\u00a0row (where i = 1,&#8230;,M)\u00a0\u00a0is obtained as:<br \/>\n<img decoding=\"async\" class=\"mathtex-equation-editor aligncenter\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%20x_%7Bi%7D%20%3D%20(x(i)%2C%5C%3A.%5C%3A.%5C%3A.%5C%3A%2Cx(N)%2C%5C%3Ax(1)%2C%5C%3A.%5C%3A.%5C%3A.%5C%3A%2C%5C%3Ax(i-1))\" alt=\" x_{i} = (x(i),\\:.\\:.\\:.\\:,x(N),\\:x(1),\\:.\\:.\\:.\\:,\\:x(i-1))\" align=\"absmiddle\" \/>Hence:\u00a0<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/ql-cache\/quicklatex.com-909871c57dc6883c142b8405eec90937_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#88;&#61;&#32;&#91;&#32;&#120;&#95;&#123;&#123;&#49;&#125;&#125;&#94;&#123;&#84;&#125;&#44;&#32;&#120;&#95;&#123;&#123;&#50;&#125;&#125;&#94;&#123;&#84;&#125;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#32;&#44;&#32;&#120;&#95;&#123;&#123;&#77;&#125;&#125;&#94;&#123;&#84;&#125;&#93;&#94;&#123;&#84;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"174\" style=\"vertical-align: -5px;\"\/><\/p>\n<p>For example, given the time series\u00a0<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/ql-cache\/quicklatex.com-a654497bfd3b6757579811db758eaf44_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#40;&#110;&#41;&#61;&#32;&#92;&#108;&#101;&#102;&#116;&#32;&#92;&#123;&#32;&#49;&#44;&#50;&#44;&#51;&#44;&#52;&#44;&#53;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#32;&#92;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"151\" style=\"vertical-align: -5px;\"\/>, and an embedding dimension M=3, then the matrix <strong>X<\/strong> is:<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 66px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/ql-cache\/quicklatex.com-34d5b653c93fccac1cd1b9c42fc10cd5_l3.png\" height=\"66\" width=\"181\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#32;&#92;&#32;&#88;&#32;&#61;&#32;&#92;&#108;&#101;&#102;&#116;&#124;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#99;&#99;&#99;&#99;&#125; &#92;&#32;&#49;&#32;&#38;&#32;&#50;&#32;&#38;&#32;&#51;&#38;&#52;&#38;&#53;&#32;&#92;&#92; &#50;&#38;&#51;&#38;&#52;&#38;&#53;&#38;&#49;&#32;&#92;&#92; &#51;&#38;&#52;&#38;&#53;&#38;&#49;&#38;&#50;&#32;&#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#124;&#92;&#93; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>In the SSA algorithm\u00a0matrix\u00a0<strong>X<\/strong>\u00a0 would\u00a0correspond to the 3 x 3 left block of the above matrix:<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 66px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/ql-cache\/quicklatex.com-a3f93f5fb4b0ac08ec38675c529579e1_l3.png\" height=\"66\" width=\"131\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#32;&#92;&#32;&#88;&#32;&#61;&#32;&#92;&#108;&#101;&#102;&#116;&#124;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#99;&#99;&#125; &#92;&#32;&#49;&#32;&#38;&#32;&#50;&#32;&#38;&#32;&#51;&#32;&#92;&#92; &#50;&#38;&#51;&#38;&#52;&#32;&#92;&#92; &#51;&#38;&#52;&#38;&#53;&#32;&#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#124;&#92;&#93; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>Thanks to this new definition of the trajectory matrix in the SSD method, the oscillatory content of\u00a0<strong>X<\/strong> is enhanced and useful properties for the decrease of energy of the residual are provided.<\/p>\n<p>Next, the diagonal averaging procedure needs to be adapted to this new definition of trajectory matrix. In order to carry out the average along the i-th\u00a0cross-diagonal of\u00a0<strong>X<\/strong>, the wrapped part of the right hand block must be correctly appended to the top right of the left hand block.\u00a0With this approach every cross-diagonal has length\u00a0M. An example is shown below:<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 108px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/ql-cache\/quicklatex.com-c996dcf113c7acc4eaa55994c338355a_l3.png\" height=\"108\" width=\"175\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91;&#32;&#92;&#32;&#88;&#32;&#61;&#32;&#92;&#108;&#101;&#102;&#116;&#124;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#99;&#99;&#99;&#99;&#125; &#92; &#38;&#38;&#49;&#38;&#38;&#32;&#92;&#92; &#38;&#49;&#38;&#50;&#38;&#38;&#32;&#92;&#92; &#49;&#32;&#38;&#32;&#50;&#32;&#38;&#32;&#51;&#38;&#52;&#38;&#53;&#32;&#92;&#92; &#50;&#38;&#51;&#38;&#52;&#38;&#53;&#38;&#32;&#92;&#92; &#51;&#38;&#52;&#38;&#53;&#38;&#38;&#32;&#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#124;&#92;&#93; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>However, care has to be taken in case of a sizable trend in the series. To avoid that situation at first iteration, a test for sizable trend\u00a0is performed.\u00a0In case the sizable trend is detected,\u00a0then a standard trajectory matrix is generated to guarantee reliable estimation of the trend. The\u00a0<strong>X<\/strong> found by that method is used in all the following iterations.<\/p>\n<p>Another vital step is\u00a0<strong>choosing the embedding dimension<\/strong>. The following criterion has been adopted for the automated choice of M at iteration j:<\/p>\n<ul>\n<li>the Power Spectral Density (PSD) of the residual time series at iteration j, <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=v_%7Bj%7D(n)%3Dx(n)%20-%20%5Csum%5E%7Bj-1%7D_%7Bk%3D1%7D%20g_%7Bk%7D(n)%20\" alt=\"v_{j}(n)=x(n) - \\sum^{j-1}_{k=1} g_{k}(n) \" align=\"absmiddle\" \/>\u00a0,\u00a0is computed, where <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_k(n)\" alt=\"g_k(n)\" align=\"absmiddle\" \/>\u00a0is the k-th component series estimated by SSD at iteration k. The frequency in its PSD associated with the dominant peak,\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=f_%7B%7Bmax%7D%7D\" alt=\"f_{{max}}\" align=\"absmiddle\" \/>\u00a0is then estimated.<\/li>\n<li>at the first iteration, if the normalized frequency\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=f_%7B%7Bmax%7D%7D%2FF_%7B%7Bs%7D%7D\" alt=\"f_{{max}}\/F_{{s}}\" align=\"absmiddle\" \/>\u00a0(With <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=F_%7B%7Bs%7D%7D\" alt=\"F_{{s}}\" align=\"absmiddle\" \/>\u00a0being the sampling frequency), is less than a given threshold (default equal to\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=10%5E%7B%7B-3%7D%7D\" alt=\"10^{{-3}}\" align=\"absmiddle\" \/>\u00a0in the implementation), a sizable trend is assumed to characterize the residual. M is then set to\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cfrac%7BN%7D%7B3%7D\" alt=\"\\frac{N}{3}\" align=\"absmiddle\" \/>\u00a0in case of a sizable trend present in the time series.<\/li>\n<li>Otherwise and for iterations j &gt; 1, the window length is defined as\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=M%3D1.2*F_%7Bs%7D%7D%2F%7Bf_%7Bmax%7D%7D\" alt=\"M=1.2*F_{s}}\/{f_{max}}\" align=\"absmiddle\" \/>. The factor 1.2 allows the window length to cover a time span 20% larger than the average period of the wanted component series, to improve its identification by SSA.<\/li>\n<\/ul>\n<p>The adaptive choice for M guarantees SSD to provide adaptive spectral filters associated with the dominant oscillations in the residual series, exploiting the property of SSA of concentrating the transfer functions related to the dominant eigenfunction within regions where sharp peaks in the power spectrum occur, facilitating the detection of such oscillations.<\/p>\n<p>Further step is<strong> reconstruction of the j-th\u00a0component series,<\/strong>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_j(n)\" alt=\"g_j(n)\" align=\"absmiddle\" \/>, which\u00a0is carried out as follows: at the first iteration, if a sizable trend has been detected, only the first left and right eigenvectors are used to obtain\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_1(n)\" alt=\"g_1(n)\" align=\"absmiddle\" \/>, such that\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cb%20X_%7B%7B1%7D%7D\" alt=\"\\b X_{{1}}\" align=\"absmiddle\" \/>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%20%3D%20%20%5Csigma_%7B%7B1%7D%7Du_%7B1%7D%7Bv_%7B1%7D%7D%5E%7BT%7D\" alt=\" = \\sigma_{{1}}u_{1}{v_{1}}^{T}\" align=\"absmiddle\" \/>\u00a0and\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_1(n)\" alt=\"g_1(n)\" align=\"absmiddle\" \/>\u00a0is obtained from diagonal averaging of\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cb%20X_%7B%7B1%7D%7D\" alt=\"\\b X_{{1}}\" align=\"absmiddle\" \/>. Indeed, as a sizable trend is the component with the highest energy in the analyzed signal, is should be mainly reflected in the first eigentriple provided by SSA.<\/p>\n<p>Otherwise and for iterations j &gt; 1, a component series\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_j(n)\" alt=\"g_j(n)\" align=\"absmiddle\" \/>\u00a0has to be retrieved such as to describe a well defined time scale. In this sense, its frequency content is to be concentrated in the frequency band [ <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=f_%7B%7Bmax%7D%7D\" alt=\"f_{{max}}\" align=\"absmiddle\" \/>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=-%20%5Cdelta%20f\" alt=\"- \\delta f\" align=\"absmiddle\" \/>,\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=f_%7B%7Bmax%7D%7D\" alt=\"f_{{max}}\" align=\"absmiddle\" \/>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%2B%20%5Cdelta%20f\" alt=\"+ \\delta f\" align=\"absmiddle\" \/>\u00a0] with\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%20%5Cdelta%20f\" alt=\" \\delta f\" align=\"absmiddle\" \/>\u00a0representing half the width of dominant peak in the PSD of the residual time series\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=v_%7B%7Bj%7D%7D(n)\" alt=\"v_{{j}}(n)\" align=\"absmiddle\" \/>. Hence, a subset\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=I_%7Bj%7D\" alt=\"I_{j}\" align=\"absmiddle\" \/>\u00a0is created from all eigentriples whose left eigenvectors show a dominant frequency in their spectra in the range\u00a0 [ <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=f_%7B%7Bmax%7D%7D\" alt=\"f_{{max}}\" align=\"absmiddle\" \/>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=-%20%5Cdelta%20f\" alt=\"- \\delta f\" align=\"absmiddle\" \/>,\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=f_%7B%7Bmax%7D%7D\" alt=\"f_{{max}}\" align=\"absmiddle\" \/>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%2B%20%5Cdelta%20f\" alt=\"+ \\delta f\" align=\"absmiddle\" \/>\u00a0] and the one eigentriple which contributes the most to the energy of the dominant peak of the selected mode. The corresponding component series is then reconstructed by diagonal averaging of the matrix\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=X_%7BIj%7D\" alt=\"X_{Ij}\" align=\"absmiddle\" \/>\u00a0along the cross-diagonals.<\/p>\n<p>Next the width of the dominant peak <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%20%5Cdelta%20f\" alt=\" \\delta f\" align=\"absmiddle\" \/>\u00a0has to be estimated. A spectral model defined by a superposition of Gaussian functions is used for describing PSD profile, The model is defined as a sum of three Gaussian functions, each function representing a spectral peak:<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cgamma(f%2C%5Ctheta)%3D%5Csum_%7Bi%3D1%7D%5E%7B3%7D%20A_ie%5E%7B-%5Cfrac%7B(f-%5Cmu_i)%5E2%7D%7B2%5Csigma_i%5E2%7D%7D\" alt=\"\\gamma(f,\\theta)=\\sum_{i=1}^{3} A_ie^{-\\frac{(f-\\mu_i)^2}{2\\sigma_i^2}}\" align=\"absmiddle\" \/><\/p>\n<p style=\"text-align: left;\">where\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=A_i\" alt=\"A_i\" align=\"absmiddle\" \/>\u00a0is the magnitude of the\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=i%5E%7Bth%7D\" alt=\"i^{th}\" align=\"absmiddle\" \/>\u00a0Gaussian\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Csigma_i\" alt=\"\\sigma_i\" align=\"absmiddle\" \/>\u00a0its width\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cmu_i\" alt=\"\\mu_i\" align=\"absmiddle\" \/>\u00a0its location and\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Ctheta%3D\" alt=\"\\theta=\" align=\"absmiddle\" \/><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cleft%20%5B%20A%5Csigma%20%5Cright%20%5D%5ET\" alt=\"\\left [ A\\sigma \\right ]^T\" align=\"absmiddle\" \/>\u00a0is the parameter vector, with A=[<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=A_1\" alt=\"A_1\" align=\"absmiddle\" \/><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%2CA_2\" alt=\",A_2\" align=\"absmiddle\" \/><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%2CA_3\" alt=\",A_3\" align=\"absmiddle\" \/>] and\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Csigma%3D\" alt=\"\\sigma=\" align=\"absmiddle\" \/><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5B%5Csigma_1%2C%5Csigma_2%2C%5Csigma_3%5D\" alt=\"[\\sigma_1,\\sigma_2,\\sigma_3]\" align=\"absmiddle\" \/>. Then the optimization procedure fits the model to the entire PSD using the following initial parameter values (indexed as\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=(%5Ccdot)%5E%7B(0)%7D\" alt=\"(\\cdot)^{(0)}\" align=\"absmiddle\" \/>):<\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"mathtex-equation-editor aligncenter\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=A%20_%7B1%7D%5E%7B(0)%7D%3D%5Cfrac%7B1%7D%7B2%7DPSD(f_%7Bmax%7D)%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5Csigma%7B_%7B1%7D%7D%5E%7B(0)%7D%3D%20f%3APSD(f)%3D%5Cfrac%7B2%7D%7B3%7DPSD(f_%7Bmax%7D)\" alt=\"A _{1}^{(0)}=\\frac{1}{2}PSD(f_{max})\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\sigma{_{1}}^{(0)}= f:PSD(f)=\\frac{2}{3}PSD(f_{max})\" align=\"absmiddle\" \/><img decoding=\"async\" class=\"mathtex-equation-editor aligncenter\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=A%20_%7B2%7D%5E%7B(0)%7D%3D%5Cfrac%7B1%7D%7B2%7DPSD(f_%7B2%7D)%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5Csigma%7B_%7B2%7D%7D%5E%7B(0)%7D%3D%20f%3APSD(f)%3D%5Cfrac%7B2%7D%7B3%7DPSD(f_%7B2%7D)\" alt=\"A _{2}^{(0)}=\\frac{1}{2}PSD(f_{2})\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\sigma{_{2}}^{(0)}= f:PSD(f)=\\frac{2}{3}PSD(f_{2})\" align=\"absmiddle\" \/><img decoding=\"async\" class=\"mathtex-equation-editor aligncenter\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=A%20_%7B3%7D%5E%7B(0)%7D%3D%5Cfrac%7B1%7D%7B4%7DPSD(f_%7B3%7D)%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5C%3A%5Csigma%7B_%7B3%7D%7D%5E%7B(0)%7D%3D%204%7Cf_%7Bmax%7D-f_%7B2%7D)%7C\" alt=\"A _{3}^{(0)}=\\frac{1}{4}PSD(f_{3})\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\\sigma{_{3}}^{(0)}= 4|f_{max}-f_{2})|\" align=\"absmiddle\" \/><\/p>\n<p style=\"text-align: left;\">\u00a0Next, the optimal values are determined using nonlinear minimization algorithm, such as the Levenberg-Marquardt algorithm. Given the estimated value for\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Csigma_1\" alt=\"\\sigma_1\" align=\"absmiddle\" \/>, a value for\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cdelta%20f\" alt=\"\\delta f\" align=\"absmiddle\" \/>\u00a0is then obtained as\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Cdelta%20f%3D2.5%0A%5Csigma_1\" alt=\"\\delta f=2.5&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt; \\sigma_1\" align=\"absmiddle\" \/>,<\/p>\n<p style=\"text-align: left;\">The choice for\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=X_%7BIj%7D\" alt=\"X_{Ij}\" align=\"absmiddle\" \/>\u00a0avoids the need of identifying the leading eigenvalues with respect to the noise floor. Hence, components describing different scales are automatically discarded as iteration j and left to be identified at future iterations. The underlying hypothesis is that at each iteration SSD picks up the oscillation describing most of the energy in the residual series, under the assumption that SSA tries to find spectral bands with a high percentage of explained energy.<\/p>\n<p style=\"text-align: left;\">Moreover, a second run of the algorithm is carried out on the j-th\u00a0component series just retrieved <img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_j%5E%7B%5B1%5D%7D(n)\" alt=\"g_j^{[1]}(n)\" align=\"absmiddle\" \/>\u00a0(for j = 1, the second run is performed in case of no sizable trend detected). This allows to achieve a better estimate of\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_j%5E%7B%5B1%5D%7D(n)\" alt=\"g_j^{[1]}(n)\" align=\"absmiddle\" \/>\u00a0by polishing up the result of the first run.<\/p>\n<p style=\"text-align: left;\">Finally, a scaling factor a is applied to\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=g_j(n)\" alt=\"g_j(n)\" align=\"absmiddle\" \/>\u00a0such as to adjust its variance to the residual\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=v_j(n)\" alt=\"v_j(n)\" align=\"absmiddle\" \/>, s.t.:<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%5Chat%7Ba%7D%3D%5Cmin_%7Ba%7D%7C%7Cv_j(n)-ag_j(n)%7C%7C%5E2_%7B2%7D%5C%3A%2C%5C%3Agiving%5C%3A%20%5Chat%7Ba%7D%3D%5Cfrac%7Bg%5ETv%7D%7Bg%5ETg%7D%5C%3A%20and%20%5C%3A%5Coverset%7B%5Csim%7D%7Bg%7D_j%7D%3D%5Chat%7Ba%7D%20g_j(n)\" alt=\"\\hat{a}=\\min_{a}||v_j(n)-ag_j(n)||^2_{2}\\:,\\:giving\\: \\hat{a}=\\frac{g^Tv}{g^Tg}\\: and \\:\\overset{\\sim}{g}_j}=\\hat{a} g_j(n)\" align=\"absmiddle\" \/><\/p>\n<p style=\"text-align: left;\">The process is stopped when <strong>the stopping criterion is<\/strong> <strong>met<\/strong>. The normalized mean square error (NMSE) between the residual and the original signal is computed and the decomposition process is stopped when the NMSE is less than a given threshold (default th = 0.1%).<\/p>\n<p style=\"text-align: center;\"><strong>\u00a0<img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=%20NMSE%5E%7B(j)%7D%3D%5Cfrac%7B%5Csum_%7Bi%3D1%7D%5E%7BN%7D(v%5E%7B(j%2B1)%7D(i))%5E2%7D%7B%5Csum_%7Bi%3D1%7D%5E%7BN%7D(x(i))%5E2%7D%20%5C%3Awhere%20%5C%3A%5C%3A%5C%3Av%5E%7B(j%2B1)%7D%3Dv%5E%7B(j)%7D-%5Coverset%7B%5Csim%7D%7Bg%7D%5E%7B(j)%7D(n)\" alt=\" NMSE^{(j)}=\\frac{\\sum_{i=1}^{N}(v^{(j+1)}(i))^2}{\\sum_{i=1}^{N}(x(i))^2} \\:where \\:\\:\\:v^{(j+1)}=v^{(j)}-\\overset{\\sim}{g}^{(j)}(n)\" align=\"absmiddle\" \/>\u00a0<\/strong><\/p>\n<p style=\"text-align: left;\">Then, the final decomposition gives:<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"mathtex-equation-editor\" src=\"http:\/\/chart.apis.google.com\/chart?cht=tx&amp;chl=x(n)%3D%5Csum_%7Bk%3D1%7D%5E%7Bm%7D%5Coverset%7B%5Csim%7Dg_k(n)%2Bv_%7Bm%2B1%7D(n)\" alt=\"x(n)=\\sum_{k=1}^{m}\\overset{\\sim}g_k(n)+v_{m+1}(n)\" align=\"absmiddle\" \/><\/p>\n<p style=\"text-align: left;\">\u00a0where m is the number of component series<\/p>\n<p style=\"text-align: left;\">\u00a0In order to download the article visit this link of\u00a0the Maastricht University Library:<br \/>\n<a href=\"https:\/\/cris.maastrichtuniversity.nl\/en\/publications\/singular-spectrum-decomposition-a-new-method-for-time-series-deco\">SSD taverne version<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Singular Spectrum Decomposition (SSD)\u00a0algorithm is highly based on the Singular Spectrum Analysis (SSA) algorithm, which has been shown suitable for short and noisy time series analysis. SSA is a principal&#8230; <\/p>\n","protected":false},"author":1,"featured_media":37,"parent":0,"menu_order":3,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SSD Singular Spectrum Decomposition - Algorithm<\/title>\n<meta name=\"description\" content=\"Singular Spectrum Decomposition (SSD) is a new adaptive method for decomposing nonlinear and nonstationary time series in narrow-banded components.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SSD Singular Spectrum Decomposition - Algorithm\" \/>\n<meta property=\"og:description\" content=\"Singular Spectrum Decomposition (SSD) is a new adaptive method for decomposing nonlinear and nonstationary time series in narrow-banded components.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/\" \/>\n<meta property=\"og:site_name\" content=\"SSD\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T11:53:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2014\/09\/source-code-programming.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/\",\"url\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/\",\"name\":\"SSD Singular Spectrum Decomposition - Algorithm\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/source-code-programming.jpg\",\"datePublished\":\"2014-09-05T03:41:07+00:00\",\"dateModified\":\"2025-12-12T11:53:02+00:00\",\"description\":\"Singular Spectrum Decomposition (SSD) is a new adaptive method for decomposing nonlinear and nonstationary time series in narrow-banded components.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/#primaryimage\",\"url\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/source-code-programming.jpg\",\"contentUrl\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/source-code-programming.jpg\",\"width\":300,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/algorithm\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Algorithm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/#website\",\"url\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/\",\"name\":\"SSD\",\"description\":\"Singular Spectrum Decomposition\",\"publisher\":{\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/#organization\",\"name\":\"SSD\",\"url\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/SSD.png\",\"contentUrl\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/SSD.png\",\"width\":3368,\"height\":801,\"caption\":\"SSD\"},\"image\":{\"@id\":\"https:\\\/\\\/project.dke.maastrichtuniversity.nl\\\/ssd\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SSD Singular Spectrum Decomposition - Algorithm","description":"Singular Spectrum Decomposition (SSD) is a new adaptive method for decomposing nonlinear and nonstationary time series in narrow-banded components.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/","og_locale":"en_US","og_type":"article","og_title":"SSD Singular Spectrum Decomposition - Algorithm","og_description":"Singular Spectrum Decomposition (SSD) is a new adaptive method for decomposing nonlinear and nonstationary time series in narrow-banded components.","og_url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/","og_site_name":"SSD","article_modified_time":"2025-12-12T11:53:02+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2014\/09\/source-code-programming.jpg","type":"image\/jpeg"}],"twitter_misc":{"Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/","url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/","name":"SSD Singular Spectrum Decomposition - Algorithm","isPartOf":{"@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/#website"},"primaryImageOfPage":{"@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/#primaryimage"},"image":{"@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/#primaryimage"},"thumbnailUrl":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2014\/09\/source-code-programming.jpg","datePublished":"2014-09-05T03:41:07+00:00","dateModified":"2025-12-12T11:53:02+00:00","description":"Singular Spectrum Decomposition (SSD) is a new adaptive method for decomposing nonlinear and nonstationary time series in narrow-banded components.","breadcrumb":{"@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/#primaryimage","url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2014\/09\/source-code-programming.jpg","contentUrl":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2014\/09\/source-code-programming.jpg","width":300,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/algorithm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/"},{"@type":"ListItem","position":2,"name":"Algorithm"}]},{"@type":"WebSite","@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/#website","url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/","name":"SSD","description":"Singular Spectrum Decomposition","publisher":{"@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/#organization","name":"SSD","url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/#\/schema\/logo\/image\/","url":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2023\/04\/SSD.png","contentUrl":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-content\/uploads\/2023\/04\/SSD.png","width":3368,"height":801,"caption":"SSD"},"image":{"@id":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":81,"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":277,"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/pages\/2\/revisions\/277"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/media\/37"}],"wp:attachment":[{"href":"https:\/\/project.dke.maastrichtuniversity.nl\/ssd\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}