Skip to content

Commit

Permalink
Deploying to gh-pages from @ 7ed7519 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
jkriege2 committed Feb 15, 2024
1 parent aca0154 commit 6afd2de
Show file tree
Hide file tree
Showing 1,345 changed files with 1,963 additions and 1,963 deletions.
2 changes: 1 addition & 1 deletion _j_k_q_t_c_make_fetch_content_example.html
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_c_make_link_example.html
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_fast_plotter_test.html
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_math_text_render_cmd_line_tool.html
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_math_text_simple_example.html
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_math_text_test_app.html
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_p_parametrized_vector_field_graph_example.html
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_advanced_line_and_fill_styling.html
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_barcharts.html
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_barcharts_custom_draw_functor.html
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_barcharts_error_bars.html
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_barcharts_functor_filling.html
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_barcharts_two_color_filling.html
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_basic_j_k_q_t_p_datastore.html
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ <h1><a class="anchor" id="autotoc_md29"></a>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion _j_k_q_t_plotter_basic_j_k_q_t_p_datastore_iterators.html
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ <h1><a class="anchor" id="autotoc_md38"></a>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
26 changes: 13 additions & 13 deletions _j_k_q_t_plotter_basic_j_k_q_t_p_datastore_regression.html
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,12 @@
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#autotoc_md42">Simple Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md43">Robust Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md44">Weighted Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md45">Linearizable Regression Models</a></li>
<li class="level1"><a href="#autotoc_md46">Polynom Fitting</a></li>
<li class="level1"><a href="#autotoc_md47">Screenshot of the full Program</a></li>
<ul><li class="level1"><a href="#autotoc_md47">Simple Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md50">Robust Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md53">Weighted Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md54">Linearizable Regression Models</a></li>
<li class="level1"><a href="#autotoc_md55">Polynom Fitting</a></li>
<li class="level1"><a href="#autotoc_md56">Screenshot of the full Program</a></li>
</ul>
</div>
<div class="textblock"><p>This tutorial project (see <code>./examples/datastore_statistics/</code>) explains several advanced functions of <a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a> in combination with the [<a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a>] conatined in <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a>.</p>
Expand All @@ -135,7 +135,7 @@
<li><a class="el" href="_j_k_q_t_plotter_basic_j_k_q_t_p_datastore_statistics2_d.html">Advanced 2-Dimensional Statistics with JKQTPDatastore</a></li>
</ul>
<p>The source code of the main application can be found in <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/datastore_statistics/datastore_regression.cpp"><code>datastore_regression.cpp</code></a>. This tutorial cites only parts of this code to demonstrate different ways of performing regression analysis.</p>
<h1><a class="anchor" id="autotoc_md42"></a>
<h1><a class="anchor" id="autotoc_md47"></a>
Simple Linear Regression</h1>
<p>First we generate a set of datapoints (x,y), which scatter randomly around a linear function. </p><div class="fragment"><div class="line">std::random_device rd; <span class="comment">// random number generators:</span></div>
<div class="line">std::mt19937 gen{rd()};</div>
Expand Down Expand Up @@ -176,7 +176,7 @@ <h1><a class="anchor" id="autotoc_md42"></a>
</div><!-- fragment --><p> Here the x- and y-columns from the <code><a class="el" href="class_j_k_q_t_p_x_y_graph.html" title="This virtual JKQTPGraph descendent may be used as base for all graphs that use at least two columns t...">JKQTPXYGraph</a></code>-based graph <code>graphD</code> (see above) are used as datasources for the plot.</p>
<p>The plot resulting from any of the variants above looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_lin.png" alt="datastore_regression_lin" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md43"></a>
<h1><a class="anchor" id="autotoc_md50"></a>
Robust Linear Regression</h1>
<p>Sometimes data contains outliers that can render the results of a regression analysis inaccurate. For such cases the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a> offers the function <code><a class="el" href="group__jkqtptools__math__statistics__regression.html#ga7da14476c0d4bc417ec104dbcc930bb6" title="calculate the (robust) iteratively reweighted least-squares (IRLS) estimate for the parameters of the...">jkqtpstatRobustIRLSLinearRegression()</a></code>, which is a drop-in replacement for <code><a class="el" href="group__jkqtptools__math__statistics__regression.html#gaf81a452c8e0798f6bb4b8764dd5a2f89" title="calculate the linear regression coefficients for a given data range firstX / firstY ....">jkqtpstatLinearRegression()</a></code> and solves the optimization problem a) in the Lp-norm (which is more robust to outliers) and b) uses the <a href="https://en.wikipedia.org/wiki/Iteratively_reweighted_least_squares">iteratively reweighted least-squares algorithm (IRLS)</a>, which performs a series of regressions, where in each instance the data-points are weighted differently. The method assigns a lower weight to those points that are far from the current best-fit (typically the outliers) and thus slowly comes nearer to an estimate that is not distorted by the outliers.</p>
<p>To demonstrate this method, we use the same dataset as above, but add a few outliers:</p>
Expand Down Expand Up @@ -213,7 +213,7 @@ <h1><a class="anchor" id="autotoc_md43"></a>
<li>the closer <code>p</code> is to 2, the closer the fit is to the least squares solution (i.e. the normal regression obtained with the L2 norm)</li>
</ul>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_linrobust_p.png" alt="datastore_regression_linrobust_p" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md44"></a>
<h1><a class="anchor" id="autotoc_md53"></a>
Weighted Linear Regression</h1>
<p>Another option to react to measurement errors is to take these into account when calculating the regression. To do so, you can use weighted regression that uses the measurement errors as inverse weights. This algorithm is implemented in the function <code><a class="el" href="group__jkqtptools__math__statistics__regression.html#gab5c23e5d003ffde1fbf9a089ea454659" title="calculate the weighted linear regression coefficients for a given for a given data range firstX / fir...">jkqtpstatLinearWeightedRegression()</a></code>.</p>
<p>First we generate again a set of datapoints (x,y), which scatter randomly around a linear function. In addition we calculate an "error" <code>err</code> for each datapoint: </p><div class="fragment"><div class="line">std::random_device rd; <span class="comment">// random number generators:</span></div>
Expand Down Expand Up @@ -267,7 +267,7 @@ <h1><a class="anchor" id="autotoc_md44"></a>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_linweight.png" alt="datastore_regression_linweight" class="inline"/></p>
<p>For this plot we also added a call to </p><div class="fragment"><div class="line"><a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga8bfe5be6f07bc5e05b989cbe8d5906f5">jkqtpstatAddLinearRegression</a>(graphE);</div>
</div><!-- fragment --><p> which performs a simple non-weighted regression. The difference between the two resulting linear functions (blue: simple regression, green: weighted regression) demonstrates the influence of the weighting.</p>
<h1><a class="anchor" id="autotoc_md45"></a>
<h1><a class="anchor" id="autotoc_md54"></a>
Linearizable Regression Models</h1>
<p>In addition to the simple linear regression model <code>f(x)=a+b*x</code>, it is also possible to fit a few non-linear models by transforming the data:</p><ul>
<li>power-law function<code>f(x)=a*x^b</code>, which is a linear function in a log(x)-log(y)-plot</li>
Expand Down Expand Up @@ -341,7 +341,7 @@ <h1><a class="anchor" id="autotoc_md45"></a>
<li><code><a class="el" href="group__jkqtptools__math__statistics__regression.html#ga3907535ce3b98a3b0a4898d9eee1443f" title="calculate the robust linear regression coefficients for a given data range firstX / firstY ....">jkqtpstatRobustIRLSRegression()</a></code> / <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga447fe500e98a779bbd5ac634cccc641b" title="calculate the (robust) iteratively reweighted least-squares (IRLS) estimate for the parameters where ...">jkqtpstatAddRobustIRLSRegression()</a></code></li>
<li><code><a class="el" href="group__jkqtptools__math__statistics__regression.html#gaa6abec21468e0c369200d7fc92589531" title="calculate the robust linear regression coefficients for a given data range firstX / firstY ....">jkqtpstatWeightedRegression()</a></code> / <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#gacdcf71efadb7f629a4535dc433af97a5" title="calculate the weighted linear regression coefficients for a given for a given data range firstX / fir...">jkqtpstatAddWeightedRegression()</a></code></li>
</ul>
<h1><a class="anchor" id="autotoc_md46"></a>
<h1><a class="anchor" id="autotoc_md55"></a>
Polynom Fitting</h1>
<p>Finally the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a> also supports one option for non-linear model fitting, namely fitting of polynomial models. This is implemented in the function <code><a class="el" href="group__jkqtptools__math__statistics__poly.html#gaccc77ac9938ce987c232f5bee76b753d" title="fits (in a least-squares sense) a polynomial of order P to a set of N data pairs">jkqtpstatPolyFit()</a></code>.</p>
<p>To demonstrate this function we first generate data from a poylnomial model (with gaussian noise):</p>
Expand Down Expand Up @@ -384,7 +384,7 @@ <h1><a class="anchor" id="autotoc_md46"></a>
<div class="line"> <a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga843050e46d7b53c1ce239751910d13a8">jkqtpstatAddPolyFit</a>(graphP, p);</div>
<div class="line">}</div>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_ga843050e46d7b53c1ce239751910d13a8"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#ga843050e46d7b53c1ce239751910d13a8">jkqtpstatAddPolyFit</a></div><div class="ttdeci">JKQTPXFunctionLineGraph * jkqtpstatAddPolyFit(JKQTBasePlotter *plotter, InputItX firstX, InputItX lastX, InputItY firstY, InputItY lastY, size_t P, OutputItP firstRes)</div><div class="ttdoc">fits (in a least-squares sense) a polynomial of order P to a set of N data pairs from a given data ...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:2248</div></div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md47"></a>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md56"></a>
Screenshot of the full Program</h1>
<p>The output of the full test program <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/datastore_statistics/datastore_regression.cpp"><code>datastore_regression.cpp</code></a> looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression.png" alt="datastore_regression" class="inline"/> </p>
Expand All @@ -396,7 +396,7 @@ <h1><a class="anchor" id="autotoc_md46"></a>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Wed Feb 14 2024 13:04:29 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Thu Feb 15 2024 08:24:01 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>
Expand Down
Loading

0 comments on commit 6afd2de

Please sign in to comment.