Browse Source

update

master
Florian Boergel 4 months ago
parent
commit
42a64f44f1
  1. BIN
      docs/02_stats_files/figure-html/cell-14-output-1.png
  2. BIN
      docs/02_stats_files/figure-html/cell-17-output-2.png
  3. BIN
      docs/02_stats_files/figure-html/cell-21-output-2.png
  4. BIN
      docs/02_stats_files/figure-html/cell-25-output-1.png
  5. BIN
      docs/02_stats_files/figure-html/cell-26-output-1.png
  6. BIN
      docs/02_stats_files/figure-html/cell-9-output-2.png
  7. 2
      docs/search.json
  8. 24
      docs/sitemap.xml
  9. 283
      docs/stats.html
  10. 677
      nbs/02_stats.ipynb
  11. 15
      stormTracking/00_storm_detection_cci.ipynb

BIN
docs/02_stats_files/figure-html/cell-14-output-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/02_stats_files/figure-html/cell-17-output-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
docs/02_stats_files/figure-html/cell-21-output-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
docs/02_stats_files/figure-html/cell-25-output-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
docs/02_stats_files/figure-html/cell-26-output-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
docs/02_stats_files/figure-html/cell-9-output-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

2
docs/search.json

File diff suppressed because one or more lines are too long

24
docs/sitemap.xml

@ -2,50 +2,50 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://florianboergel.github.io/drcstools/wavelet.html</loc>
<lastmod>2023-02-13T18:57:21.514Z</lastmod>
<lastmod>2023-02-13T19:02:26.005Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/stats.html</loc>
<lastmod>2023-02-13T18:57:21.896Z</lastmod>
<lastmod>2023-02-13T19:02:26.379Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/ergom.html</loc>
<lastmod>2023-02-13T18:57:22.210Z</lastmod>
<lastmod>2023-02-13T19:02:26.694Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/mom_validation.html</loc>
<lastmod>2023-02-13T18:57:22.533Z</lastmod>
<lastmod>2023-02-13T19:02:27.031Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/read_data.html</loc>
<lastmod>2023-02-13T18:57:22.826Z</lastmod>
<lastmod>2023-02-13T19:02:27.338Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/lanczos_filter.html</loc>
<lastmod>2023-02-13T18:57:23.129Z</lastmod>
<lastmod>2023-02-13T19:02:27.645Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/mom_preprocessing_obc.html</loc>
<lastmod>2023-02-13T18:57:23.439Z</lastmod>
<lastmod>2023-02-13T19:02:27.956Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/helper_functions.html</loc>
<lastmod>2023-02-13T18:57:23.740Z</lastmod>
<lastmod>2023-02-13T19:02:28.271Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/09_mom_preprocessing_mergetime.html</loc>
<lastmod>2023-02-13T18:57:24.050Z</lastmod>
<lastmod>2023-02-13T19:02:28.600Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/lfca.html</loc>
<lastmod>2023-02-13T18:57:24.350Z</lastmod>
<lastmod>2023-02-13T19:02:28.901Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/derivative.html</loc>
<lastmod>2023-02-13T18:57:24.651Z</lastmod>
<lastmod>2023-02-13T19:02:29.194Z</lastmod>
</url>
<url>
<loc>https://florianboergel.github.io/drcstools/index.html</loc>
<lastmod>2023-02-13T18:57:24.952Z</lastmod>
<lastmod>2023-02-13T19:02:29.498Z</lastmod>
</url>
</urlset>

283
docs/stats.html

