<spanid="cb5-8"><ahref="#cb5-8"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> y <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lat.shape[<spanclass="dv">0</span>]):</span>
<spanid="cb5-9"><ahref="#cb5-9"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> x <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lon.shape[<spanclass="dv">1</span>]):</span>
<spanid="cb5-10"><ahref="#cb5-10"aria-hidden="true"tabindex="-1"></a> noise[:, y, x] <spanclass="op">=</span> np.sin(time<spanclass="op">/</span><spanclass="dv">2</span><spanclass="op">*</span>np.pi) <spanclass="op">*</span> noise[:, y, x] <spanclass="op">+</span><spanclass="dv">3</span><spanclass="op">*</span> np.random.rand(time.shape[<spanclass="dv">0</span>])</span>
<spanid="cb6-8"><ahref="#cb6-8"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> y <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lat.shape[<spanclass="dv">0</span>]):</span>
<spanid="cb6-9"><ahref="#cb6-9"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> x <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lon.shape[<spanclass="dv">1</span>]):</span>
<spanid="cb6-10"><ahref="#cb6-10"aria-hidden="true"tabindex="-1"></a> noise[:, y, x] <spanclass="op">=</span> np.sin(time<spanclass="op">/</span><spanclass="dv">2</span><spanclass="op">*</span>np.pi) <spanclass="op">*</span> noise[:, y, x] <spanclass="op">+</span><spanclass="dv">3</span><spanclass="op">*</span> np.random.rand(time.shape[<spanclass="dv">0</span>])</span>
<spanid="cb6-5"><ahref="#cb6-5"aria-hidden="true"tabindex="-1"></a>dataset[<spanclass="st">'a1'</span>] <spanclass="op">=</span> ((<spanclass="st">"lat"</span>, <spanclass="st">"lon"</span>), a1)</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
</div>
<divclass="cell"data-execution_count="12">
<divclass="sourceCode cell-code"id="cb7"><preclass="sourceCode python code-with-copy"><codeclass="sourceCode python"><spanid="cb7-1"><ahref="#cb7-1"aria-hidden="true"tabindex="-1"></a><spanclass="co"># Pick any point and see how good index works as a predictor</span></span>
<spanid="cb7-2"><ahref="#cb7-2"aria-hidden="true"tabindex="-1"></a>aoi <spanclass="op">=</span> dataset.sel(lon <spanclass="op">=</span><spanclass="dv">150</span>, lat <spanclass="op">=</span><spanclass="dv">2</span>, method <spanclass="op">=</span><spanclass="st">"nearest"</span>)</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb8-2"><ahref="#cb8-2"aria-hidden="true"tabindex="-1"></a>plt.plot(aoi.time, aoi[<spanclass="st">'a0'</span>].values <spanclass="op">+</span> aoi[<spanclass="st">'a1'</span>].values <spanclass="op">*</span> index, label<spanclass="op">=</span><spanclass="st">"Linear regression of noisy signal onto index"</span>)</span>
<spanid="cb8-3"><ahref="#cb8-3"aria-hidden="true"tabindex="-1"></a>plt.legend()</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<pre><code><matplotlib.legend.Legend at 0x1786f7be0></code></pre>
</div>
</div>
<divclass="cell">
<divclass="sourceCode cell-code"id="cb10"><preclass="sourceCode python code-with-copy"><codeclass="sourceCode python"><spanid="cb10-1"><ahref="#cb10-1"aria-hidden="true"tabindex="-1"></a><spanclass="co"># Pick any point and see how good index works as a predictor</span></span>
<spanid="cb10-2"><ahref="#cb10-2"aria-hidden="true"tabindex="-1"></a>aoi <spanclass="op">=</span> dataset.sel(lon <spanclass="op">=</span><spanclass="dv">150</span>, lat <spanclass="op">=</span><spanclass="dv">2</span>, method <spanclass="op">=</span><spanclass="st">"nearest"</span>)</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb12-2"><ahref="#cb12-2"aria-hidden="true"tabindex="-1"></a>plt.plot(aoi.time, aoi[<spanclass="st">'a0'</span>].values <spanclass="op">+</span> aoi[<spanclass="st">'a1'</span>].values <spanclass="op">*</span> index, label<spanclass="op">=</span><spanclass="st">"Linear regression of noisy signal onto index"</span>)</span>
<spanid="cb12-3"><ahref="#cb12-3"aria-hidden="true"tabindex="-1"></a>plt.legend()</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb17-5"><ahref="#cb17-5"aria-hidden="true"tabindex="-1"></a> x <spanclass="op">=</span> np.random.uniform(<spanclass="dv">2</span>, <spanclass="dv">10</span>, seg_count)</span>
<spanid="cb17-6"><ahref="#cb17-6"aria-hidden="true"tabindex="-1"></a> x <spanclass="op">=</span> np.cumsum(x)</span>
<spanid="cb17-7"><ahref="#cb17-7"aria-hidden="true"tabindex="-1"></a> x <spanclass="op">*=</span><spanclass="dv">10</span><spanclass="op">/</span> x.<spanclass="bu">max</span>()</span>
<spanid="cb17-8"><ahref="#cb17-8"aria-hidden="true"tabindex="-1"></a> y <spanclass="op">=</span> np.cumsum(np.random.uniform(<spanclass="op">-</span><spanclass="dv">1</span>, <spanclass="dv">1</span>, seg_count))</span>
<spanid="cb17-9"><ahref="#cb17-9"aria-hidden="true"tabindex="-1"></a> X <spanclass="op">=</span> np.random.uniform(<spanclass="dv">0</span>, <spanclass="dv">10</span>, point_count)</span>
<spanid="cb17-10"><ahref="#cb17-10"aria-hidden="true"tabindex="-1"></a> Y <spanclass="op">=</span> np.interp(X, x, y) <spanclass="op">+</span> np.random.normal(<spanclass="dv">0</span>, <spanclass="fl">0.05</span>, point_count)</span>
<spanid="cb17-11"><ahref="#cb17-11"aria-hidden="true"tabindex="-1"></a><spanclass="cf">return</span> X, Y</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb13-5"><ahref="#cb13-5"aria-hidden="true"tabindex="-1"></a> x <spanclass="op">=</span> np.random.uniform(<spanclass="dv">2</span>, <spanclass="dv">10</span>, seg_count)</span>
<spanid="cb13-6"><ahref="#cb13-6"aria-hidden="true"tabindex="-1"></a> x <spanclass="op">=</span> np.cumsum(x)</span>
<spanid="cb13-7"><ahref="#cb13-7"aria-hidden="true"tabindex="-1"></a> x <spanclass="op">*=</span><spanclass="dv">10</span><spanclass="op">/</span> x.<spanclass="bu">max</span>()</span>
<spanid="cb13-8"><ahref="#cb13-8"aria-hidden="true"tabindex="-1"></a> y <spanclass="op">=</span> np.cumsum(np.random.uniform(<spanclass="op">-</span><spanclass="dv">1</span>, <spanclass="dv">1</span>, seg_count))</span>
<spanid="cb13-9"><ahref="#cb13-9"aria-hidden="true"tabindex="-1"></a> X <spanclass="op">=</span> np.random.uniform(<spanclass="dv">0</span>, <spanclass="dv">10</span>, point_count)</span>
<spanid="cb13-10"><ahref="#cb13-10"aria-hidden="true"tabindex="-1"></a> Y <spanclass="op">=</span> np.interp(X, x, y) <spanclass="op">+</span> np.random.normal(<spanclass="dv">0</span>, <spanclass="fl">0.05</span>, point_count)</span>
<spanid="cb13-11"><ahref="#cb13-11"aria-hidden="true"tabindex="-1"></a><spanclass="cf">return</span> X, Y</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
</div>
<divclass="cell">
<divclass="sourceCode cell-code"id="cb19"><preclass="sourceCode python code-with-copy"><codeclass="sourceCode python"><spanid="cb19-1"><ahref="#cb19-1"aria-hidden="true"tabindex="-1"></a>X, Y <spanclass="op">=</span> make_test_data(<spanclass="dv">10</span>, <spanclass="dv">2000</span>)</span>
<spanid="cb19-2"><ahref="#cb19-2"aria-hidden="true"tabindex="-1"></a>px, py <spanclass="op">=</span> segments_fit(X, Y, <spanclass="dv">8</span>)</span>
<spanid="cb19-4"><ahref="#cb19-4"aria-hidden="true"tabindex="-1"></a>pl.plot(X, Y, <spanclass="st">"."</span>)</span>
<spanid="cb19-5"><ahref="#cb19-5"aria-hidden="true"tabindex="-1"></a>pl.plot(px, py, <spanclass="st">"-or"</span>)<spanclass="op">;</span></span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<divclass="cell-output cell-output-error">
<pre><code>: </code></pre>
<divclass="cell"data-execution_count="21">
<divclass="sourceCode cell-code"id="cb14"><preclass="sourceCode python code-with-copy"><codeclass="sourceCode python"><spanid="cb14-1"><ahref="#cb14-1"aria-hidden="true"tabindex="-1"></a>X, Y <spanclass="op">=</span> make_test_data(<spanclass="dv">10</span>, <spanclass="dv">2000</span>)</span>
<spanid="cb14-2"><ahref="#cb14-2"aria-hidden="true"tabindex="-1"></a>px, py <spanclass="op">=</span> segments_fit(X, Y, <spanclass="dv">8</span>)</span>
<spanid="cb14-4"><ahref="#cb14-4"aria-hidden="true"tabindex="-1"></a>pl.plot(X, Y, <spanclass="st">"."</span>)</span>
<spanid="cb14-5"><ahref="#cb14-5"aria-hidden="true"tabindex="-1"></a>pl.plot(px, py, <spanclass="st">"-or"</span>)<spanclass="op">;</span></span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb24-8"><ahref="#cb24-8"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> y <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lat.shape[<spanclass="dv">0</span>]):</span>
<spanid="cb24-9"><ahref="#cb24-9"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> x <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lon.shape[<spanclass="dv">1</span>]):</span>
<spanid="cb24-10"><ahref="#cb24-10"aria-hidden="true"tabindex="-1"></a> noise[:, y, x] <spanclass="op">=</span> np.sin(time<spanclass="op">/</span><spanclass="dv">2</span><spanclass="op">*</span>np.pi) <spanclass="op">*</span> noise[:, y, x] <spanclass="op">+</span><spanclass="dv">3</span><spanclass="op">*</span> np.random.rand(time.shape[<spanclass="dv">0</span>])</span>
<spanid="cb24-27"><ahref="#cb24-27"aria-hidden="true"tabindex="-1"></a> label<spanclass="op">=</span><spanclass="st">"Linear regression of noisy signal onto index"</span>)</span>
<spanid="cb24-28"><ahref="#cb24-28"aria-hidden="true"tabindex="-1"></a>plt.legend()</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb18-8"><ahref="#cb18-8"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> y <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lat.shape[<spanclass="dv">0</span>]):</span>
<spanid="cb18-9"><ahref="#cb18-9"aria-hidden="true"tabindex="-1"></a><spanclass="cf">for</span> x <spanclass="kw">in</span><spanclass="bu">range</span>(<spanclass="dv">0</span>, lon.shape[<spanclass="dv">1</span>]):</span>
<spanid="cb18-10"><ahref="#cb18-10"aria-hidden="true"tabindex="-1"></a> noise[:, y, x] <spanclass="op">=</span> np.sin(time<spanclass="op">/</span><spanclass="dv">2</span><spanclass="op">*</span>np.pi) <spanclass="op">*</span> noise[:, y, x] <spanclass="op">+</span><spanclass="dv">3</span><spanclass="op">*</span> np.random.rand(time.shape[<spanclass="dv">0</span>])</span>
<spanid="cb18-27"><ahref="#cb18-27"aria-hidden="true"tabindex="-1"></a> label<spanclass="op">=</span><spanclass="st">"Linear regression of noisy signal onto index"</span>)</span>
<spanid="cb18-28"><ahref="#cb18-28"aria-hidden="true"tabindex="-1"></a>plt.legend()</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb27-5"><ahref="#cb27-5"aria-hidden="true"tabindex="-1"></a><spanclass="co"> da (xr.DataArray): contains data</span></span>
<spanid="cb27-6"><ahref="#cb27-6"aria-hidden="true"tabindex="-1"></a><spanclass="co"> dims (string, list): Dimension for detrending, multiple dimensions need to be provided as a list</span></span>
<spanid="cb27-7"><ahref="#cb27-7"aria-hidden="true"tabindex="-1"></a><spanclass="co"> deg (int, optional): Defaults to 1.</span></span>
<spanid="cb27-18"><ahref="#cb27-18"aria-hidden="true"tabindex="-1"></a><spanclass="cf">return</span> da_detrended</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb21-5"><ahref="#cb21-5"aria-hidden="true"tabindex="-1"></a><spanclass="co"> da (xr.DataArray): contains data</span></span>
<spanid="cb21-6"><ahref="#cb21-6"aria-hidden="true"tabindex="-1"></a><spanclass="co"> dims (string, list): Dimension for detrending, multiple dimensions need to be provided as a list</span></span>
<spanid="cb21-7"><ahref="#cb21-7"aria-hidden="true"tabindex="-1"></a><spanclass="co"> deg (int, optional): Defaults to 1.</span></span>
<spanid="cb21-18"><ahref="#cb21-18"aria-hidden="true"tabindex="-1"></a><spanclass="cf">return</span> da_detrended</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<spanid="cb23-3"><ahref="#cb23-3"aria-hidden="true"tabindex="-1"></a>plt.plot(trend.intercept.data <spanclass="op">+</span> trend.slope.data <spanclass="op">*</span> np.arange(<spanclass="bu">len</span>(noise)))</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<divclass="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
<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>
<divclass="cell">
<divclass="sourceCode cell-code"id="cb35"><preclass="sourceCode python code-with-copy"><codeclass="sourceCode python"><spanid="cb35-1"><ahref="#cb35-1"aria-hidden="true"tabindex="-1"></a><spanclass="co"># Create noisy data with trend</span></span>
<spanid="cb35-5"><ahref="#cb35-5"aria-hidden="true"tabindex="-1"></a>dataset <spanclass="op">=</span> xr.Dataset(data_vars, coords)</span></code><buttontitle="Copy to Clipboard"class="code-copy-button"><iclass="bi"></i></button></pre></div>
<divclass="cell-output cell-output-error">
<pre><code>: </code></pre>
</div>
<divclass="cell"data-execution_count="32">
<divclass="sourceCode cell-code"id="cb27"><preclass="sourceCode python code-with-copy"><codeclass="sourceCode python"><spanid="cb27-1"><ahref="#cb27-1"aria-hidden="true"tabindex="-1"></a><spanclass="co"># Create noisy data with trend</span></span>
"\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>."