<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Benjamin Rosenbaum</title>
<link>https://benjamin-rosenbaum.github.io/blog.html</link>
<atom:link href="https://benjamin-rosenbaum.github.io/blog.xml" rel="self" type="application/rss+xml"/>
<description>Academic homepage of Benjamin Rosenbaum — research, courses, and software.</description>
<image>
<url>https://benjamin-rosenbaum.github.io/profile_rosenbaum.jpg</url>
<title>Benjamin Rosenbaum</title>
<link>https://benjamin-rosenbaum.github.io/blog.html</link>
</image>
<generator>quarto-1.10.18</generator>
<lastBuildDate>Wed, 28 Oct 2026 23:00:00 GMT</lastBuildDate>
<item>
  <title>Should you scale your time series for nonlinear analysis?</title>
  <dc:creator>Benjamin Rosenbaum</dc:creator>
  <link>https://benjamin-rosenbaum.github.io/posts/scaling-timeseries/</link>
  <description><![CDATA[ 





<section id="linear-and-nonlinear-analysis" class="level2">
<h2 class="anchored" data-anchor-id="linear-and-nonlinear-analysis">Linear and nonlinear analysis</h2>
<p>Linear time series analysis is popular with observed time series of community abundances from the field. Classically, a multivariate time series of <img src="https://latex.codecogs.com/png.latex?n"> species <img src="https://latex.codecogs.com/png.latex?X_t=(x_%7B1,t%7D,%5Cdots,x_%7Bn,t%7D)"> is log-transformed <img src="https://latex.codecogs.com/png.latex?Y_t=%5Clog(X_t)">, before a multivariate autoregressive model <strong>MAR(1)</strong> is fitted <img src="https://latex.codecogs.com/png.latex?%0Ay_%7Bi,t+1%7D=y_%7Bi,t%7D%20+%20a_i+%5Csum_%7Bj=1%7D%5En%20b_%7Bij%7Dy_%7Bj,t%7D+%5Csum_%7Bj=1%7D%5Em%20c_%7Bij%7Du_%7Bj,t%7D%20+%20%5Cvarepsilon_%7Bi,t%7D%0A"> With matrix algebra, this can be written as <img src="https://latex.codecogs.com/png.latex?%0AY_%7Bt+1%7D=Y_%7Bt%7D%20+%20A+BY_%7Bt%7D+CU_%7Bt%7D%20+%20%5Cvarepsilon_%7Bt%7D%0A"> where <img src="https://latex.codecogs.com/png.latex?B"> is an interaction matrix, and <img src="https://latex.codecogs.com/png.latex?C"> contains the effects of environmental variables <img src="https://latex.codecogs.com/png.latex?U_t">. This model is purely linear. [Something about SSM, MARSS package, etc]</p>
<p>This MAR(1) model actually corresponds to an ecological community model. If we transform densities back to the original scale, we get the discrete-time, multi-species <strong>Gompertz</strong> model.<br>
<img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign%7D%0Ax_%7Bi,t+1%7D%20&amp;=x_%7Bi,t%7D%20%5Ccdot%20%5Cexp%5Cleft(%20a_i+%5Csum_%7Bj=1%7D%5En%20b_%7Bij%7D%5Ctextcolor%7Bred%7D%7By_%7Bj,t%7D%7D+%5Csum_%7Bj=1%7D%5Em%20c_%7Bij%7Du_%7Bj,t%7D%20+%20%5Cvarepsilon_%7Bi,t%7D%20%5Cright)%20%5C%5C%0A&amp;=x_%7Bi,t%7D%20%5Ccdot%20%5Cexp%5Cleft(%20a_i+%5Csum_%7Bj=1%7D%5En%20b_%7Bij%7D%5Ctextcolor%7Bred%7D%7B%5Clog(x_%7Bj,t%7D)%7D+%5Csum_%7Bj=1%7D%5Em%20c_%7Bij%7Du_%7Bj,t%7D%20+%20%5Cvarepsilon_%7Bi,t%7D%20%5Cright)%0A%5Cend%7Balign%7D%0A"></p>
<div class="cell">
<div class="cell-output-display">
<div>
<figure class="figure">
<p><img src="https://benjamin-rosenbaum.github.io/posts/scaling-timeseries/index_files/figure-html/unnamed-chunk-3-1.png" class="img-fluid figure-img" style="width:100.0%"></p>
</figure>
</div>
</div>
</div>
<p>More common in modeling, however, is the generalized Lotka-Volterra model. In its discrete-time version, the <strong>Ricker</strong> model, it reads <img src="https://latex.codecogs.com/png.latex?%0Ax_%7Bi,t+1%7D%20=x_%7Bi,t%7D%20%5Ccdot%20%5Cexp%5Cleft(%20a_i+%5Csum_%7Bj=1%7D%5En%20b_%7Bij%7D%5Ctextcolor%7Bred%7D%7Bx_%7Bj,t%7D%7D+%5Csum_%7Bj=1%7D%5Em%20c_%7Bij%7Du_%7Bj,t%7D%20+%20%5Cvarepsilon_%7Bi,t%7D%20%5Cright)%0A"> On logscale, it becomes an additive model just as the Gompertz, although it is not linear in <img src="https://latex.codecogs.com/png.latex?y"> anymore. However, it is still linear in its parameters, and by defining new predictors <img src="https://latex.codecogs.com/png.latex?%5Cexp(y_i)">, we could still push it through <code>lm(...)</code> to estimate all parameters [link to blog post]. <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign%7D%0Ay_%7Bi,t+1%7D%20&amp;=y_%7Bi,t%7D%20+%20%20a_i+%5Csum_%7Bj=1%7D%5En%20b_%7Bij%7D%5Ctextcolor%7Bred%7D%7Bx_%7Bj,t%7D%7D+%5Csum_%7Bj=1%7D%5Em%20c_%7Bij%7Du_%7Bj,t%7D%20+%20%5Cvarepsilon_%7Bi,t%7D%20%5C%5C%0A&amp;=y_%7Bi,t%7D%20+%20%20a_i+%5Csum_%7Bj=1%7D%5En%20b_%7Bij%7D%5Ctextcolor%7Bred%7D%7B%5Cexp(y_%7Bj,t%7D)%7D+%5Csum_%7Bj=1%7D%5Em%20c_%7Bij%7Du_%7Bj,t%7D%20+%20%5Cvarepsilon_%7Bi,t%7D%20%5C%5C%0A%5Cend%7Balign%7D%0A"></p>
<div class="cell">
<div class="cell-output-display">
<div>
<figure class="figure">
<p><img src="https://benjamin-rosenbaum.github.io/posts/scaling-timeseries/index_files/figure-html/unnamed-chunk-4-1.png" class="img-fluid figure-img" style="width:100.0%"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="scaling-and-reparametrization" class="level2">
<h2 class="anchored" data-anchor-id="scaling-and-reparametrization">Scaling and reparametrization</h2>
<p>For the linear MAR(1) / <strong>Gompertz</strong> model, it makes sense to scale log-transformed observations <img src="https://latex.codecogs.com/png.latex?y_%7Bi,t%7D"> species-wise, i.e., <img src="https://latex.codecogs.com/png.latex?%5Ctilde%20y_%7Bi,t%7D=%5Cfrac%7By_%7Bi,t%7D-%5Ctext%7Bmean%7D(y_i)%7D%7B%5Ctext%7Bsd%7D(y_i)%7D">. This effectively is a reparametrization of the model, with parameter estimates describing relative interaction strength. Setting up the MAR(1) equations for the scaled variables, we get <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign%7D%0A%5Ctilde%20y_%7Bi,t+1%7D%20&amp;=%20%5Ctilde%20y_%7Bi,t%7D%20+%20%5Ctilde%20a_i+%5Csum_%7Bj=1%7D%5En%20%5Ctilde%20b_%7Bij%7D%20%5Ctilde%20y_%7Bj,t%7D+%5Csum_%7Bj=1%7D%5Em%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%20%5C%5C%0A%5Cfrac%7By_%7Bi,t+1%7D-%5Cmu_i%7D%7B%5Csigma_i%7D%20&amp;=%20%5Cfrac%7By_%7Bi,t%7D-%5Cmu_i%7D%7B%5Csigma_i%7D%20+%20%5Ctilde%20a_i%20+%5Csum_%7Bj=1%7D%5En%20%5Ctilde%20b_%7Bij%7D%20%20%5Cfrac%7By_%7Bj,t%7D-%5Cmu_j%7D%7B%5Csigma_j%7D%20+%5Csum_%7Bj=1%7D%5Em%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%0A%5Cend%7Balign%7D%0A"> Now multiplying both sides by <img src="https://latex.codecogs.com/png.latex?%5Csigma_i"> and rearranging coefficients, we get the MAR(1) equations for the original log-abundances <img src="https://latex.codecogs.com/png.latex?y_%7Bi,t%7D">. <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign%7D%0Ay_%7Bi,t+1%7D%20&amp;=%20y_%7Bi,t+1%7D%20+%20%5Csigma_i%5Ctilde%20a_i%20+%5Csum_%7Bj=1%7D%5En%20%5Csigma_i%5Ctilde%20b_%7Bij%7D%20%20%5Cfrac%7By_%7Bj,t%7D-%5Cmu_j%7D%7B%5Csigma_j%7D%20+%5Csum_%7Bj=1%7D%5Em%20%5Csigma_i%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%20%5C%5C%0A&amp;=%20y_%7Bi,t+1%7D%20+%20%5Cunderbrace%7B%5Csigma_i%5Ctilde%20a_i%20-%20%5Csum_%7Bj=1%7D%5En%20%5Cfrac%7B%5Csigma_i%7D%7B%5Csigma_j%7D%5Ctilde%20b_%7Bij%7D%20%5Cmu_j%20%7D_%7B:=%20a_i%7D%20%20+%20%5Csum_%7Bj=1%7D%5En%20%5Cunderbrace%7B%5Cfrac%7B%5Csigma_i%7D%7B%5Csigma_j%7D%5Ctilde%20b_%7Bij%7D%7D_%7B:=b_%7Bij%7D%7D%20%20y_%7Bj,t%7D%20%20+%5Csum_%7Bj=1%7D%5Em%20%5Cunderbrace%7B%5Csigma_i%5Ctilde%20c_%7Bij%7D%7D_%7B:=c_%7Bij%7D%7Du_%7Bj,t%7D%20%5C%5C%0A&amp;=%20%20y_%7Bi,t%7D%20+%20%20a_i+%5Csum_%7Bj=1%7D%5En%20%20b_%7Bij%7D%20%20y_%7Bj,t%7D+%5Csum_%7Bj=1%7D%5Em%20%20c_%7Bij%7Du_%7Bj,t%7D%0A%5Cend%7Balign%7D%0A"></p>
<p>This only worked because the Gompertz model is, on logscale, linear both in the parameters as well as the state variables.</p>
<p>It does not work the same way for the <strong>Ricker</strong> model. Here, reparameterization is only feasible for mean-centering <img src="https://latex.codecogs.com/png.latex?%5Ctilde%20y_%7Bi,t%7D=y_%7Bi,t%7D-%5Ctext%7Bmean%7D(y_i)">.</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign%7D%0A%5Ctilde%20y_%7Bi,t+1%7D%20&amp;=%20%5Ctilde%20y_%7Bi,t%7D%20+%20%5Ctilde%20a_i+%5Csum_%7Bj=1%7D%5En%20%5Ctilde%20b_%7Bij%7D%20%5Cexp(%5Ctilde%20y_%7Bj,t%7D)+%5Csum_%7Bj=1%7D%5Em%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%20%5C%5C%0A%7By_%7Bi,t+1%7D-%5Cmu_i%7D%20&amp;=%20%7By_%7Bi,t%7D-%5Cmu_i%7D%20+%20%5Ctilde%20a_i%20+%5Csum_%7Bj=1%7D%5En%20%5Ctilde%20b_%7Bij%7D%20%20%5Cexp(%7By_%7Bj,t%7D-%5Cmu_j%7D)%20+%5Csum_%7Bj=1%7D%5Em%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%20%5C%5C%0A%7By_%7Bi,t+1%7D%7D%20&amp;=%20%7By_%7Bi,t%7D%7D%20+%20%5Cunderbrace%7B%5Ctilde%20a_i%7D_%7B:=%20a_i%7D%20+%5Csum_%7Bj=1%7D%5En%20%20%5Cunderbrace%7B%5Cfrac%7B%5Ctilde%20b_%7Bij%7D%7D%7B%5Cexp(%5Cmu_j)%7D%7D_%7B:=b_%7Bij%7D%7D%20%20%20%5Cexp(%7By_%7Bj,t%7D%7D)%20+%5Csum_%7Bj=1%7D%5Em%20%5Cunderbrace%7B%5Ctilde%20c_%7Bij%7D%7D_%7B:=c_%7Bij%7D%7Du_%7Bj,t%7D%20%5C%5C%0A&amp;=%20%20y_%7Bi,t%7D%20+%20%20a_i+%5Csum_%7Bj=1%7D%5En%20%20b_%7Bij%7D%20%20%5Cexp(y_%7Bj,t%7D)+%5Csum_%7Bj=1%7D%5Em%20%20c_%7Bij%7Du_%7Bj,t%7D%0A%5Cend%7Balign%7D%0A"></p>
<p>However, scaling <img src="https://latex.codecogs.com/png.latex?%5Ctilde%20y_%7Bi,t%7D=%5Cfrac%7By_%7Bi,t%7D%7D%7B%5Ctext%7Bsd%7D(y_i)%7D"> we get stuck.</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign%7D%0A%5Ctilde%20y_%7Bi,t+1%7D%20&amp;=%20%5Ctilde%20y_%7Bi,t%7D%20+%20%5Ctilde%20a_i+%5Csum_%7Bj=1%7D%5En%20%5Ctilde%20b_%7Bij%7D%20%5Cexp(%5Ctilde%20y_%7Bj,t%7D)+%5Csum_%7Bj=1%7D%5Em%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%20%5C%5C%0A%5Cfrac%7By_%7Bi,t+1%7D%7D%7B%5Csigma_i%7D%20&amp;=%20%5Cfrac%7By_%7Bi,t+1%7D%7D%7B%5Csigma_i%7D%20+%20%5Ctilde%20a_i+%5Csum_%7Bj=1%7D%5En%20%5Ctilde%20b_%7Bij%7D%20%5Cexp%5Cleft(%5Cfrac%7By_%7Bj,t%7D%7D%7B%5Csigma_i%7D%5Cright)+%5Csum_%7Bj=1%7D%5Em%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%20%5C%5C%0Ay_%7Bi,t+1%7D%20&amp;=%20y_%7Bi,t+1%7D%20+%20%5Csigma_i%5Ctilde%20a_i+%5Csum_%7Bj=1%7D%5En%20%5Csigma_i%20%5Ctilde%20b_%7Bij%7D%20%5Cexp(y_%7Bj,t%7D)%5E%7B1/%20%5Csigma_i%7D+%5Csum_%7Bj=1%7D%5Em%20%5Csigma_i%20%5Ctilde%20c_%7Bij%7Du_%7Bj,t%7D%0A%5Cend%7Balign%7D%0A"> The nonlinear transformation of the Ricker-predictors <img src="https://latex.codecogs.com/png.latex?%5Cexp(y_%7Bj,t%7D)"> (raised to the power <img src="https://latex.codecogs.com/png.latex?1/%5Csigma_i">), does not allow us to transform these equations back to the original Ricker model by reparameterization of the model coefficients.</p>
</section>
<section id="conclusions" class="level2">
<h2 class="anchored" data-anchor-id="conclusions">Conclusions</h2>
<p>When fitting an linear MAR(1) on log-scaled population abundances <img src="https://latex.codecogs.com/png.latex?y_%7Bi,t%7D"> we can indeed mean-center and sd-scale the data. The result is still a Gompertz community model, and parameters for the non-scaled abundances can be obtained by simple transformations.</p>
<p>The same holds for mean-centered data in the Ricker model. However, when also sd-scaling the data, we are not fitting a Ricker model anymore. Estimated parameters cannot be transformed back to the coefficients of generalized Lotka-Volterra model.</p>


</section>

 ]]></description>
  <guid>https://benjamin-rosenbaum.github.io/posts/scaling-timeseries/</guid>
  <pubDate>Wed, 28 Oct 2026 23:00:00 GMT</pubDate>
</item>
</channel>
</rss>