@ -314,54 +314,45 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
</section>
<section id="example" class="level3">
<h3 class="anchored" data-anchor-id="example">Example</h3>
<div class="cell">
<div class="cell" data-execution_count="9">
<div class="sourceCode cell-code" id="cb4"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> matplotlib.pyplot <span class="im">as</span> plt</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
</div>
<div class="cell" data-execution_count="10">
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>time <span class="op">=</span> np.linspace(<span class="dv">1</span>, <span class="dv">100</span>, <span class="dv">100</span>)</span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>lat, lon <span class="op">=</span> np.ogrid[<span class="op">-</span><span class="dv">45</span>:<span class="dv">45</span>:<span class="ot">50j</span>, <span class="dv">0</span>:<span class="dv">360</span>:<span class="ot">100j</span>]</span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> np.ones((time.shape[<span class="dv">0</span>], </span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a> lat.shape[<span class="dv">0</span>],</span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a> lon.shape[<span class="dv">1</span>]))</span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> y <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lat.shape[<span class="dv">0</span>]):</span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> x <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lon.shape[<span class="dv">1</span>]):</span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a> noise[:, y, x] <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi) <span class="op">*</span> noise[:, y, x] <span class="op">+</span> <span class="dv">3</span> <span class="op">*</span> np.random.rand(time.shape[<span class="dv">0</span>])</span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>, <span class="st">'lat'</span>, <span class="st">'lon'</span>], noise)}</span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time, <span class="st">'lat'</span>: lat.ravel(), <span class="st">'lon'</span>: lon.ravel()}</span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>time <span class="op">=</span> np.linspace(<span class="dv">1</span>, <span class="dv">100</span>, <span class="dv">100</span>)</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a>lat, lon <span class="op">=</span> np.ogrid[<span class="op">-</span><span class="dv">45</span>:<span class="dv">45</span>:<span class="ot">50j</span>, <span class="dv">0</span>:<span class="dv">360</span>:<span class="ot">100j</span>]</span>
<div class="cell" data-execution_count="11">
<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>index <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi)</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a>a0, a1 <span class="op">=</span> regression(dataset.noise.values, index)</span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> np.ones((time.shape[<span class="dv">0</span>], </span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a> lat.shape[<span class="dv">0</span>],</span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a> lon.shape[<span class="dv">1</span>]))</span>
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> y <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lat.shape[<span class="dv">0</span>]):</span>
<span id="cb6-9"><a href="#cb6-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> x <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lon.shape[<span class="dv">1</span>]):</span>
<span id="cb6-10"><a href="#cb6-10" aria-hidden="true" tabindex="-1"></a> noise[:, y, x] <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi) <span class="op">*</span> noise[:, y, x] <span class="op">+</span> <span class="dv">3</span> <span class="op">*</span> np.random.rand(time.shape[<span class="dv">0</span>])</span>
<span id="cb6-11"><a href="#cb6-11" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-12"><a href="#cb6-12" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>, <span class="st">'lat'</span>, <span class="st">'lon'</span>], noise)}</span>
<span id="cb6-13"><a href="#cb6-13" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time, <span class="st">'lat'</span>: lat.ravel(), <span class="st">'lon'</span>: lon.ravel()}</span>
<span id="cb6-14"><a href="#cb6-14" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a>dataset[<span class="st">'a0'</span>] <span class="op">=</span> ((<span class="st">"lat"</span>, <span class="st">"lon"</span>), a0)</span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a>dataset[<span class="st">'a1'</span>] <span class="op">=</span> ((<span class="st">"lat"</span>, <span class="st">"lon"</span>), a1)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-execution_count="12">
<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Pick any point and see how good index works as a predictor</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a>aoi <span class="op">=</span> dataset.sel(lon <span class="op">=</span> <span class="dv">150</span>, lat <span class="op">=</span> <span class="dv">2</span>, method <span class="op">=</span> <span class="st">"nearest"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>index <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi)</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a>a0, a1 <span class="op">=</span> regression(dataset.noise.values, index)</span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a>dataset[<span class="st">'a0'</span>] <span class="op">=</span> ((<span class="st">"lat"</span>, <span class="st">"lon"</span>), a0)</span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a>dataset[<span class="st">'a1'</span>] <span class="op">=</span> ((<span class="st">"lat"</span>, <span class="st">"lon"</span>), a1)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell" data-execution_count="13">
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>aoi.noise.plot(label<span class="op">=</span><span class="st">"Original signal"</span>)</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a>plt.plot(aoi.time, aoi[<span class="st">'a0'</span>].values <span class="op">+</span> aoi[<span class="st">'a1'</span>].values <span class="op">*</span> index, label<span class="op">=</span><span class="st">"Linear regression of noisy signal onto index"</span>)</span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a>plt.legend()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="13">
<pre><code>&lt;matplotlib.legend.Legend at 0x1786f7be0&gt;</code></pre>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb10"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Pick any point and see how good index works as a predictor</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a>aoi <span class="op">=</span> dataset.sel(lon <span class="op">=</span> <span class="dv">150</span>, lat <span class="op">=</span> <span class="dv">2</span>, method <span class="op">=</span> <span class="st">"nearest"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb12"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a>aoi.noise.plot(label<span class="op">=</span><span class="st">"Original signal"</span>)</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a>plt.plot(aoi.time, aoi[<span class="st">'a0'</span>].values <span class="op">+</span> aoi[<span class="st">'a1'</span>].values <span class="op">*</span> index, label<span class="op">=</span><span class="st">"Linear regression of noisy signal onto index"</span>)</span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a>plt.legend()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell-output cell-output-display">
<p><img src="02_stats_files/figure-html/cell-9-output-2.png" class="img-fluid"></p>
</div>
</div>
<hr>
@ -387,30 +378,27 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
<blockquote class="blockquote">
<pre><code> segments_fit (X, Y, count)</code></pre>
</blockquote>
<div class="cell">
<div class="sourceCode cell-code" id="cb17"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> numpy <span class="im">as</span> np</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> pylab <span class="im">as</span> pl</span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> make_test_data(seg_count, point_count):</span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a> x <span class="op">=</span> np.random.uniform(<span class="dv">2</span>, <span class="dv">10</span>, seg_count)</span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a> x <span class="op">=</span> np.cumsum(x)</span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a> x <span class="op">*=</span> <span class="dv">10</span> <span class="op">/</span> x.<span class="bu">max</span>()</span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a> y <span class="op">=</span> np.cumsum(np.random.uniform(<span class="op">-</span><span class="dv">1</span>, <span class="dv">1</span>, seg_count))</span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true" tabindex="-1"></a> X <span class="op">=</span> np.random.uniform(<span class="dv">0</span>, <span class="dv">10</span>, point_count)</span>
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true" tabindex="-1"></a> Y <span class="op">=</span> np.interp(X, x, y) <span class="op">+</span> np.random.normal(<span class="dv">0</span>, <span class="fl">0.05</span>, point_count)</span>
<span id="cb17-11"><a href="#cb17-11" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> X, Y</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
</div>
<div class="cell" data-execution_count="20">
<div class="sourceCode cell-code" id="cb13"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> numpy <span class="im">as</span> np</span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> pylab <span class="im">as</span> pl</span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> make_test_data(seg_count, point_count):</span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true" tabindex="-1"></a> x <span class="op">=</span> np.random.uniform(<span class="dv">2</span>, <span class="dv">10</span>, seg_count)</span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true" tabindex="-1"></a> x <span class="op">=</span> np.cumsum(x)</span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true" tabindex="-1"></a> x <span class="op">*=</span> <span class="dv">10</span> <span class="op">/</span> x.<span class="bu">max</span>()</span>
<span id="cb13-8"><a href="#cb13-8" aria-hidden="true" tabindex="-1"></a> y <span class="op">=</span> np.cumsum(np.random.uniform(<span class="op">-</span><span class="dv">1</span>, <span class="dv">1</span>, seg_count))</span>
<span id="cb13-9"><a href="#cb13-9" aria-hidden="true" tabindex="-1"></a> X <span class="op">=</span> np.random.uniform(<span class="dv">0</span>, <span class="dv">10</span>, point_count)</span>
<span id="cb13-10"><a href="#cb13-10" aria-hidden="true" tabindex="-1"></a> Y <span class="op">=</span> np.interp(X, x, y) <span class="op">+</span> np.random.normal(<span class="dv">0</span>, <span class="fl">0.05</span>, point_count)</span>
<span id="cb13-11"><a href="#cb13-11" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> X, Y</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb19"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a>X, Y <span class="op">=</span> make_test_data(<span class="dv">10</span>, <span class="dv">2000</span>)</span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a>px, py <span class="op">=</span> segments_fit(X, Y, <span class="dv">8</span>)</span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a>pl.plot(X, Y, <span class="st">"."</span>)</span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a>pl.plot(px, py, <span class="st">"-or"</span>)<span class="op">;</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell" data-execution_count="21">
<div class="sourceCode cell-code" id="cb14"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>X, Y <span class="op">=</span> make_test_data(<span class="dv">10</span>, <span class="dv">2000</span>)</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a>px, py <span class="op">=</span> segments_fit(X, Y, <span class="dv">8</span>)</span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a>pl.plot(X, Y, <span class="st">"."</span>)</span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a>pl.plot(px, py, <span class="st">"-or"</span>)<span class="op">;</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display">
<p><img src="02_stats_files/figure-html/cell-14-output-1.png" class="img-fluid"></p>
</div>
</div>
<hr>
@ -444,37 +432,40 @@ Returns:
- regression slope and intercept,
- p-value
- standard error on regression between the two datasets along their aligned time dimension. </code></pre>
<div class="cell">
<div class="sourceCode cell-code" id="cb24"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a>time <span class="op">=</span> np.linspace(<span class="dv">1</span>, <span class="dv">100</span>, <span class="dv">100</span>)</span>
<span id="cb24-2"><a href="#cb24-2" aria-hidden="true" tabindex="-1"></a>lat, lon <span class="op">=</span> np.ogrid[<span class="op">-</span><span class="dv">45</span>:<span class="dv">45</span>:<span class="ot">50j</span>, <span class="dv">0</span>:<span class="dv">360</span>:<span class="ot">100j</span>]</span>
<span id="cb24-3"><a href="#cb24-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-4"><a href="#cb24-4" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> np.ones((time.shape[<span class="dv">0</span>], </span>
<span id="cb24-5"><a href="#cb24-5" aria-hidden="true" tabindex="-1"></a> lat.shape[<span class="dv">0</span>],</span>
<span id="cb24-6"><a href="#cb24-6" aria-hidden="true" tabindex="-1"></a> lon.shape[<span class="dv">1</span>]))</span>
<span id="cb24-7"><a href="#cb24-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-8"><a href="#cb24-8" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> y <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lat.shape[<span class="dv">0</span>]):</span>
<span id="cb24-9"><a href="#cb24-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> x <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lon.shape[<span class="dv">1</span>]):</span>
<span id="cb24-10"><a href="#cb24-10" aria-hidden="true" tabindex="-1"></a> noise[:, y, x] <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi) <span class="op">*</span> noise[:, y, x] <span class="op">+</span> <span class="dv">3</span> <span class="op">*</span> np.random.rand(time.shape[<span class="dv">0</span>])</span>
<span id="cb24-11"><a href="#cb24-11" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-12"><a href="#cb24-12" aria-hidden="true" tabindex="-1"></a>index <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi)</span>
<span id="cb24-13"><a href="#cb24-13" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-14"><a href="#cb24-14" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>, <span class="st">'lat'</span>, <span class="st">'lon'</span>], noise),</span>
<span id="cb24-15"><a href="#cb24-15" aria-hidden="true" tabindex="-1"></a> <span class="st">'index'</span>: ([<span class="st">'time'</span>], index)}</span>
<span id="cb24-16"><a href="#cb24-16" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time, <span class="st">'lat'</span>: lat.ravel(), <span class="st">'lon'</span>: lon.ravel()}</span>
<span id="cb24-17"><a href="#cb24-17" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span>
<span id="cb24-18"><a href="#cb24-18" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-19"><a href="#cb24-19" aria-hidden="true" tabindex="-1"></a>results <span class="op">=</span> linear_regression_lag(dataset.index, dataset.noise)</span>
<span id="cb24-20"><a href="#cb24-20" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-21"><a href="#cb24-21" aria-hidden="true" tabindex="-1"></a>aoi <span class="op">=</span> dataset.sel(lon <span class="op">=</span> <span class="dv">150</span>, lat <span class="op">=</span> <span class="dv">2</span>, method <span class="op">=</span> <span class="st">"nearest"</span>)</span>
<span id="cb24-22"><a href="#cb24-22" aria-hidden="true" tabindex="-1"></a>results_loc <span class="op">=</span> results.sel(lon <span class="op">=</span> <span class="dv">150</span>, lat <span class="op">=</span> <span class="dv">2</span>, method <span class="op">=</span> <span class="st">"nearest"</span>)</span>
<span id="cb24-23"><a href="#cb24-23" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-24"><a href="#cb24-24" aria-hidden="true" tabindex="-1"></a>aoi.noise.plot(label<span class="op">=</span><span class="st">"Original signal"</span>)</span>
<span id="cb24-25"><a href="#cb24-25" aria-hidden="true" tabindex="-1"></a>plt.plot(aoi.time,</span>
<span id="cb24-26"><a href="#cb24-26" aria-hidden="true" tabindex="-1"></a> results_loc[<span class="st">'intercept'</span>].values <span class="op">+</span> results_loc[<span class="st">'slope'</span>].values <span class="op">*</span> dataset.index,</span>
<span id="cb24-27"><a href="#cb24-27" aria-hidden="true" tabindex="-1"></a> label<span class="op">=</span><span class="st">"Linear regression of noisy signal onto index"</span>)</span>
<span id="cb24-28"><a href="#cb24-28" aria-hidden="true" tabindex="-1"></a>plt.legend()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell" data-execution_count="24">
<div class="sourceCode cell-code" id="cb18"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a>time <span class="op">=</span> np.linspace(<span class="dv">1</span>, <span class="dv">100</span>, <span class="dv">100</span>)</span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a>lat, lon <span class="op">=</span> np.ogrid[<span class="op">-</span><span class="dv">45</span>:<span class="dv">45</span>:<span class="ot">50j</span>, <span class="dv">0</span>:<span class="dv">360</span>:<span class="ot">100j</span>]</span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> np.ones((time.shape[<span class="dv">0</span>], </span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true" tabindex="-1"></a> lat.shape[<span class="dv">0</span>],</span>
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true" tabindex="-1"></a> lon.shape[<span class="dv">1</span>]))</span>
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true" tabindex="-1"></a><span class="cf">for</span> y <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lat.shape[<span class="dv">0</span>]):</span>
<span id="cb18-9"><a href="#cb18-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> x <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">0</span>, lon.shape[<span class="dv">1</span>]):</span>
<span id="cb18-10"><a href="#cb18-10" aria-hidden="true" tabindex="-1"></a> noise[:, y, x] <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi) <span class="op">*</span> noise[:, y, x] <span class="op">+</span> <span class="dv">3</span> <span class="op">*</span> np.random.rand(time.shape[<span class="dv">0</span>])</span>
<span id="cb18-11"><a href="#cb18-11" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-12"><a href="#cb18-12" aria-hidden="true" tabindex="-1"></a>index <span class="op">=</span> np.sin(time<span class="op">/</span><span class="dv">2</span><span class="op">*</span>np.pi)</span>
<span id="cb18-13"><a href="#cb18-13" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-14"><a href="#cb18-14" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>, <span class="st">'lat'</span>, <span class="st">'lon'</span>], noise),</span>
<span id="cb18-15"><a href="#cb18-15" aria-hidden="true" tabindex="-1"></a> <span class="st">'index'</span>: ([<span class="st">'time'</span>], index)}</span>
<span id="cb18-16"><a href="#cb18-16" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time, <span class="st">'lat'</span>: lat.ravel(), <span class="st">'lon'</span>: lon.ravel()}</span>
<span id="cb18-17"><a href="#cb18-17" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span>
<span id="cb18-18"><a href="#cb18-18" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-19"><a href="#cb18-19" aria-hidden="true" tabindex="-1"></a>results <span class="op">=</span> linear_regression_lag(dataset.index, dataset.noise)</span>
<span id="cb18-20"><a href="#cb18-20" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-21"><a href="#cb18-21" aria-hidden="true" tabindex="-1"></a>aoi <span class="op">=</span> dataset.sel(lon <span class="op">=</span> <span class="dv">150</span>, lat <span class="op">=</span> <span class="dv">2</span>, method <span class="op">=</span> <span class="st">"nearest"</span>)</span>
<span id="cb18-22"><a href="#cb18-22" aria-hidden="true" tabindex="-1"></a>results_loc <span class="op">=</span> results.sel(lon <span class="op">=</span> <span class="dv">150</span>, lat <span class="op">=</span> <span class="dv">2</span>, method <span class="op">=</span> <span class="st">"nearest"</span>)</span>
<span id="cb18-23"><a href="#cb18-23" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-24"><a href="#cb18-24" aria-hidden="true" tabindex="-1"></a>aoi.noise.plot(label<span class="op">=</span><span class="st">"Original signal"</span>)</span>
<span id="cb18-25"><a href="#cb18-25" aria-hidden="true" tabindex="-1"></a>plt.plot(aoi.time,</span>
<span id="cb18-26"><a href="#cb18-26" aria-hidden="true" tabindex="-1"></a> results_loc[<span class="st">'intercept'</span>].values <span class="op">+</span> results_loc[<span class="st">'slope'</span>].values <span class="op">*</span> dataset.index,</span>
<span id="cb18-27"><a href="#cb18-27" aria-hidden="true" tabindex="-1"></a> label<span class="op">=</span><span class="st">"Linear regression of noisy signal onto index"</span>)</span>
<span id="cb18-28"><a href="#cb18-28" aria-hidden="true" tabindex="-1"></a>plt.legend()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="24">
<pre><code>&lt;matplotlib.legend.Legend at 0x1786f5030&gt;</code></pre>
</div>
<div class="cell-output cell-output-display">
<p><img src="02_stats_files/figure-html/cell-17-output-2.png" class="img-fluid"></p>
</div>
</div>
<hr>
@ -484,45 +475,44 @@ Returns:
<blockquote class="blockquote">
<pre><code> detrend_dim (da, dim, deg=1)</code></pre>
</blockquote>
<div class="cell">
<div class="sourceCode cell-code" id="cb27"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> detrend(da, dims, deg<span class="op">=</span><span class="dv">1</span>):</span>
<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a> <span class="co">"""Linear along possible multiple dimensions</span></span>
<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb27-4"><a href="#cb27-4" aria-hidden="true" tabindex="-1"></a><span class="co"> Args:</span></span>
<span id="cb27-5"><a href="#cb27-5" aria-hidden="true" tabindex="-1"></a><span class="co"> da (xr.DataArray): contains data</span></span>
<span id="cb27-6"><a href="#cb27-6" aria-hidden="true" tabindex="-1"></a><span class="co"> dims (string, list): Dimension for detrending, multiple dimensions need to be provided as a list</span></span>
<span id="cb27-7"><a href="#cb27-7" aria-hidden="true" tabindex="-1"></a><span class="co"> deg (int, optional): Defaults to 1.</span></span>
<span id="cb27-8"><a href="#cb27-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb27-9"><a href="#cb27-9" aria-hidden="true" tabindex="-1"></a><span class="co"> Returns:</span></span>
<span id="cb27-10"><a href="#cb27-10" aria-hidden="true" tabindex="-1"></a><span class="co"> xr.DataArray: detrended dataArray</span></span>
<span id="cb27-11"><a href="#cb27-11" aria-hidden="true" tabindex="-1"></a><span class="co"> """</span> </span>
<span id="cb27-12"><a href="#cb27-12" aria-hidden="true" tabindex="-1"></a> da_detrended <span class="op">=</span> da.copy()</span>
<span id="cb27-13"><a href="#cb27-13" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">isinstance</span>(dims, <span class="bu">list</span>): </span>
<span id="cb27-14"><a href="#cb27-14" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> dim <span class="kw">in</span> dims:</span>
<span id="cb27-15"><a href="#cb27-15" aria-hidden="true" tabindex="-1"></a> da_detrended <span class="op">=</span> detrend_dim(da_detrended, dim, deg<span class="op">=</span>deg)</span>
<span id="cb27-16"><a href="#cb27-16" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
<span id="cb27-17"><a href="#cb27-17" aria-hidden="true" tabindex="-1"></a> da_detrended <span class="op">=</span> detrend_dim(da_detrended, dim<span class="op">=</span>dims, deg<span class="op">=</span>deg)</span>
<span id="cb27-18"><a href="#cb27-18" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> da_detrended</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
</div>
<div class="cell" data-execution_count="26">
<div class="sourceCode cell-code" id="cb21"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> detrend(da, dims, deg<span class="op">=</span><span class="dv">1</span>):</span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a> <span class="co">"""Linear along possible multiple dimensions</span></span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true" tabindex="-1"></a><span class="co"> Args:</span></span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true" tabindex="-1"></a><span class="co"> da (xr.DataArray): contains data</span></span>
<span id="cb21-6"><a href="#cb21-6" aria-hidden="true" tabindex="-1"></a><span class="co"> dims (string, list): Dimension for detrending, multiple dimensions need to be provided as a list</span></span>
<span id="cb21-7"><a href="#cb21-7" aria-hidden="true" tabindex="-1"></a><span class="co"> deg (int, optional): Defaults to 1.</span></span>
<span id="cb21-8"><a href="#cb21-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb21-9"><a href="#cb21-9" aria-hidden="true" tabindex="-1"></a><span class="co"> Returns:</span></span>
<span id="cb21-10"><a href="#cb21-10" aria-hidden="true" tabindex="-1"></a><span class="co"> xr.DataArray: detrended dataArray</span></span>
<span id="cb21-11"><a href="#cb21-11" aria-hidden="true" tabindex="-1"></a><span class="co"> """</span> </span>
<span id="cb21-12"><a href="#cb21-12" aria-hidden="true" tabindex="-1"></a> da_detrended <span class="op">=</span> da.copy()</span>
<span id="cb21-13"><a href="#cb21-13" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">isinstance</span>(dims, <span class="bu">list</span>): </span>
<span id="cb21-14"><a href="#cb21-14" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> dim <span class="kw">in</span> dims:</span>
<span id="cb21-15"><a href="#cb21-15" aria-hidden="true" tabindex="-1"></a> da_detrended <span class="op">=</span> detrend_dim(da_detrended, dim, deg<span class="op">=</span>deg)</span>
<span id="cb21-16"><a href="#cb21-16" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
<span id="cb21-17"><a href="#cb21-17" aria-hidden="true" tabindex="-1"></a> da_detrended <span class="op">=</span> detrend_dim(da_detrended, dim<span class="op">=</span>dims, deg<span class="op">=</span>deg)</span>
<span id="cb21-18"><a href="#cb21-18" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> da_detrended</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb29"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Create noise</span></span>
<span id="cb29-2"><a href="#cb29-2" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> <span class="dv">5</span> <span class="op">*</span> np.random.randn(time.shape[<span class="dv">0</span>]) <span class="op">+</span> np.arange(<span class="dv">0</span>, <span class="bu">len</span>(time))</span>
<span id="cb29-3"><a href="#cb29-3" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>], noise)}</span>
<span id="cb29-4"><a href="#cb29-4" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time}</span>
<span id="cb29-5"><a href="#cb29-5" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell" data-execution_count="27">
<div class="sourceCode cell-code" id="cb22"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Create noise</span></span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> <span class="dv">5</span> <span class="op">*</span> np.random.randn(time.shape[<span class="dv">0</span>]) <span class="op">+</span> np.arange(<span class="dv">0</span>, <span class="bu">len</span>(time))</span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>], noise)}</span>
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time}</span>
<span id="cb22-5"><a href="#cb22-5" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-execution_count="28">
<div class="sourceCode cell-code" id="cb23"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a>trend <span class="op">=</span> linear_trend(dataset.noise, dim<span class="op">=</span><span class="st">"time"</span>)</span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a>plt.plot(noise)</span>
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a>plt.plot(trend.intercept.data <span class="op">+</span> trend.slope.data <span class="op">*</span> np.arange(<span class="bu">len</span>(noise)))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stderr">
<pre><code>/var/folders/38/z0l88jxs5cxc27_d0dp0r78c0000gn/T/ipykernel_99507/2685326157.py:8: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
np.arange(len(obj[dim])).astype(np.float), dims=dim, coords={dim: obj[dim]}</code></pre>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb31"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a>trend <span class="op">=</span> linear_trend(dataset.noise, dim<span class="op">=</span><span class="st">"time"</span>)</span>
<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a>plt.plot(noise)</span>
<span id="cb31-3"><a href="#cb31-3" aria-hidden="true" tabindex="-1"></a>plt.plot(trend.intercept.data <span class="op">+</span> trend.slope.data <span class="op">*</span> np.arange(<span class="bu">len</span>(noise)))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell-output cell-output-display">
<p><img src="02_stats_files/figure-html/cell-21-output-2.png" class="img-fluid"></p>
</div>
</div>
<hr>
@ -542,26 +532,23 @@ Returns:
<p>Linear along possible multiple dimensions</p>
<p>Args: da (xr.DataArray): contains data dims (string, list): Dimension for detrending, multiple dimensions need to be provided as a list deg (int, optional): Defaults to 1.</p>
<p>Returns: xr.DataArray: detrended dataArray</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb35"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Create noisy data with trend</span></span>
<span id="cb35-2"><a href="#cb35-2" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> <span class="dv">5</span> <span class="op">*</span> np.random.randn(time.shape[<span class="dv">0</span>]) <span class="op">+</span> np.arange(<span class="dv">0</span>, <span class="bu">len</span>(time))</span>
<span id="cb35-3"><a href="#cb35-3" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>], noise)}</span>
<span id="cb35-4"><a href="#cb35-4" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time}</span>
<span id="cb35-5"><a href="#cb35-5" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
</div>
<div class="cell" data-execution_count="32">
<div class="sourceCode cell-code" id="cb27"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Create noisy data with trend</span></span>
<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a>noise <span class="op">=</span> <span class="dv">5</span> <span class="op">*</span> np.random.randn(time.shape[<span class="dv">0</span>]) <span class="op">+</span> np.arange(<span class="dv">0</span>, <span class="bu">len</span>(time))</span>
<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a>data_vars <span class="op">=</span> {<span class="st">'noise'</span>: ([<span class="st">'time'</span>], noise)}</span>
<span id="cb27-4"><a href="#cb27-4" aria-hidden="true" tabindex="-1"></a>coords <span class="op">=</span> {<span class="st">'time'</span>: time}</span>
<span id="cb27-5"><a href="#cb27-5" aria-hidden="true" tabindex="-1"></a>dataset <span class="op">=</span> xr.Dataset(data_vars, coords)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb37"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a>dataset.noise.plot()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell" data-execution_count="33">
<div class="sourceCode cell-code" id="cb28"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a>dataset.noise.plot()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display">
<p><img src="02_stats_files/figure-html/cell-25-output-1.png" class="img-fluid"></p>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb39"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a>detrend(dataset.noise, <span class="st">"time"</span>, deg<span class="op">=</span><span class="dv">1</span>).plot()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-error">
<pre><code>: </code></pre>
<div class="cell" data-execution_count="34">
<div class="sourceCode cell-code" id="cb29"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a>detrend(dataset.noise, <span class="st">"time"</span>, deg<span class="op">=</span><span class="dv">1</span>).plot()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display">
<p><img src="02_stats_files/figure-html/cell-26-output-1.png" class="img-fluid"></p>
</div>
</div>

677
nbs/02_stats.ipynb

File diff suppressed because one or more lines are too long

15
stormTracking/00_storm_detection_cci.ipynb

@ -20,9 +20,20 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31mDer Kernel konnte nicht gestartet werden. \n",
"\u001b[1;31mDer Kernel xarray (Python 3.10.6) kann nicht verwendet werden. Weitere Informationen finden Sie auf der Registerkarte „Jupyter-Ausgabe“. \n",
"\u001b[1;31mWeitere Informationen finden Sie im Jupyter-<a href='command:jupyter.viewOutput'>Protokoll</a>."
]
}
],
"source": [
"#export\n",
"from tqdm import tqdm\n",

Loading…
Cancel
Save