3513 lines
253 KiB
HTML
3513 lines
253 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en"><head>
|
||
<script src="index_files/libs/clipboard/clipboard.min.js"></script>
|
||
<script src="index_files/libs/quarto-html/tabby.min.js"></script>
|
||
<script src="index_files/libs/quarto-html/popper.min.js"></script>
|
||
<script src="index_files/libs/quarto-html/tippy.umd.min.js"></script>
|
||
<link href="index_files/libs/quarto-html/tippy.css" rel="stylesheet">
|
||
<link href="index_files/libs/quarto-html/light-border.css" rel="stylesheet">
|
||
<link href="index_files/libs/quarto-html/quarto-syntax-highlighting-662ae1889177880cb371f83234c0a158.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||
<link href="index_files/libs/quarto-contrib/fontawesome6-1.2.0/all.min.css" rel="stylesheet">
|
||
<link href="index_files/libs/quarto-contrib/fontawesome6-1.2.0/latex-fontsize.css" rel="stylesheet"><meta charset="utf-8">
|
||
<meta name="generator" content="quarto-1.7.30">
|
||
|
||
<meta name="author" content="Jonathan Berrisch">
|
||
<meta name="dcterms.date" content="2025-06-30">
|
||
<title>De-Fence</title>
|
||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
|
||
<link rel="stylesheet" href="index_files/libs/revealjs/dist/reset.css">
|
||
<link rel="stylesheet" href="index_files/libs/revealjs/dist/reveal.css">
|
||
<style>
|
||
code{white-space: pre-wrap;}
|
||
span.smallcaps{font-variant: small-caps;}
|
||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||
div.column{flex: auto; overflow-x: auto;}
|
||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||
ul.task-list{list-style: none;}
|
||
ul.task-list li input[type="checkbox"] {
|
||
width: 0.8em;
|
||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
||
vertical-align: middle;
|
||
}
|
||
/* CSS for syntax highlighting */
|
||
html { -webkit-text-size-adjust: 100%; }
|
||
pre > code.sourceCode { white-space: pre; position: relative; }
|
||
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||
.sourceCode { overflow: visible; }
|
||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||
div.sourceCode { margin: 1em 0; }
|
||
pre.sourceCode { margin: 0; }
|
||
@media screen {
|
||
div.sourceCode { overflow: auto; }
|
||
}
|
||
@media print {
|
||
pre > code.sourceCode { white-space: pre-wrap; }
|
||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
||
}
|
||
pre.numberSource code
|
||
{ counter-reset: source-line 0; }
|
||
pre.numberSource code > span
|
||
{ position: relative; left: -4em; counter-increment: source-line; }
|
||
pre.numberSource code > span > a:first-child::before
|
||
{ content: counter(source-line);
|
||
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
||
border: none; display: inline-block;
|
||
-webkit-touch-callout: none; -webkit-user-select: none;
|
||
-khtml-user-select: none; -moz-user-select: none;
|
||
-ms-user-select: none; user-select: none;
|
||
padding: 0 4px; width: 4em;
|
||
}
|
||
pre.numberSource { margin-left: 3em; padding-left: 4px; }
|
||
div.sourceCode
|
||
{ color: #24292e; }
|
||
@media screen {
|
||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
||
}
|
||
code span { color: #24292e; } /* Normal */
|
||
code span.al { color: #ff5555; font-weight: bold; } /* Alert */
|
||
code span.an { color: #6a737d; } /* Annotation */
|
||
code span.at { color: #d73a49; } /* Attribute */
|
||
code span.bn { color: #005cc5; } /* BaseN */
|
||
code span.bu { color: #d73a49; } /* BuiltIn */
|
||
code span.cf { color: #d73a49; } /* ControlFlow */
|
||
code span.ch { color: #032f62; } /* Char */
|
||
code span.cn { color: #005cc5; } /* Constant */
|
||
code span.co { color: #6a737d; } /* Comment */
|
||
code span.cv { color: #6a737d; } /* CommentVar */
|
||
code span.do { color: #6a737d; } /* Documentation */
|
||
code span.dt { color: #d73a49; } /* DataType */
|
||
code span.dv { color: #005cc5; } /* DecVal */
|
||
code span.er { color: #ff5555; text-decoration: underline; } /* Error */
|
||
code span.ex { color: #d73a49; font-weight: bold; } /* Extension */
|
||
code span.fl { color: #005cc5; } /* Float */
|
||
code span.fu { color: #6f42c1; } /* Function */
|
||
code span.im { color: #032f62; } /* Import */
|
||
code span.in { color: #6a737d; } /* Information */
|
||
code span.kw { color: #d73a49; } /* Keyword */
|
||
code span.op { color: #24292e; } /* Operator */
|
||
code span.ot { color: #6f42c1; } /* Other */
|
||
code span.pp { color: #d73a49; } /* Preprocessor */
|
||
code span.re { color: #6a737d; } /* RegionMarker */
|
||
code span.sc { color: #005cc5; } /* SpecialChar */
|
||
code span.ss { color: #032f62; } /* SpecialString */
|
||
code span.st { color: #032f62; } /* String */
|
||
code span.va { color: #e36209; } /* Variable */
|
||
code span.vs { color: #032f62; } /* VerbatimString */
|
||
code span.wa { color: #ff5555; } /* Warning */
|
||
/* CSS for citations */
|
||
div.csl-bib-body { }
|
||
div.csl-entry {
|
||
clear: both;
|
||
margin-bottom: 0em;
|
||
}
|
||
.hanging-indent div.csl-entry {
|
||
margin-left:2em;
|
||
text-indent:-2em;
|
||
}
|
||
div.csl-left-margin {
|
||
min-width:2em;
|
||
float:left;
|
||
}
|
||
div.csl-right-inline {
|
||
margin-left:2em;
|
||
padding-left:1em;
|
||
}
|
||
div.csl-indent {
|
||
margin-left: 2em;
|
||
} </style>
|
||
<link rel="stylesheet" href="index_files/libs/revealjs/dist/theme/quarto-5784e2c73f96e890d3d7e10685030278.css">
|
||
<link href="index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet">
|
||
<link href="index_files/libs/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet">
|
||
<link href="index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet">
|
||
<link href="index_files/libs/revealjs/plugin/reveal-pointer/pointer.css" rel="stylesheet">
|
||
<link href="index_files/libs/revealjs/plugin/quarto-support/footer.css" rel="stylesheet">
|
||
<style type="text/css">
|
||
.reveal div.sourceCode {
|
||
margin: 0;
|
||
overflow: auto;
|
||
}
|
||
.reveal div.hanging-indent {
|
||
margin-left: 1em;
|
||
text-indent: -1em;
|
||
}
|
||
.reveal .slide:not(.center) {
|
||
height: 100%;
|
||
}
|
||
.reveal .slide.scrollable {
|
||
overflow-y: auto;
|
||
}
|
||
.reveal .footnotes {
|
||
height: 100%;
|
||
overflow-y: auto;
|
||
}
|
||
.reveal .slide .absolute {
|
||
position: absolute;
|
||
display: block;
|
||
}
|
||
.reveal .footnotes ol {
|
||
counter-reset: ol;
|
||
list-style-type: none;
|
||
margin-left: 0;
|
||
}
|
||
.reveal .footnotes ol li:before {
|
||
counter-increment: ol;
|
||
content: counter(ol) ". ";
|
||
}
|
||
.reveal .footnotes ol li > p:first-child {
|
||
display: inline-block;
|
||
}
|
||
.reveal .slide ul,
|
||
.reveal .slide ol {
|
||
margin-bottom: 0.5em;
|
||
}
|
||
.reveal .slide ul li,
|
||
.reveal .slide ol li {
|
||
margin-top: 0.4em;
|
||
margin-bottom: 0.2em;
|
||
}
|
||
.reveal .slide ul[role="tablist"] li {
|
||
margin-bottom: 0;
|
||
}
|
||
.reveal .slide ul li > *:first-child,
|
||
.reveal .slide ol li > *:first-child {
|
||
margin-block-start: 0;
|
||
}
|
||
.reveal .slide ul li > *:last-child,
|
||
.reveal .slide ol li > *:last-child {
|
||
margin-block-end: 0;
|
||
}
|
||
.reveal .slide .columns:nth-child(3) {
|
||
margin-block-start: 0.8em;
|
||
}
|
||
.reveal blockquote {
|
||
box-shadow: none;
|
||
}
|
||
.reveal .tippy-content>* {
|
||
margin-top: 0.2em;
|
||
margin-bottom: 0.7em;
|
||
}
|
||
.reveal .tippy-content>*:last-child {
|
||
margin-bottom: 0.2em;
|
||
}
|
||
.reveal .slide > img.stretch.quarto-figure-center,
|
||
.reveal .slide > img.r-stretch.quarto-figure-center {
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
.reveal .slide > img.stretch.quarto-figure-left,
|
||
.reveal .slide > img.r-stretch.quarto-figure-left {
|
||
display: block;
|
||
margin-left: 0;
|
||
margin-right: auto;
|
||
}
|
||
.reveal .slide > img.stretch.quarto-figure-right,
|
||
.reveal .slide > img.r-stretch.quarto-figure-right {
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: 0;
|
||
}
|
||
</style>
|
||
<script type="module" src="index_files/libs/quarto-ojs/quarto-ojs-runtime.js"></script>
|
||
<link href="index_files/libs/quarto-ojs/quarto-ojs.css" rel="stylesheet">
|
||
<script src="index_files/libs/kePrint-0.0.1/kePrint.js"></script>
|
||
<link href="index_files/libs/lightable-0.0.1/lightable.css" rel="stylesheet">
|
||
<script src="assets/revealjs/custom.js"></script>
|
||
|
||
</head><body class="quarto-light"><div style="position: fixed; bottom: 10px; right: 20px; display: flex; justify-content: flex-end; align-items: center; gap: 20px; flex-wrap: wrap;">
|
||
<a href="https://www.uni-due.de/">
|
||
<img src="assets/ude_signet.svg" alt="Uni Duisburg-Essen Logo" style="height: 4vh; width: auto;">
|
||
</a>
|
||
<a href="https://www.hemf.wiwi.uni-due.de/en/">
|
||
<img src="assets/hecf_signet.svg" alt="HECF Logo" style="height: 4vh; width: auto;">
|
||
</a>
|
||
</div>
|
||
|
||
|
||
<div class="reveal">
|
||
<div class="slides">
|
||
|
||
<section id="title-slide" class="quarto-title-block center">
|
||
<h1 class="title">Data Science Methods for Forecasting in Energy and Economics</h1>
|
||
|
||
<div class="quarto-title-authors">
|
||
<div class="quarto-title-author">
|
||
<div class="quarto-title-author-name">
|
||
Jonathan Berrisch
|
||
</div>
|
||
<p class="quarto-title-affiliation">
|
||
University of Duisburg-Essen, House of Energy, Climate, and Finance
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<p class="date">2025-06-30</p>
|
||
</section>
|
||
<section id="outline" class="slide level2 center">
|
||
<h2>Outline</h2>
|
||
<!--
|
||
Render with: quarto preview /home/jonathan/git/PHD-Presentation/25_07_phd_defense/index.qmd --no-browser --port 6074
|
||
-->
|
||
<div class="hidden">
|
||
<p><span class="math display">\[
|
||
\newcommand{\A}{{\mathbb A}}
|
||
\]</span></p>
|
||
</div>
|
||
<div style="font-size: 150%;">
|
||
<p><i class="fa fa-fw fa-rocket" style="color:var(--col_grey_9);"></i> <a href="#/motivation">Research Motivation</a></p>
|
||
<p><i class="fa fa-fw fa-book" style="color:var(--col_grey_9);"></i> <a href="#/sec-overview">Overview of the Thesis</a></p>
|
||
<p><i class="fa fa-fw fa-layer-group" style="color:var(--col_grey_9);"></i> <a href="#/sec-crps-learning">Online Aggregation</a></p>
|
||
<p><i class="fa fa-fw fa-chart-line" style="color:var(--col_grey_9);"></i> <a href="#/sec-voldep">Probabilistic Forecasting of European Carbon and Energy Prices</a></p>
|
||
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_9);"></i> <a href="#/sec-contributions">Contributions</a></p>
|
||
</div>
|
||
</section>
|
||
<section id="the-beginning-june-2020" class="slide level2">
|
||
<h2>The beginning: June 2020</h2>
|
||
|
||
<img data-src="assets/allisonhorst/the_beginning_cropped.png" class="r-stretch quarto-figure-center"><p class="caption">Artwork by <a href="https://allisonhorst.com/">@allison_horst</a></p></section>
|
||
<section id="motivation" class="slide level2">
|
||
<h2>Motivation</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:53%;">
|
||
<table style="width: 100%; border-collapse: separate; border-spacing: 0 0.8em; border: none;">
|
||
<tbody><tr style="border: none;">
|
||
<td style="vertical-align: top; width: 1.5em; border: none;">
|
||
<i class="fa fa-fw fa-network-wired" style="color:var(--col_grey_9);"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Energy market liberalization created complex, interconnected trading systems
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-wind" style="color:var(--col_grey_9);"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Renewable energy transition introduces uncertainty and volatility from weather-dependent generation
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-chart-line" style="color:var(--col_grey_9);"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Traditional point forecasts are inadequate for modern energy markets with increasing uncertainty
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-percent" style="color:var(--col_grey_9);"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Risk inherently <em>is</em> a probabilistic concept
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-dice" style="color:var(--col_grey_9);"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
<strong>Probabilistic forecasting</strong> essential for risk management, planning and decision making in volatile energy environments
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-sync-alt" style="color:var(--col_grey_9);"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
<strong>Online learning</strong> methods needed for fast-updating models with streaming energy data
|
||
</td>
|
||
</tr>
|
||
</tbody></table>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:43%;">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/Renewable_Energy_Forecasting.png"></p>
|
||
<figcaption>Image generated by Sora (OpenAI)</figcaption>
|
||
</figure>
|
||
</div>
|
||
</div></div>
|
||
</section>
|
||
<section id="sec-overview" class="slide level2">
|
||
<h2>Overview of the Thesis</h2>
|
||
<div class="r-stack">
|
||
<div class="fragment fade-in-then-out">
|
||
<table style="width: 100%; border-collapse: separate; border-spacing: 0 1em; border: none;">
|
||
<tbody><tr style="border: none;">
|
||
<td style="vertical-align: top; width: 2em; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 1568–1586.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Hirsch, S., Berrisch, J., & Ziel, F. <span class="citation" data-cites="hirsch2024online">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Online Distributional Regression. <em>arXiv preprint</em> arXiv:2407.08750.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="berrisch2022distributional">(<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span>. Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 1065–1086.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., Pappert, S., Ziel, F., & Arsova, A. <span class="citation" data-cites="berrisch2023modeling">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. Modeling volatility and dependence of European carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., Narajewski, M., & Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J. <span class="citation" data-cites="berrisch2025rcpptimer">(<a href="#/references" role="doc-biblioref" onclick="">2025</a>)</span>. rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support. <em>arXiv preprint</em> arXiv:2501.15856.
|
||
</td>
|
||
</tr>
|
||
</tbody></table>
|
||
</div>
|
||
<div class="fragment fade-in-then-out">
|
||
<table style="width: 100%; border-collapse: separate; border-spacing: 0 1em; border: none;">
|
||
<tbody><tr style="border: none;">
|
||
<td style="vertical-align: top; width: 2em; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 1568–1586.
|
||
</td>
|
||
</tr>
|
||
<tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Hirsch, S., Berrisch, J., & Ziel, F. <span class="citation" data-cites="hirsch2024online">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Online Distributional Regression. <em>arXiv preprint</em> arXiv:2407.08750.
|
||
</td>
|
||
</tr>
|
||
<tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="berrisch2022distributional">(<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span>. Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 1065–1086.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., Pappert, S., Ziel, F., & Arsova, A. <span class="citation" data-cites="berrisch2023modeling">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. Modeling volatility and dependence of European carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503.
|
||
</td>
|
||
</tr>
|
||
<tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., Narajewski, M., & Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236.
|
||
</td>
|
||
</tr>
|
||
<tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J. <span class="citation" data-cites="berrisch2025rcpptimer">(<a href="#/references" role="doc-biblioref" onclick="">2025</a>)</span>. rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support. <em>arXiv preprint</em> arXiv:2501.15856.
|
||
</td>
|
||
</tr>
|
||
</tbody></table>
|
||
</div>
|
||
<div class="fragment fade-in-then-out">
|
||
<table style="width: 100%; border-collapse: separate; border-spacing: 0 1em; border: none;">
|
||
<tbody><tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; width: 2em; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.
|
||
</td>
|
||
</tr>
|
||
<tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 1568–1586.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Hirsch, S., Berrisch, J., & Ziel, F. <span class="citation" data-cites="hirsch2024online">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Online Distributional Regression. <em>arXiv preprint</em> arXiv:2407.08750.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., & Ziel, F. <span class="citation" data-cites="berrisch2022distributional">(<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span>. Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 1065–1086.
|
||
</td>
|
||
</tr>
|
||
<tr class="greyed-out" style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., Pappert, S., Ziel, F., & Arsova, A. <span class="citation" data-cites="berrisch2023modeling">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. Modeling volatility and dependence of European carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J., Narajewski, M., & Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236.
|
||
</td>
|
||
</tr>
|
||
<tr style="border: none;">
|
||
<td style="vertical-align: top; border: none;">
|
||
<i class="fa fa-fw fa-newspaper"></i>
|
||
</td>
|
||
<td style="border: none;">
|
||
Berrisch, J. <span class="citation" data-cites="berrisch2025rcpptimer">(<a href="#/references" role="doc-biblioref" onclick="">2025</a>)</span>. rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support. <em>arXiv preprint</em> arXiv:2501.15856.
|
||
</td>
|
||
</tr>
|
||
</tbody></table>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="overview" class="slide level2">
|
||
<h2>Overview</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h4 id="online-distributional-regression">Online Distributional Regression</h4>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h4 id="distributional-modeling-and-forecasting-of-natural-gas-prices">Distributional Modeling and Forecasting of Natural Gas Prices</h4>
|
||
</div></div>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<center>
|
||
<img src="assets/ondir/ondir_flow.svg">
|
||
</center>
|
||
<p>Reduces estimation time by 2-3 orders of magnitude</p>
|
||
<p>Maintainins competitive forecasting accuracy</p>
|
||
<p>Real-World Validation in Energy Markets</p>
|
||
<p><i class="fa-brands fa-fw fa-python" style="color: #FFD43B;"></i> Python Package <em>ondil</em> on <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/simon-hirsch/ondil">Github</a> and <a href="https://pypi.org/project/ondil/">PyPi</a></p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>Forecasting of Day-Ahead and Month-Ahead prices</p>
|
||
<p>To capture the full distribution of future prices</p>
|
||
<p>Extensive data analysis from 2011-2020</p>
|
||
<p>State-Space models, skewed Student’s <em>t</em> distribution</p>
|
||
<p><i class="fa-brands fa-fw fa-python" style="color: #306998;"></i> Python Package <em>sstudentt</em> on <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/BerriJ/sstudentt">Github</a> and <a href="https://pypi.org/project/sstudentt/">PyPi</a></p>
|
||
<div class="cell" data-layout-align="left">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-left">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-1-1.svg" class="quarto-figure quarto-figure-left"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</section>
|
||
<section id="overview-1" class="slide level2">
|
||
<h2>Overview</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h4 id="high-resolution-peak-demand-estimation-using-generalized-additive-models-and-deep-neural-networks">High-Resolution Peak Demand Estimation Using Generalized Additive Models and Deep Neural Networks</h4>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h4 id="rcpptimer-rcpp-tic-toc-timer-with-openmp-support">rcpptimer: Rcpp Tic-Toc Timer with OpenMP Support</h4>
|
||
</div></div>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Predict high-resolution electricity peaks using only low-resolution data</p>
|
||
<p>Combine GAMs and DNN’s for superior accuracy</p>
|
||
<p><i class="fa fa-fw fa-award" style="color:var(--col_red_9);"></i> Won Western Power Distribution Competition</p>
|
||
<p><i class="fa fa-fw fa-award" style="color:var(--col_amber_9);"></i> Won Best-Student-Presentation Award</p>
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-2-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p><i class="fa-brands fa-fw fa-r-project" style="color: #276DC3;"></i> R Package <em>rcpptimer</em> on <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/BerriJ/rcpptimer">Github</a> and <a href="https://cran.r-project.org/web/packages/rcpptimer/">CRAN</a></p>
|
||
<p>Provides Rcpp bindings for <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> <a href="https://github.com/BerriJ/rcpptimer">cpptimer</a></p>
|
||
<p>tic-toc class for timing C++ code</p>
|
||
<p>Supports nested, overlapping and scoped timers</p>
|
||
<p>Supports OpenMP parallelism</p>
|
||
<div class="sourceCode" id="cb1"><pre class="sourceCode numberSource cpp number-lines code-with-copy"><code class="sourceCode cpp"><span id="cb1-1"><a href=""></a><span class="co">//[[Rcpp::depends(rcpptimer)]]</span></span>
|
||
<span id="cb1-2"><a href=""></a><span class="pp">#include </span><span class="im"><rcpptimer.h></span></span>
|
||
<span id="cb1-3"><a href=""></a></span>
|
||
<span id="cb1-4"><a href=""></a><span class="dt">void</span> main<span class="op">(){</span></span>
|
||
<span id="cb1-5"><a href=""></a> Rcpp<span class="op">::</span>Timer timer<span class="op">;</span></span>
|
||
<span id="cb1-6"><a href=""></a> Rcpp<span class="op">::</span>Timer<span class="op">::</span>ScopedTimer _<span class="op">(</span>timer<span class="op">,</span> <span class="st">"ST"</span><span class="op">);</span></span>
|
||
<span id="cb1-7"><a href=""></a></span>
|
||
<span id="cb1-8"><a href=""></a> timer<span class="op">.</span>tic<span class="op">();</span></span>
|
||
<span id="cb1-9"><a href=""></a> <span class="co">// Some more code</span></span>
|
||
<span id="cb1-10"><a href=""></a> timer<span class="op">.</span>toc<span class="op">();</span></span>
|
||
<span id="cb1-11"><a href=""></a><span class="op">}</span> <span class="co">// ScopedTimer will stop automatically</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
||
</div></div>
|
||
</section>
|
||
<section>
|
||
<section id="sec-crps-learning" class="title-slide slide level1 center">
|
||
<h1>CRPS Learning</h1>
|
||
<p>Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. <em>Journal of Econometrics</em>, 237(2), 105221.</p>
|
||
</section>
|
||
<section id="introduction" class="slide level2">
|
||
<h2>Introduction</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>The Idea:</p>
|
||
<ul>
|
||
<li><p>Combine multiple forecasts instead of choosing one</p></li>
|
||
<li><p>Combination weights may vary over <strong>time</strong>, over the <strong>distribution</strong> or <strong>both</strong></p></li>
|
||
</ul>
|
||
<p>2 Popular options for combining distributions:</p>
|
||
<ul>
|
||
<li>Combining across quantiles (this paper)
|
||
<ul>
|
||
<li>Horizontal aggregation, vincentization</li>
|
||
</ul></li>
|
||
<li>Combining across probabilities
|
||
<ul>
|
||
<li>Vertical aggregation</li>
|
||
</ul></li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-1" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-1-1">Time</a></li><li><a href="#tabset-1-2">Distribution</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-1-1">
|
||
<div class="cell">
|
||
<div class="cell-output-display">
|
||
<div>
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-3-1.svg"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-1-2">
|
||
<div class="cell">
|
||
<div class="cell-output-display">
|
||
<div>
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-4-1.svg"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</section>
|
||
<section id="the-framework-of-prediction-under-expert-advice" class="slide level2">
|
||
<h2>The Framework of Prediction under Expert Advice</h2>
|
||
<h3 id="the-sequential-framework">The sequential framework</h3>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Each day, <span class="math inline">\(t = 1, 2, ... T\)</span></p>
|
||
<ul>
|
||
<li>The <strong>forecaster</strong> receives predictions <span class="math inline">\(\widehat{X}_{t,k}\)</span> from <span class="math inline">\(K\)</span> <strong>experts</strong></li>
|
||
<li>The <strong>forecaster</strong> assings weights <span class="math inline">\(w_{t,k}\)</span> to each <strong>expert</strong></li>
|
||
<li>The <strong>forecaster</strong> calculates her prediction: <span class="math display">\[\begin{equation}
|
||
\widetilde{X}_{t} = \sum_{k=1}^K w_{t,k} \widehat{X}_{t,k}.
|
||
\label{eq_forecast_def}
|
||
\end{equation}\]</span></li>
|
||
<li>The realization for <span class="math inline">\(t\)</span> is observed</li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<ul>
|
||
<li>The experts can be institutions, persons, or models</li>
|
||
<li>The forecasts can be point-forecasts (i.e., mean or median) or full predictive distributions</li>
|
||
<li>We do not need any assumptions concerning the underlying data</li>
|
||
<li><span class="citation" data-cites="cesa2006prediction">Cesa-Bianchi & Lugosi (<a href="#/references" role="doc-biblioref" onclick="">2006</a>)</span></li>
|
||
</ul>
|
||
</div></div>
|
||
</section>
|
||
<section id="the-regret" class="slide level2">
|
||
<h2>The Regret</h2>
|
||
<p>Weights are updated sequentially according to the past performance of the <span class="math inline">\(K\)</span> experts.</p>
|
||
<p>That is, a loss function <span class="math inline">\(\ell\)</span> is needed. This is used to compute the <strong>cumulative regret</strong> <span class="math inline">\(R_{t,k}\)</span></p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
R_{t,k} = \widetilde{L}_{t} - \widehat{L}_{t,k} = \sum_{i = 1}^t \ell(\widetilde{X}_{i},Y_i) - \ell(\widehat{X}_{i,k},Y_i)\label{eq:regret}
|
||
\end{equation}\]</span></p>
|
||
<p>The cumulative regret:</p>
|
||
<ul>
|
||
<li>Indicates the predictive accuracy of the expert <span class="math inline">\(k\)</span> until time <span class="math inline">\(t\)</span>.</li>
|
||
<li>Measures how much the forecaster <em>regrets</em> not having followed the expert’s advice</li>
|
||
</ul>
|
||
<p>Popular loss functions for point forecasting <span class="citation" data-cites="gneiting2011making">Gneiting (<a href="#/references" role="doc-biblioref" onclick="">2011</a>)</span>:</p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p><span class="math inline">\(\ell_2\)</span> loss:</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\ell_2(x, y) = | x -y|^2 \label{eq:elltwo}
|
||
\end{equation}\]</span></p>
|
||
<p>Strictly proper for <em>mean</em> prediction</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p><span class="math inline">\(\ell_1\)</span> loss:</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\ell_1(x, y) = | x -y| \label{eq:ellone}
|
||
\end{equation}\]</span></p>
|
||
<p>Strictly proper for <em>median</em> predictions</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="popular-algorithms-and-the-risk" class="slide level2">
|
||
<h2>Popular Algorithms and the Risk</h2>
|
||
<p><br></p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="popular-aggregation-algorithms">Popular Aggregation Algorithms</h3>
|
||
<p><br></p>
|
||
<h4 id="the-naive-combination">The naive combination</h4>
|
||
<p><span class="math display">\[\begin{equation}
|
||
w_{t,k}^{\text{Naive}} = \frac{1}{K}\label{eq:naive_combination}
|
||
\end{equation}\]</span></p>
|
||
<h4 id="the-exponentially-weighted-average-forecaster-ewa">The exponentially weighted average forecaster (EWA)</h4>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\begin{aligned}
|
||
w_{t,k}^{\text{EWA}} & = \frac{e^{\eta R_{t,k}} }{\sum_{k = 1}^K e^{\eta R_{t,k}}}\\
|
||
& =
|
||
\frac{e^{-\eta \ell(\widehat{X}_{t,k},Y_t)} w^{\text{EWA}}_{t-1,k} }{\sum_{k = 1}^K e^{-\eta \ell(\widehat{X}_{t,k},Y_t)} w^{\text{EWA}}_{t-1,k}}
|
||
\end{aligned}\label{eq:exp_combination}
|
||
\end{equation}\]</span></p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h3 id="optimality">Optimality</h3>
|
||
<p>In stochastic settings, the cumulative Risk should be analyzed <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>: <span class="math display">\[\begin{align}
|
||
&\underbrace{\widetilde{\mathcal{R}}_t = \sum_{i=1}^t \mathbb{E}[\ell(\widetilde{X}_{i},Y_i)|\mathcal{F}_{i-1}]}_{\text{Cumulative Risk of Forecaster}} \\
|
||
&\underbrace{\widehat{\mathcal{R}}_{t,k} = \sum_{i=1}^t \mathbb{E}[\ell(\widehat{X}_{i,k},Y_i)|\mathcal{F}_{i-1}]}_{\text{Cumulative Risk of Experts}}
|
||
\label{eq_def_cumrisk}
|
||
\end{align}\]</span></p>
|
||
</div></div>
|
||
</section>
|
||
<section id="optimal-convergence" class="slide level2">
|
||
<h2>Optimal Convergence</h2>
|
||
<p><br></p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="the-selection-problem">The selection problem</h3>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\min} \right) \stackrel{t\to \infty}{\rightarrow} a \quad \text{with} \quad a \leq 0.
|
||
\label{eq_opt_select}
|
||
\end{equation}\]</span> The forecaster is asymptotically not worse than the best expert <span class="math inline">\(\widehat{\mathcal{R}}_{t,\min}\)</span>.</p>
|
||
<h3 id="the-convex-aggregation-problem">The convex aggregation problem</h3>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\pi} \right) \stackrel{t\to \infty}{\rightarrow} b \quad \text{with} \quad b \leq 0 .
|
||
\label{eq_opt_conv}
|
||
\end{equation}\]</span> The forecaster is asymptotically not worse than the best convex combination <span class="math inline">\(\widehat{X}_{t,\pi}\)</span> in hindsight (<strong>oracle</strong>).</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>Optimal rates with respect to selection <span class="math inline">\(\eqref{eq_opt_select}\)</span> and convex aggregation <span class="math inline">\(\eqref{eq_opt_conv}\)</span> <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>:</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\min} \right) & =
|
||
\mathcal{O}\left(\frac{\log(K)}{t}\right)\label{eq_optp_select}
|
||
\end{align}\]</span></p>
|
||
<p><span class="math display">\[\begin{align}
|
||
\frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\pi} \right) & =
|
||
\mathcal{O}\left(\sqrt{\frac{\log(K)}{t}}\right)
|
||
\label{eq_optp_conv}
|
||
\end{align}\]</span></p>
|
||
<p>Algorithms can statisfy both <span class="math inline">\(\eqref{eq_optp_select}\)</span> and <span class="math inline">\(\eqref{eq_optp_conv}\)</span> depending on:</p>
|
||
<ul>
|
||
<li>The loss function</li>
|
||
<li>Regularity conditions on <span class="math inline">\(Y_t\)</span> and <span class="math inline">\(\widehat{X}_{t,k}\)</span></li>
|
||
<li>The weighting scheme</li>
|
||
</ul>
|
||
</div></div>
|
||
</section>
|
||
<section id="section" class="slide level2">
|
||
<h2></h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="optimal-convergence-1">Optimal Convergence</h3>
|
||
<p><br></p>
|
||
<p>EWA satisfies optimal selection convergence <span class="math inline">\(\eqref{eq_optp_select}\)</span> in a deterministic setting if:</p>
|
||
<ul>
|
||
<li>Loss <span class="math inline">\(\ell\)</span> is exp-concave</li>
|
||
<li>Learning-rate <span class="math inline">\(\eta\)</span> is chosen correctly</li>
|
||
</ul>
|
||
<p>Those results can be converted to any stochastic setting <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>.</p>
|
||
<p>Optimal convex aggregation convergence <span class="math inline">\(\eqref{eq_optp_conv}\)</span> can be satisfied by applying the kernel-trick:</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
\ell^{\nabla}(x,y) = \ell'(\widetilde{X},y) x
|
||
\end{align}\]</span></p>
|
||
<p><span class="math inline">\(\ell'\)</span> is the subgradient of <span class="math inline">\(\ell\)</span> at forecast combination <span class="math inline">\(\widetilde{X}\)</span>.</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h3 id="probabilistic-setting">Probabilistic Setting</h3>
|
||
<p><br></p>
|
||
<p><strong>An appropriate choice:</strong></p>
|
||
<p><span class="math display">\[\begin{equation*}
|
||
\text{CRPS}(F, y) = \int_{\mathbb{R}} {(F(x) - \mathbb{1}\{ x > y \})}^2 dx \label{eq:crps}
|
||
\end{equation*}\]</span></p>
|
||
<p>It’s strictly proper <span class="citation" data-cites="gneiting2007strictly">Gneiting & Raftery (<a href="#/references" role="doc-biblioref" onclick="">2007</a>)</span>.</p>
|
||
<p>Using the CRPS, we can calculate time-adaptive weights <span class="math inline">\(w_{t,k}\)</span>. However, what if the experts’ performance varies in parts of the distribution?</p>
|
||
<p><i class="fa fa-fw fa-lightbulb" style="color:var(--col_yellow_9);"></i> Utilize this relation:</p>
|
||
<p><span class="math display">\[\begin{equation*}
|
||
\text{CRPS}(F, y) = 2 \int_0^{1} \text{QL}_p(F^{-1}(p), y) dp.\label{eq_crps_qs}
|
||
\end{equation*}\]</span></p>
|
||
<p>… to combine quantiles of the probabilistic forecasts individually using the quantile-loss QL.</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="crps-learning-optimality" class="slide level2">
|
||
<h2>CRPS Learning Optimality</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-2" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-2-1">Almost Optimal Convergence</a></li><li><a href="#tabset-2-2">Conditions + Lemma</a></li><li><a href="#tabset-2-3">Proposition + Theorem</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-2-1">
|
||
<div style="font-size: 90%;">
|
||
<p><i class="fa fa-fw fa-exclamation" style="color:var(--col_orange_10);"></i> QL is convex, but not exp-concave</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Bernstein Online Aggregation (BOA) lets us weaken the exp-concavity condition. It satisfies that there exist a <span class="math inline">\(C>0\)</span> such that for <span class="math inline">\(x>0\)</span> it holds that</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
P\left( \frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\pi} \right) \leq C \log(\log(t)) \left(\sqrt{\frac{\log(K)}{t}} + \frac{\log(K)+x}{t}\right) \right) \geq
|
||
1-e^{-x}
|
||
\label{eq_boa_opt_conv}
|
||
\end{equation}\]</span></p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal w.r.t. <em>convex aggregation</em> <span class="math inline">\(\eqref{eq_optp_conv}\)</span> <span class="citation" data-cites="wintenberger2017optimal">Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2017</a>)</span>.</p>
|
||
<p>The same algorithm satisfies that there exist a <span class="math inline">\(C>0\)</span> such that for <span class="math inline">\(x>0\)</span> it holds that <span class="math display">\[\begin{equation}
|
||
P\left( \frac{1}{t}\left(\widetilde{\mathcal{R}}_t - \widehat{\mathcal{R}}_{t,\min} \right) \leq
|
||
C\left(\frac{\log(K)+\log(\log(Gt))+ x}{\alpha t}\right)^{\frac{1}{2-\beta}} \right) \geq
|
||
1-2e^{-x}
|
||
\label{eq_boa_opt_select}
|
||
\end{equation}\]</span></p>
|
||
<p>if <span class="math inline">\(Y_t\)</span> is bounded, the considered loss <span class="math inline">\(\ell\)</span> is convex <span class="math inline">\(G\)</span>-Lipschitz and weak exp-concave in its first coordinate.</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal w.r.t. <em>selection</em> <span class="math inline">\(\eqref{eq_optp_select}\)</span> <span class="citation" data-cites="gaillard2018efficient">Gaillard & Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2018</a>)</span>.</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> We show that this holds for QL under feasible conditions.</p>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-2-2">
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p><strong>Lemma 1</strong></p>
|
||
<p><span class="math display">\[\begin{align}
|
||
2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\min}
|
||
& \leq \widehat{\mathcal{R}}^{\text{CRPS}}_{t,\min}
|
||
\label{eq_risk_ql_crps_expert} \\
|
||
2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\pi}
|
||
& \leq \widehat{\mathcal{R}}^{\text{CRPS}}_{t,\pi} .
|
||
\label{eq_risk_ql_crps_convex}
|
||
\end{align}\]</span></p>
|
||
<p>Pointwise can outperform constant procedures</p>
|
||
<p>QL is convex but not exp-concave:</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal convergence w.r.t. <em>convex aggregation</em> <span class="math inline">\(\eqref{eq_boa_opt_conv}\)</span> <i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> <br></p>
|
||
<p>For almost optimal congerence w.r.t. <em>selection</em> <span class="math inline">\(\eqref{eq_boa_opt_select}\)</span> we need to check <strong>A1</strong> and <strong>A2</strong>:</p>
|
||
<p>QL is Lipschitz continuous:</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> <strong>A1</strong> holds <i class="fa fa-fw fa-check" style="color:var(--col_orange_9);"></i></p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p><strong>A1</strong></p>
|
||
<p>For some <span class="math inline">\(G>0\)</span> it holds for all <span class="math inline">\(x_1,x_2\in \mathbb{R}\)</span> and <span class="math inline">\(t>0\)</span> that</p>
|
||
<p><span class="math display">\[ | \ell(x_1, Y_t)-\ell(x_2, Y_t) | \leq G |x_1-x_2|\]</span></p>
|
||
<p><strong>A2</strong> For some <span class="math inline">\(\alpha>0\)</span>, <span class="math inline">\(\beta\in[0,1]\)</span> it holds for all <span class="math inline">\(x_1,x_2 \in \mathbb{R}\)</span> and <span class="math inline">\(t>0\)</span> that</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
\mathbb{E}[
|
||
& \ell(x_1, Y_t)-\ell(x_2, Y_t) | \mathcal{F}_{t-1}] \leq \\
|
||
& \mathbb{E}[ \ell'(x_1, Y_t)(x_1 - x_2) |\mathcal{F}_{t-1}] \\
|
||
& +
|
||
\mathbb{E}\left[ \left. \left( \alpha(\ell'(x_1, Y_t)(x_1 - x_2))^{2}\right)^{1/\beta} \right|\mathcal{F}_{t-1}\right]
|
||
\end{align*}\]</span></p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Almost optimal w.r.t. <em>selection</em> <span class="math inline">\(\eqref{eq_optp_select}\)</span> <span class="citation" data-cites="gaillard2018efficient">Gaillard & Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2018</a>)</span>.</p>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-2-3">
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Conditional quantile risk: <span class="math inline">\(\mathcal{Q}_p(x) = \mathbb{E}[ \text{QL}_p(x, Y_t) | \mathcal{F}_{t-1}]\)</span>.</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> convexity properties of <span class="math inline">\(\mathcal{Q}_p\)</span> depend on the conditional distribution <span class="math inline">\(Y_t|\mathcal{F}_{t-1}\)</span>.</p>
|
||
<p><strong>Proposition 1</strong></p>
|
||
<p>Let <span class="math inline">\(Y\)</span> be a univariate random variable with (Radon-Nikodym) <span class="math inline">\(\nu\)</span>-density <span class="math inline">\(f\)</span>, then for the second subderivative of the quantile risk <span class="math inline">\(\mathcal{Q}_p(x) = \mathbb{E}[ \text{QL}_p(x, Y) ]\)</span> of <span class="math inline">\(Y\)</span> it holds for all <span class="math inline">\(p\in(0,1)\)</span> that <span class="math inline">\(\mathcal{Q}_p'' = f.\)</span> Additionally, if <span class="math inline">\(f\)</span> is a continuous Lebesgue-density with <span class="math inline">\(f\geq\gamma>0\)</span> for some constant <span class="math inline">\(\gamma>0\)</span> on its support <span class="math inline">\(\text{spt}(f)\)</span> then is <span class="math inline">\(\mathcal{Q}_p\)</span> is <span class="math inline">\(\gamma\)</span>-strongly convex.</p>
|
||
<p>Strong convexity with <span class="math inline">\(\beta=1\)</span> implies weak exp-concavity <strong>A2</strong> <i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> <span class="citation" data-cites="gaillard2018efficient">Gaillard & Wintenberger (<a href="#/references" role="doc-biblioref" onclick="">2018</a>)</span></p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> <strong>A1</strong> and <strong>A2</strong> give us almost optimal convergence w.r.t. selection <span class="math inline">\(\eqref{eq_boa_opt_select}\)</span> <i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> <br></p>
|
||
<p><strong>Theorem 1</strong></p>
|
||
<p>The gradient based fully adaptive Bernstein online aggregation (BOAG) applied pointwise for all <span class="math inline">\(p\in(0,1)\)</span> on <span class="math inline">\(\text{QL}\)</span> satisfies <span class="math inline">\(\eqref{eq_boa_opt_conv}\)</span> with minimal CRPS given by</p>
|
||
<p><span class="math display">\[\widehat{\mathcal{R}}_{t,\pi} = 2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\pi}.\]</span></p>
|
||
<p>If <span class="math inline">\(Y_t|\mathcal{F}_{t-1}\)</span> is bounded and has a pdf <span class="math inline">\(f_t\)</span> satifying <span class="math inline">\(f_t>\gamma >0\)</span> on its support <span class="math inline">\(\text{spt}(f_t)\)</span> then <span class="math inline">\(\ref{eq_boa_opt_select}\)</span> holds with <span class="math inline">\(\beta=1\)</span> and</p>
|
||
<p><span class="math display">\[\widehat{\mathcal{R}}_{t,\min} = 2\overline{\widehat{\mathcal{R}}}^{\text{QL}}_{t,\min}\]</span>.</p>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<aside class="notes">
|
||
<p>We apply Bernstein Online Aggregation (BOA). It lets us weaken the exp-concavity condition while almost keeping the optimalities <span class="math inline">\(\ref{eq_optp_select}\)</span> and <span class="math inline">\(\ref{eq_optp_conv}\)</span>.</p>
|
||
<style type="text/css">
|
||
span.MJX_Assistive_MathML {
|
||
position:absolute!important;
|
||
clip: rect(1px, 1px, 1px, 1px);
|
||
padding: 1px 0 0 0!important;
|
||
border: 0!important;
|
||
height: 1px!important;
|
||
width: 1px!important;
|
||
overflow: hidden!important;
|
||
display:block!important;
|
||
}</style></aside>
|
||
</section>
|
||
<section id="a-probabilistic-example" class="slide level2">
|
||
<h2>A Probabilistic Example</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Simple Example:</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
Y_t & \sim \mathcal{N}(0,\,1) \\
|
||
\widehat{X}_{t,1} & \sim \widehat{F}_{1} = \mathcal{N}(-1,\,1) \\
|
||
\widehat{X}_{t,2} & \sim \widehat{F}_{2} = \mathcal{N}(3,\,4)
|
||
\label{eq:dgp_sim1}
|
||
\end{align}\]</span></p>
|
||
<ul>
|
||
<li>True weights vary over <span class="math inline">\(p\)</span></li>
|
||
<li>Figures show the ECDF and calculated weights using <span class="math inline">\(T=25\)</span> realizations</li>
|
||
<li>Pointwise solution creates rough estimates</li>
|
||
<li>Pointwise is better than constant</li>
|
||
<li>Smooth solution is better than pointwise</li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-3" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-3-1">CDFs</a></li><li><a href="#tabset-3-2">Weights</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-3-1">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-5-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-3-2">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-6-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</section>
|
||
<section id="the-smoothing-procedures" class="slide level2">
|
||
<h2>The Smoothing Procedures</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-4" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-4-1">Penalized Smoothing</a></li><li><a href="#tabset-4-2">Basis Smoothing</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-4-1">
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Penalized cubic B-Splines for smoothing weights:</p>
|
||
<p>Let <span class="math inline">\(\varphi=(\varphi_1,\ldots, \varphi_L)\)</span> be bounded basis functions on <span class="math inline">\((0,1)\)</span> Then we approximate <span class="math inline">\(w_{t,k}\)</span> by</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
w_{t,k}^{\text{smooth}} = \sum_{l=1}^L \beta_l \varphi_l = \beta'\varphi
|
||
\end{align}\]</span></p>
|
||
<p>with parameter vector <span class="math inline">\(\beta\)</span>. The latter is estimated to penalize <span class="math inline">\(L_2\)</span>-smoothing which minimizes</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\| w_{t,k} - \beta' \varphi \|^2_2 + \lambda \| \mathcal{D}^{d} (\beta' \varphi) \|^2_2
|
||
\label{eq_function_smooth}
|
||
\end{equation}\]</span></p>
|
||
<p>with differential operator <span class="math inline">\(\mathcal{D}\)</span></p>
|
||
<p>Computation is easy, since we have an analytical solution</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>We receive the constant solution for high values of <span class="math inline">\(\lambda\)</span> when setting <span class="math inline">\(d=1\)</span></p>
|
||
<center>
|
||
<img src="assets/crps_learning/weights_lambda.gif">
|
||
</center>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-4-2">
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Represent weights as linear combinations of bounded basis functions:</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
w_{t,k} = \sum_{l=1}^L \beta_{t,k,l} \varphi_l = \boldsymbol \beta_{t,k}' \boldsymbol \varphi
|
||
\end{equation}\]</span></p>
|
||
<p>A popular choice are are B-Splines as local basis functions</p>
|
||
<p><span class="math inline">\(\boldsymbol \beta_{t,k}\)</span> is calculated using a reduced regret matrix:</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\underbrace{\boldsymbol r_{t}}_{\text{LxK}} = \frac{L}{P} \underbrace{\boldsymbol B'}_{\text{LxP}} \underbrace{\left({\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widetilde{\boldsymbol X}_{t},Y_t)- {\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widehat{\boldsymbol X}_{t},Y_t)\right)}_{\text{PxK}}
|
||
\end{equation}\]</span></p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> <span class="math inline">\(\boldsymbol r_{t}\)</span> is transformed from PxK to LxK</p>
|
||
<p>If <span class="math inline">\(L = P\)</span> it holds that <span class="math inline">\(\boldsymbol \varphi = \boldsymbol{I}\)</span> For <span class="math inline">\(L = 1\)</span> we receive constant weights</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>Weights converge to the constant solution if <span class="math inline">\(L\rightarrow 1\)</span></p>
|
||
<center>
|
||
<img src="assets/crps_learning/weights_kstep.gif">
|
||
</center>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="the-proposed-crps-learning-algorithm" class="slide level2">
|
||
<h2>The Proposed CRPS-Learning Algorithm</h2>
|
||
<p><br></p>
|
||
<div style="font-size: 85%;">
|
||
<div class="columns">
|
||
<div class="column" style="width:43%;">
|
||
<h3 id="initialization">Initialization:</h3>
|
||
<p>Array of expert predicitons: <span class="math inline">\(\widehat{X}_{t,p,k}\)</span></p>
|
||
<p>Vector of Prediction targets: <span class="math inline">\(Y_t\)</span></p>
|
||
<p>Starting Weights: <span class="math inline">\(\boldsymbol w_0=(w_{0,1},\ldots, w_{0,K})\)</span></p>
|
||
<p>Penalization parameter: <span class="math inline">\(\lambda\geq 0\)</span></p>
|
||
<p>B-spline and penalty matrices <span class="math inline">\(\boldsymbol B\)</span> and <span class="math inline">\(\boldsymbol D\)</span> on <span class="math inline">\(\mathcal{P}= (p_1,\ldots,p_M)\)</span></p>
|
||
<p>Hat matrix: <span class="math display">\[\boldsymbol{\mathcal{H}} = \boldsymbol B(\boldsymbol B'\boldsymbol B+ \lambda (\alpha \boldsymbol D_1'\boldsymbol D_1 + (1-\alpha) \boldsymbol D_2'\boldsymbol D_2))^{-1} \boldsymbol B'\]</span></p>
|
||
<p>Cumulative Regret: <span class="math inline">\(R_{0,k} = 0\)</span></p>
|
||
<p>Range parameter: <span class="math inline">\(E_{0,k}=0\)</span></p>
|
||
<p>Starting pseudo-weights: <span class="math inline">\(\boldsymbol \beta_0 = \boldsymbol B^{\text{pinv}}\boldsymbol w_0(\boldsymbol{\mathcal{P}})\)</span></p>
|
||
</div><div class="column" style="width:2%;">
|
||
|
||
</div><div class="column" style="width:55%;">
|
||
<h3 id="core">Core:</h3>
|
||
<p>for( t in 1:T ) {</p>
|
||
<p> <span class="math inline">\(\widetilde{\boldsymbol X}_{t} = \text{Sort}\left( \boldsymbol w_{t-1}'(\boldsymbol P) \widehat{\boldsymbol X}_{t} \right)\)</span> <b style="color: var(--col_grey_7);"># Prediction</b></p>
|
||
<p> <span class="math inline">\(\boldsymbol r_{t} = \frac{L}{M} \boldsymbol B' \left({\boldsymbol{QL}}_{\boldsymbol{\mathcal P}}^{\nabla}(\widetilde{\boldsymbol X}_{t},Y_t)- {\boldsymbol{QL}}_{\boldsymbol{\mathcal P}}^{\nabla}(\widehat{\boldsymbol X}_{t},Y_t)\right)\)</span></p>
|
||
<p> <span class="math inline">\(\boldsymbol E_{t} = \max(\boldsymbol E_{t-1}, \boldsymbol r_{t}^+ + \boldsymbol r_{t}^-)\)</span></p>
|
||
<p> <span class="math inline">\(\boldsymbol V_{t} = \boldsymbol V_{t-1} + \boldsymbol r_{t}^{ \odot 2}\)</span></p>
|
||
<p> <span class="math inline">\(\boldsymbol \eta_{t} =\min\left( \left(-\log(\boldsymbol \beta_{0}) \odot \boldsymbol V_{t}^{\odot -1} \right)^{\odot\frac{1}{2}} , \frac{1}{2}\boldsymbol E_{t}^{\odot-1}\right)\)</span></p>
|
||
<p> <span class="math inline">\(\boldsymbol R_{t} = \boldsymbol R_{t-1}+ \boldsymbol r_{t} \odot \left( \boldsymbol 1 - \boldsymbol \eta_{t} \odot \boldsymbol r_{t} \right)/2 + \boldsymbol E_{t} \odot \mathbb{1}\{-2\boldsymbol \eta_{t}\odot \boldsymbol r_{t} > 1\}\)</span></p>
|
||
<p> <span class="math inline">\(\boldsymbol \beta_{t} = K \boldsymbol \beta_{0} \odot \boldsymbol {SoftMax}\left( - \boldsymbol \eta_{t} \odot \boldsymbol R_{t} + \log( \boldsymbol \eta_{t}) \right)\)</span></p>
|
||
<p> <span class="math inline">\(\boldsymbol w_{t}(\boldsymbol P) = \underbrace{\boldsymbol B(\boldsymbol B'\boldsymbol B+ \lambda (\alpha \boldsymbol D_1'\boldsymbol D_1 + (1-\alpha) \boldsymbol D_2'\boldsymbol D_2))^{-1} \boldsymbol B'}_{\boldsymbol{\mathcal{H}}} \boldsymbol B \boldsymbol \beta_{t}\)</span></p>
|
||
<p>}</p>
|
||
</div></div>
|
||
</div>
|
||
</section>
|
||
<section id="simulation-study" class="slide level2">
|
||
<h2>Simulation Study</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-6" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-6-1">BOA</a></li><li><a href="#tabset-6-2">Comparison to EWA and ML-Poly</a></li><li><a href="#tabset-6-3">Study Forget</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-6-1">
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Data Generating Process of the <a href="#/simple_example">simple probabilistic example</a>:</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
Y_t &\sim \mathcal{N}(0,\,1)\\
|
||
\widehat{X}_{t,1} &\sim \widehat{F}_{1}=\mathcal{N}(-1,\,1) \\
|
||
\widehat{X}_{t,2} &\sim \widehat{F}_{2}=\mathcal{N}(3,\,4)
|
||
\end{align*}\]</span></p>
|
||
<ul>
|
||
<li>Constant solution <span class="math inline">\(\lambda \rightarrow \infty\)</span></li>
|
||
<li>Pointwise Solution of the proposed BOAG</li>
|
||
<li>Smoothed Solution of the proposed BOAG
|
||
<ul>
|
||
<li>Weights are smoothed during learning</li>
|
||
<li>Smooth weights are used to calculate Regret, adjust weights, etc.</li>
|
||
</ul></li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-5" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-5-1">QL Deviation</a></li><li><a href="#tabset-5-2">CRPS vs. Lambda</a></li><li><a href="#tabset-5-3">Knots</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-5-1">
|
||
<p>Deviation from best attainable QL (1000 runs).</p>
|
||
<p><img data-src="assets/crps_learning/pre_vs_post.gif"></p>
|
||
</div>
|
||
<div id="tabset-5-2">
|
||
<p>CRPS Values for different <span class="math inline">\(\lambda\)</span> (1000 runs)</p>
|
||
<p><img data-src="assets/crps_learning/pre_vs_post_lambda.gif"></p>
|
||
</div>
|
||
<div id="tabset-5-3">
|
||
<p>CRPS for different number of knots (1000 runs)</p>
|
||
<p><img data-src="assets/crps_learning/pre_vs_post_kstep.gif"></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-6-2">
|
||
<p>The same simulation carried out for different algorithms (1000 runs):</p>
|
||
<center>
|
||
<img src="assets/crps_learning/algos_constant.gif">
|
||
</center>
|
||
</div>
|
||
<div id="tabset-6-3">
|
||
<div class="columns">
|
||
<div class="column" style="width:38%;">
|
||
<h4 id="new-dgp">New DGP:</h4>
|
||
<p><span class="math display">\[\begin{align*}
|
||
Y_t &\sim \mathcal{N}\left(\frac{\sin(0.005 \pi t )}{2},\,1\right) \\
|
||
\widehat{X}_{t,1} &\sim \widehat{F}_{1} = \mathcal{N}(-1,\,1) \\
|
||
\widehat{X}_{t,2} &\sim \widehat{F}_{2} = \mathcal{N}(3,\,4)
|
||
\end{align*}\]</span></p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Changing optimal weights</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> Single run example depicted aside</p>
|
||
<p><i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> No forgetting leads to long-term constant weights</p>
|
||
<center>
|
||
<img src="assets/crps_learning/forget.png">
|
||
</center>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:58%;">
|
||
<h3 id="section-1"> </h3>
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-7-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="application-study" class="slide level2">
|
||
<h2>Application Study</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-8" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-8-1">Overview</a></li><li><a href="#tabset-8-2">Experts</a></li><li><a href="#tabset-8-3">Results</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-8-1">
|
||
<div class="columns">
|
||
<div class="column" style="width:29%;">
|
||
<div style="font-size: 85%;">
|
||
<p>Data:</p>
|
||
<ul>
|
||
<li>Forecasting European emission allowances (EUA)</li>
|
||
<li>Daily month-ahead prices</li>
|
||
<li>Jan 13 - Dec 20 (Phase III, 2092 Obs)</li>
|
||
<li>Rolling Window (length 250 ~ 1 year)</li>
|
||
</ul>
|
||
<p>Combination methods:</p>
|
||
<ul>
|
||
<li>Online
|
||
<ul>
|
||
<li>Naive, BOAG, EWAG, ML-PolyG, BMA</li>
|
||
</ul></li>
|
||
<li>Batch
|
||
<ul>
|
||
<li>QRlin, QRconv</li>
|
||
</ul></li>
|
||
</ul>
|
||
</div>
|
||
</div><div class="column" style="width:2%;">
|
||
|
||
</div><div class="column" style="width:69%;">
|
||
<p>Tuning paramter grids:</p>
|
||
<ul>
|
||
<li>Smoothing Penalty: <span class="math inline">\(\Lambda= \{0\}\cup \{2^x|x\in \{-4,-3.5,\ldots,12\}\}\)</span></li>
|
||
<li>Learning Rates: <span class="math inline">\(\mathcal{E}= \{2^x|x\in \{-1,-0.5,\ldots,9\}\}\)</span></li>
|
||
</ul>
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-8-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-8-2">
|
||
<div style="font-size: 90%;">
|
||
<p>Simple exponential smoothing with additive errors (<strong>ETS-ANN</strong>):</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
Y_{t} = l_{t-1} + \varepsilon_t \quad \text{with} \quad l_t = l_{t-1} + \alpha \varepsilon_t \quad \text{and} \quad \varepsilon_t \sim \mathcal{N}(0,\sigma^2)
|
||
\end{align*}\]</span></p>
|
||
<p>Quantile regression (<strong>QuantReg</strong>): For each <span class="math inline">\(p \in \mathcal{P}\)</span> we assume:</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
F^{-1}_{Y_t}(p) = \beta_{p,0} + \beta_{p,1} Y_{t-1} + \beta_{p,2} |Y_{t-1}-Y_{t-2}|
|
||
\end{align*}\]</span></p>
|
||
<p>ARIMA(1,0,1)-GARCH(1,1) with Gaussian errors (<strong>ARMA-GARCH</strong>):</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
Y_{t} = \mu + \phi(Y_{t-1}-\mu) + \theta \varepsilon_{t-1} + \varepsilon_t \quad \text{with} \quad \varepsilon_t = \sigma_t Z, \quad \sigma_t^2 = \omega + \alpha \varepsilon_{t-1}^2 + \beta \sigma_{t-1}^2 \quad \text{and} \quad Z_t \sim \mathcal{N}(0,1)
|
||
\end{align*}\]</span></p>
|
||
<p>ARIMA(0,1,0)-I-EGARCH(1,1) with Gaussian errors (<strong>I-EGARCH</strong>):</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
Y_{t} = \mu + Y_{t-1} + \varepsilon_t \quad \text{with} \quad \varepsilon_t = \sigma_t Z, \quad \log(\sigma_t^2) = \omega + \alpha Z_{t-1}+ \gamma (|Z_{t-1}|-\mathbb{E}|Z_{t-1}|) + \beta \log(\sigma_{t-1}^2) \quad \text{and} \quad Z_t \sim \mathcal{N}(0,1)
|
||
\end{align*}\]</span></p>
|
||
<p>ARIMA(0,1,0)-GARCH(1,1) with student-t errors (<strong>I-GARCHt</strong>):</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
Y_{t} = \mu + Y_{t-1} + \varepsilon_t \quad \text{with} \quad \varepsilon_t = \sigma_t Z, \quad \sigma_t^2 = \omega + \alpha \varepsilon_{t-1}^2 + \beta \sigma_{t-1}^2 \quad \text{and} \quad Z_t \sim t(0,1, \nu)
|
||
\end{align*}\]</span></p>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-8-3">
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-7" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-7-1">Significance</a></li><li><a href="#tabset-7-2">QL</a></li><li><a href="#tabset-7-3">Cumulative Loss Difference</a></li><li><a href="#tabset-7-4">Weights (BOAG P-Smooth)</a></li><li><a href="#tabset-7-5">Weights (Last)</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-7-1">
|
||
<div class="cell" data-layout-align="center">
|
||
<table class="lightable-paper caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; margin-left: auto; margin-right: auto;">
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ETS</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">QuantReg</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ARMA-GARCH</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">I-EGARCH</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">I-GARCHt</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">2.101<sup>(>.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">1.358<sup>(>.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 174, 128, 255) !important;">0.52<sup>(0.993)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 175, 128, 255) !important;">0.511<sup>(0.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 255, 128, 255) !important;">-0.037<sup>(0.406)</sup></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="cell" data-layout-align="center">
|
||
<table class="lightable-paper caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; margin-left: auto; margin-right: auto;">
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">BOAG</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">EWAG</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ML-PolyG</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">BMA</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">QRlin</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">QRconv</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">Pointwise</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(138, 233, 128, 255) !important;">-0.170<sup>(0.055)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(210, 255, 128, 255) !important;">-0.089<sup>(0.175)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(164, 242, 128, 255) !important;">-0.141<sup>(0.112)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 248, 128, 255) !important;">0.032<sup>(0.771)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">3.482<sup>(>.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(252, 255, 128, 255) !important;">-0.019<sup>(0.309)</sup></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">B-Constant</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(186, 249, 128, 255) !important;">-0.118<sup>(0.146)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(234, 255, 128, 255) !important;">-0.049<sup>(0.305)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(209, 255, 128, 255) !important;">-0.090<sup>(0.218)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 247, 128, 255) !important;">0.038<sup>(0.834)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">4.002<sup>(>.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 171, 128, 255) !important;">0.539<sup>(0.996)</sup></td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">P-Constant</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(168, 243, 128, 255) !important;">-0.138<sup>(0.020)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 255, 128, 255) !important;">-0.070<sup>(0.137)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(172, 244, 128, 255) !important;">-0.133<sup>(0.026)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 247, 128, 255) !important;">0.039<sup>(0.851)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">5.275<sup>(>.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 251, 128, 255) !important;">0.009<sup>(0.683)</sup></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">B-Smooth</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 232, 128, 255) !important;">-0.173<sup>(0.062)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(224, 255, 128, 255) !important;">-0.065<sup>(0.276)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(165, 242, 128, 255) !important;">-0.141<sup>(0.118)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 255, 128, 255) !important;">-0.042<sup>(0.386)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(244, 244, 244, 255) !important;">-</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(244, 244, 244, 255) !important;">-</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important; font-weight: bold;">P-Smooth</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(128, 230, 128, 255) !important;"><strong>-0.182</strong><sup>(0.039)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(196, 252, 128, 255) !important;">-0.107<sup>(0.121)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 236, 128, 255) !important;">-0.160<sup>(0.065)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 247, 128, 255) !important;">0.040<sup>(0.804)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 128, 140, 255) !important;">3.495<sup>(>.999)</sup></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 255, 128, 255) !important;">-0.012<sup>(0.369)</sup></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div style="font-size: 0.7em;">
|
||
<p>CRPS difference to Naive. Negative values correspond to better performance (the best value is bold). <br> Additionally, we show the p-value of the DM-test, testing against Naive. The cells are colored with respect to their values (the greener better).</p>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-7-2">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-11-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-7-3">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-12-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-7-4">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-13-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-7-5">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-14-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section></section>
|
||
<section>
|
||
<section id="multivariate-probabilistic-crps-learning-with-an-application-to-day-ahead-electricity-prices" class="title-slide slide level1 center">
|
||
<h1>Multivariate Probabilistic CRPS Learning with an Application to Day-Ahead Electricity Prices</h1>
|
||
<p>Berrisch, J., & Ziel, F. (2024). <em>International Journal of Forecasting</em>, 40(4), 1568-1586.</p>
|
||
</section>
|
||
<section id="multivariate-crps-learning" class="slide level2">
|
||
<h2>Multivariate CRPS Learning</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:45%;">
|
||
<p>We extend the <strong>B-Smooth</strong> and <strong>P-Smooth</strong> procedures to the multivariate setting:</p>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-9" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-9-1">Penalized Smoothing</a></li><li><a href="#tabset-9-2">Basis Smoothing</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-9-1">
|
||
<p>Let <span class="math inline">\(\boldsymbol{\psi}^{\text{mv}}=(\psi_1,\ldots, \psi_{D})\)</span> and <span class="math inline">\(\boldsymbol{\psi}^{\text{pr}}=(\psi_1,\ldots, \psi_{P})\)</span> be two sets of bounded basis functions on <span class="math inline">\((0,1)\)</span>:</p>
|
||
<p><span class="math display">\[\begin{equation*}
|
||
\boldsymbol w_{t,k} = \boldsymbol{\psi}^{\text{mv}} \boldsymbol{b}_{t,k} {\boldsymbol{\psi}^{pr}}'
|
||
\end{equation*}\]</span></p>
|
||
<p>with parameter matix <span class="math inline">\(\boldsymbol b_{t,k}\)</span>. The latter is estimated to penalize <span class="math inline">\(L_2\)</span>-smoothing which minimizes</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
& \| \boldsymbol{\beta}_{t,d, k}' \boldsymbol{\varphi}^{\text{pr}} - \boldsymbol b_{t, d, k}' \boldsymbol{\psi}^{\text{pr}} \|^2_2 + \lambda^{\text{pr}} \| \mathcal{D}_{q} (\boldsymbol b_{t, d, k}' \boldsymbol{\psi}^{\text{pr}}) \|^2_2 + \nonumber \\
|
||
& \| \boldsymbol{\beta}_{t, p, k}' \boldsymbol{\varphi}^{\text{mv}} - \boldsymbol b_{t, p, k}' \boldsymbol{\psi}^{\text{mv}} \|^2_2 + \lambda^{\text{mv}} \| \mathcal{D}_{q} (\boldsymbol b_{t, p, k}' \boldsymbol{\psi}^{\text{mv}}) \|^2_2 \nonumber
|
||
\end{align}\]</span></p>
|
||
<p>with differential operator <span class="math inline">\(\mathcal{D}_q\)</span> of order <span class="math inline">\(q\)</span></p>
|
||
<p><span style="color:var(--col_green_10);"><i class="fa-solid fa-calculator" aria-label="calculator"></i></span> We have an analytical solution.</p>
|
||
</div>
|
||
<div id="tabset-9-2">
|
||
<p>Linear combinations of bounded basis functions:</p>
|
||
<p><span class="math display">\[\begin{equation}
|
||
\underbrace{\boldsymbol w_{t,k}}_{D \text{ x } P} = \sum_{j=1}^{\widetilde D} \sum_{l=1}^{\widetilde P} \beta_{t,j,l,k} \varphi^{\text{mv}}_{j} \varphi^{\text{pr}}_{l} = \underbrace{\boldsymbol \varphi^{\text{mv}}}_{D\text{ x }\widetilde D} \boldsymbol \beta_{t,k} \underbrace{{\boldsymbol\varphi^{\text{pr}}}'}_{\widetilde P \text{ x }P} \nonumber
|
||
\end{equation}\]</span></p>
|
||
<p>A popular choice: B-Splines</p>
|
||
<p><span class="math inline">\(\boldsymbol \beta_{t,k}\)</span> is calculated using a reduced regret matrix:</p>
|
||
<p><span class="math inline">\(\underbrace{\boldsymbol r_{t,k}}_{\widetilde P \times \widetilde D} = \boldsymbol \varphi^{\text{pr}} \underbrace{\left({\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widetilde{\boldsymbol X}_{t},Y_t)- {\boldsymbol{QL}}_{\mathcal{P}}^{\nabla}(\widehat{\boldsymbol X}_{t},Y_t)\right)}_{\text{PxD}}\boldsymbol \varphi^{\text{mv}}\)</span></p>
|
||
<p>If <span class="math inline">\(\widetilde P = P\)</span> it holds that <span class="math inline">\(\boldsymbol \varphi^{pr} = \boldsymbol{I}\)</span> (pointwise)</p>
|
||
<p>For <span class="math inline">\(\widetilde P = 1\)</span> we receive constant weights</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="column" style="width:2%;">
|
||
|
||
</div><div class="column" style="width:53%;">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/algorithm.svg" class="quarto-figure quarto-figure-center" width="1000"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</section>
|
||
<section id="application" class="slide level2">
|
||
<h2>Application</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h4 id="data">Data</h4>
|
||
<ul>
|
||
<li>Day-Ahead electricity price forecasts from <span class="citation" data-cites="marcjasz2022distributional">Marcjasz et al. (<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span></li>
|
||
<li>Produced using probabilistic neural networks</li>
|
||
<li>24-dimensional distributional forecasts</li>
|
||
<li>Distribution assumptions: JSU and Normal</li>
|
||
<li>8 experts (4 JSU, 4 Normal)</li>
|
||
<li>27th Dec. 2018 to 31st Dec. 2020 (736 days)</li>
|
||
<li>We extract 99 quantiles (percentiles)</li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h4 id="setup">Setup</h4>
|
||
<p>Evaluation: Exclude first 182 observations</p>
|
||
<p>Extensions: Penalized smoothing | Forgetting</p>
|
||
<p>Tuning strategies:</p>
|
||
<ul>
|
||
<li>Bayesian Fix
|
||
<ul>
|
||
<li>Sophisticated Baesian Search algorithm</li>
|
||
</ul></li>
|
||
<li>Online
|
||
<ul>
|
||
<li>Dynamic based on past performance</li>
|
||
</ul></li>
|
||
<li>Bayesian Online
|
||
<ul>
|
||
<li>First Bayesian Fix then Online</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Computation Time: ~30 Minutes</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="results-1" class="slide level2">
|
||
<h2>Results</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:55%;">
|
||
<div class="cell">
|
||
<div class="cell-output-display">
|
||
<table class="lightable-paper table caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; margin-left: auto; margin-right: auto; font-size: 16px; margin-left: auto; margin-right: auto;">
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU2</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU3</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">JSU4</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm2</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm3</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Norm4</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">Naive</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.487</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.444</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.499</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 94, 77, 255) !important;">1.374</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.414</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.535</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.420</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.422</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important;">1.295</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="cell-output-display">
|
||
<table class="lightable-paper table caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; margin-left: auto; margin-right: auto; font-size: 16px; margin-left: auto; margin-right: auto;">
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Description</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Parameter Tuning</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">BOA</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">ML-Poly</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: center; color: rgba(65, 65, 65, 255) !important;">EWA</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Constant</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 232, 90, 255) !important;">1.2933</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 232, 84, 255) !important;">1.2966</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 187, 53, 255) !important;">1.3188</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Pointwise</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(239, 232, 91, 255) !important;">1.2936</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 211, 70, 255) !important;">1.3010</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 174, 44, 255) !important;">1.3101</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">FTL</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.3752</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.3692</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(238, 82, 80, 255) !important;">1.3863</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">B Constant Pr</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 232, 90, 255) !important;">1.2936</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 217, 74, 255) !important;">1.3000</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(241, 96, 76, 255) !important;">1.3432</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">B Constant Mv</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;"></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(228, 228, 92, 255) !important;">1.2918</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(250, 235, 89, 255) !important;">1.2945</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 203, 64, 255) !important;">1.3076</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Forget</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(233, 230, 92, 255) !important;">1.2930</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 236, 87, 255) !important;">1.2956</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 176, 45, 255) !important;">1.3096</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Full</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 226, 93, 255) !important;">1.2905</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(220, 225, 94, 255) !important;">1.2902</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(194, 217, 97, 255) !important;">1.2870<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth.forget</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(215, 224, 94, 255) !important;">1.2911</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(225, 227, 93, 255) !important;">1.2912</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(193, 216, 97, 255) !important;">1.2869<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Fix</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 226, 93, 255) !important;">1.2918</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(229, 228, 92, 255) !important;">1.2917</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(196, 217, 97, 255) !important;">1.2873<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Forget</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(151, 202, 101, 255) !important;">1.2855<span class="sup-zero-width">**</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 234, 86, 255) !important;">1.2961</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 176, 45, 255) !important;">1.3098</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Full</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(233, 230, 92, 255) !important;">1.2919</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(195, 217, 97, 255) !important;">1.2873<span class="zero-width">.</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(198, 218, 96, 255) !important;">1.2873<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth.forget</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(143, 200, 102, 255) !important;">1.2845<span class="sup-zero-width">**</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(180, 212, 99, 255) !important;">1.2862<span class="sup-zero-width">*</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(191, 216, 97, 255) !important;">1.2864<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Bayesian Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(221, 226, 93, 255) !important;">1.2918</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(230, 229, 92, 255) !important;">1.2918</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(198, 218, 96, 255) !important;">1.2874<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Forget</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(150, 202, 102, 255) !important;">1.2855<span class="sup-zero-width">**</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 234, 86, 255) !important;">1.2961</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 175, 44, 255) !important;">1.3114</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Full</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(208, 221, 95, 255) !important;">1.2886</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(187, 214, 98, 255) !important;">1.2861<span class="sup-zero-width">*</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(199, 218, 96, 255) !important;">1.2873<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth.forget</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(143, 199, 102, 255) !important;">1.2845<span class="sup-zero-width">***</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(187, 215, 98, 255) !important;">1.2867<span class="sup-zero-width">*</span></td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(194, 217, 97, 255) !important;">1.2866<span class="zero-width">.</span></td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Smooth</td>
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Sampling Online</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(222, 226, 93, 255) !important;">1.2918</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(229, 228, 92, 255) !important;">1.2917</td>
|
||
<td style="text-align: center; color: rgba(65, 65, 65, 255) !important; background-color: rgba(201, 219, 96, 255) !important;">1.2877<span class="zero-width">.</span></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div style="font-size: 0.6em; margin-top: 0.5em;">
|
||
<span style="padding: 2px 6px;">Coloring w.r.t. test statistic: </span>
|
||
<span style="background-color: #66BA6A; padding: 2px 6px;"><-5</span>
|
||
<span style="background-color: #7CC168; padding: 2px 6px;">-4</span>
|
||
<span style="background-color: #91C866; padding: 2px 6px;">-3</span>
|
||
<span style="background-color: #B0D363; padding: 2px 6px;">-2</span>
|
||
<span style="background-color: #D8E05E; padding: 2px 6px;">-1</span>
|
||
<span style="background-color: #FFED58; padding: 2px 6px;">0</span>
|
||
<span style="background-color: #FFD145; padding: 2px 6px;">1</span>
|
||
<span style="background-color: #FFB531; padding: 2px 6px;">2</span>
|
||
<span style="background-color: #FC9733; padding: 2px 6px;">3</span>
|
||
<span style="background-color: #F67744; padding: 2px 6px;">4</span>
|
||
<span style="background-color: #EE5250; padding: 2px 6px;">>5</span>
|
||
</div>
|
||
|
||
<div style="font-size: 0.7em;">
|
||
<span style="padding: 2px 6px;">Significance denoted by: </span><span>.</span> p < 0.1; <span>*</span> p < 0.05; <span>**</span> p < 0.01; <span>***</span> p < 0.001;
|
||
</div>
|
||
</div><div class="column" style="width:45%;">
|
||
<p><br></p>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-10" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-10-1">Constant</a></li><li><a href="#tabset-10-2">Pointwise</a></li><li><a href="#tabset-10-3">B Constant PR</a></li><li><a href="#tabset-10-4">B Constant MV</a></li><li><a href="#tabset-10-5">Smooth.Forget</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-10-1">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/constant.svg" class="quarto-figure quarto-figure-center" width="400"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-10-2">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/pointwise.svg" class="quarto-figure quarto-figure-center" width="400"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-10-3">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/constant_pr.svg" class="quarto-figure quarto-figure-center" width="400"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-10-4">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/constant_mv.svg" class="quarto-figure quarto-figure-center" width="400"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-10-5">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/smooth_best.svg" class="quarto-figure quarto-figure-center" width="400"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
</section>
|
||
<section id="results-2" class="slide level2">
|
||
<h2>Results</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-11" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-11-1">Chosen Parameters</a></li><li><a href="#tabset-11-2">Weights: Hour 16:00-17:00</a></li><li><a href="#tabset-11-3">Weights: Median</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-11-1">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-22-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-11-2">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-23-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-11-3">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-24-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="non-equidistant-knots" class="slide level2">
|
||
<h2>Non-Equidistant Knots</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-12" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-12-1">Knot Placement Illustration</a></li><li><a href="#tabset-12-2">Knot Placement Details</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-12-1">
|
||
<div class="cell">
|
||
<div class="sourceCode cell-code hidden" id="cb2" data-startfrom="2590" data-source-offset="0"><pre class="sourceCode numberSource js number-lines code-with-copy"><code class="sourceCode javascript" style="counter-reset: source-line 2589;"><span id="cb2-2590"><a href=""></a>d3 <span class="op">=</span> <span class="pp">require</span>(<span class="st">"d3@7"</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">
|
||
<div id="ojs-cell-1" data-nodetype="declaration">
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="cell">
|
||
<div class="sourceCode cell-code hidden" id="cb3" data-startfrom="2594" data-source-offset="0"><pre class="sourceCode numberSource js number-lines code-with-copy"><code class="sourceCode javascript" style="counter-reset: source-line 2593;"><span id="cb3-2594"><a href=""></a>bsplineData <span class="op">=</span> <span class="fu">FileAttachment</span>(<span class="st">"assets/mcrps_learning/basis_functions.csv"</span>)<span class="op">.</span><span class="fu">csv</span>({ <span class="dt">typed</span><span class="op">:</span> <span class="kw">true</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">
|
||
<div id="ojs-cell-2" data-nodetype="declaration">
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="cell">
|
||
<div class="sourceCode cell-code hidden" id="cb4" data-startfrom="2599" data-source-offset="-0"><pre class="sourceCode numberSource js number-lines code-with-copy"><code class="sourceCode javascript" style="counter-reset: source-line 2598;"><span id="cb4-2599"><a href=""></a><span class="kw">function</span> <span class="fu">updateChartInner</span>(g<span class="op">,</span> x<span class="op">,</span> y<span class="op">,</span> linesGroup<span class="op">,</span> color<span class="op">,</span> line<span class="op">,</span> data) {</span>
|
||
<span id="cb4-2600"><a href=""></a> <span class="co">// Update axes with transitions</span></span>
|
||
<span id="cb4-2601"><a href=""></a> x<span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> d3<span class="op">.</span><span class="fu">max</span>(data<span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="at">x</span>)])<span class="op">;</span></span>
|
||
<span id="cb4-2602"><a href=""></a> g<span class="op">.</span><span class="fu">select</span>(<span class="st">".x-axis"</span>)<span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1500</span>)<span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisBottom</span>(x)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">10</span>))<span class="op">;</span></span>
|
||
<span id="cb4-2603"><a href=""></a> y<span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> d3<span class="op">.</span><span class="fu">max</span>(data<span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="at">y</span>)])<span class="op">;</span></span>
|
||
<span id="cb4-2604"><a href=""></a> g<span class="op">.</span><span class="fu">select</span>(<span class="st">".y-axis"</span>)<span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1500</span>)<span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisLeft</span>(y)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">5</span>))<span class="op">;</span></span>
|
||
<span id="cb4-2605"><a href=""></a></span>
|
||
<span id="cb4-2606"><a href=""></a> <span class="co">// Group data by basis function</span></span>
|
||
<span id="cb4-2607"><a href=""></a> <span class="kw">const</span> dataByFunction <span class="op">=</span> <span class="bu">Array</span><span class="op">.</span><span class="fu">from</span>(d3<span class="op">.</span><span class="fu">group</span>(data<span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="at">b</span>))<span class="op">;</span></span>
|
||
<span id="cb4-2608"><a href=""></a> <span class="kw">const</span> keyFn <span class="op">=</span> d <span class="kw">=></span> d[<span class="dv">0</span>]<span class="op">;</span></span>
|
||
<span id="cb4-2609"><a href=""></a></span>
|
||
<span id="cb4-2610"><a href=""></a> <span class="co">// Update basis function lines</span></span>
|
||
<span id="cb4-2611"><a href=""></a> <span class="kw">const</span> u <span class="op">=</span> linesGroup<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"path"</span>)<span class="op">.</span><span class="fu">data</span>(dataByFunction<span class="op">,</span> keyFn)<span class="op">;</span></span>
|
||
<span id="cb4-2612"><a href=""></a> u<span class="op">.</span><span class="fu">join</span>(</span>
|
||
<span id="cb4-2613"><a href=""></a> enter <span class="kw">=></span> enter<span class="op">.</span><span class="fu">append</span>(<span class="st">"path"</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">"fill"</span><span class="op">,</span><span class="st">"none"</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke-width"</span><span class="op">,</span><span class="dv">3</span>)</span>
|
||
<span id="cb4-2614"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> (_<span class="op">,</span> i) <span class="kw">=></span> <span class="fu">color</span>(i))<span class="op">.</span><span class="fu">attr</span>(<span class="st">"d"</span><span class="op">,</span> d <span class="kw">=></span> <span class="fu">line</span>(d[<span class="dv">1</span>]<span class="op">.</span><span class="fu">map</span>(pt <span class="kw">=></span> ({<span class="dt">x</span><span class="op">:</span> pt<span class="op">.</span><span class="at">x</span><span class="op">,</span> <span class="dt">y</span><span class="op">:</span> <span class="dv">0</span>}))))</span>
|
||
<span id="cb4-2615"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"opacity"</span><span class="op">,</span><span class="dv">0</span>)<span class="op">,</span></span>
|
||
<span id="cb4-2616"><a href=""></a> update <span class="kw">=></span> update<span class="op">,</span></span>
|
||
<span id="cb4-2617"><a href=""></a> exit <span class="kw">=></span> exit<span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1000</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"opacity"</span><span class="op">,</span><span class="dv">0</span>)<span class="op">.</span><span class="fu">remove</span>()</span>
|
||
<span id="cb4-2618"><a href=""></a> )</span>
|
||
<span id="cb4-2619"><a href=""></a> <span class="op">.</span><span class="fu">transition</span>()<span class="op">.</span><span class="fu">duration</span>(<span class="dv">1000</span>)</span>
|
||
<span id="cb4-2620"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"d"</span><span class="op">,</span> d <span class="kw">=></span> <span class="fu">line</span>(d[<span class="dv">1</span>]))</span>
|
||
<span id="cb4-2621"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> (_<span class="op">,</span> i) <span class="kw">=></span> <span class="fu">color</span>(i))</span>
|
||
<span id="cb4-2622"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"opacity"</span><span class="op">,</span><span class="dv">1</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2623"><a href=""></a>}</span>
|
||
<span id="cb4-2624"><a href=""></a></span>
|
||
<span id="cb4-2625"><a href=""></a>chart <span class="op">=</span> {</span>
|
||
<span id="cb4-2626"><a href=""></a> <span class="co">// State variables for selected parameters</span></span>
|
||
<span id="cb4-2627"><a href=""></a> <span class="kw">let</span> selectedMu <span class="op">=</span> <span class="fl">0.5</span><span class="op">;</span></span>
|
||
<span id="cb4-2628"><a href=""></a> <span class="kw">let</span> selectedSig <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
|
||
<span id="cb4-2629"><a href=""></a> <span class="kw">let</span> selectedNonc <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
|
||
<span id="cb4-2630"><a href=""></a> <span class="kw">let</span> selectedTailw <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
|
||
<span id="cb4-2631"><a href=""></a> <span class="kw">const</span> filteredData <span class="op">=</span> () <span class="kw">=></span> bsplineData<span class="op">.</span><span class="fu">filter</span>(d <span class="kw">=></span></span>
|
||
<span id="cb4-2632"><a href=""></a> <span class="bu">Math</span><span class="op">.</span><span class="fu">abs</span>(selectedMu <span class="op">-</span> d<span class="op">.</span><span class="at">mu</span>) <span class="op"><</span> <span class="fl">0.001</span> <span class="op">&&</span></span>
|
||
<span id="cb4-2633"><a href=""></a> d<span class="op">.</span><span class="at">sig</span> <span class="op">===</span> selectedSig <span class="op">&&</span></span>
|
||
<span id="cb4-2634"><a href=""></a> d<span class="op">.</span><span class="at">nonc</span> <span class="op">===</span> selectedNonc <span class="op">&&</span></span>
|
||
<span id="cb4-2635"><a href=""></a> d<span class="op">.</span><span class="at">tailw</span> <span class="op">===</span> selectedTailw</span>
|
||
<span id="cb4-2636"><a href=""></a> )<span class="op">;</span></span>
|
||
<span id="cb4-2637"><a href=""></a> <span class="kw">const</span> container <span class="op">=</span> d3<span class="op">.</span><span class="fu">create</span>(<span class="st">"div"</span>)</span>
|
||
<span id="cb4-2638"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"max-width"</span><span class="op">,</span> <span class="st">"none"</span>)</span>
|
||
<span id="cb4-2639"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)<span class="op">;;</span></span>
|
||
<span id="cb4-2640"><a href=""></a> <span class="kw">const</span> controlsContainer <span class="op">=</span> container<span class="op">.</span><span class="fu">append</span>(<span class="st">"div"</span>)</span>
|
||
<span id="cb4-2641"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"display"</span><span class="op">,</span> <span class="st">"flex"</span>)</span>
|
||
<span id="cb4-2642"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"gap"</span><span class="op">,</span> <span class="st">"20px"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2643"><a href=""></a> <span class="co">// slider controls</span></span>
|
||
<span id="cb4-2644"><a href=""></a> <span class="kw">const</span> sliders <span class="op">=</span> [</span>
|
||
<span id="cb4-2645"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Mu'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=></span> selectedMu<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=></span> selectedMu <span class="op">=</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="fl">0.1</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="fl">0.9</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="fl">0.2</span> }<span class="op">,</span></span>
|
||
<span id="cb4-2646"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Sigma'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=></span> <span class="bu">Math</span><span class="op">.</span><span class="fu">log2</span>(selectedSig)<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=></span> selectedSig <span class="op">=</span> <span class="dv">2</span> <span class="op">**</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="op">-</span><span class="dv">2</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="dv">2</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="dv">1</span> }<span class="op">,</span></span>
|
||
<span id="cb4-2647"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Noncentrality'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=></span> selectedNonc<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=></span> selectedNonc <span class="op">=</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="op">-</span><span class="dv">4</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="dv">4</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="dv">2</span> }<span class="op">,</span></span>
|
||
<span id="cb4-2648"><a href=""></a> { <span class="dt">label</span><span class="op">:</span> <span class="st">'Tailweight'</span><span class="op">,</span> <span class="kw">get</span><span class="op">:</span> () <span class="kw">=></span> <span class="bu">Math</span><span class="op">.</span><span class="fu">log2</span>(selectedTailw)<span class="op">,</span> <span class="kw">set</span><span class="op">:</span> v <span class="kw">=></span> selectedTailw <span class="op">=</span> <span class="dv">2</span> <span class="op">**</span> v<span class="op">,</span> <span class="dt">min</span><span class="op">:</span> <span class="op">-</span><span class="dv">2</span><span class="op">,</span> <span class="dt">max</span><span class="op">:</span> <span class="dv">2</span><span class="op">,</span> <span class="dt">step</span><span class="op">:</span> <span class="dv">1</span> }</span>
|
||
<span id="cb4-2649"><a href=""></a> ]<span class="op">;</span></span>
|
||
<span id="cb4-2650"><a href=""></a> <span class="co">// Build slider controls with D3 data join</span></span>
|
||
<span id="cb4-2651"><a href=""></a> <span class="kw">const</span> sliderCont <span class="op">=</span> controlsContainer<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">'div'</span>)<span class="op">.</span><span class="fu">data</span>(sliders)<span class="op">.</span><span class="fu">join</span>(<span class="st">'div'</span>)</span>
|
||
<span id="cb4-2652"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'display'</span><span class="op">,</span><span class="st">'flex'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'align-items'</span><span class="op">,</span><span class="st">'center'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'gap'</span><span class="op">,</span><span class="st">'10px'</span>)</span>
|
||
<span id="cb4-2653"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'flex'</span><span class="op">,</span><span class="st">'1'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'min-width'</span><span class="op">,</span><span class="st">'0px'</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2654"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">append</span>(<span class="st">'label'</span>)<span class="op">.</span><span class="fu">text</span>(d <span class="kw">=></span> d<span class="op">.</span><span class="at">label</span> <span class="op">+</span> <span class="st">':'</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">'font-size'</span><span class="op">,</span><span class="st">'20px'</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2655"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">append</span>(<span class="st">'input'</span>)</span>
|
||
<span id="cb4-2656"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">'type'</span><span class="op">,</span><span class="st">'range'</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">'min'</span><span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="at">min</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">'max'</span><span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="at">max</span>)<span class="op">.</span><span class="fu">attr</span>(<span class="st">'step'</span><span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="at">step</span>)</span>
|
||
<span id="cb4-2657"><a href=""></a> <span class="op">.</span><span class="fu">property</span>(<span class="st">'value'</span><span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="fu">get</span>())</span>
|
||
<span id="cb4-2658"><a href=""></a> <span class="op">.</span><span class="fu">on</span>(<span class="st">'input'</span><span class="op">,</span> <span class="kw">function</span>(<span class="bu">event</span><span class="op">,</span> d) {</span>
|
||
<span id="cb4-2659"><a href=""></a> <span class="kw">const</span> val <span class="op">=</span> <span class="op">+</span><span class="kw">this</span><span class="op">.</span><span class="at">value</span><span class="op">;</span> d<span class="op">.</span><span class="fu">set</span>(val)<span class="op">;</span></span>
|
||
<span id="cb4-2660"><a href=""></a> d3<span class="op">.</span><span class="fu">select</span>(<span class="kw">this</span><span class="op">.</span><span class="at">parentNode</span>)<span class="op">.</span><span class="fu">select</span>(<span class="st">'span'</span>)<span class="op">.</span><span class="fu">text</span>(d<span class="op">.</span><span class="at">label</span><span class="op">.</span><span class="fu">match</span>(<span class="ss">/Sigma</span><span class="sc">|</span><span class="ss">Tailweight/</span>) <span class="op">?</span> <span class="dv">2</span><span class="op">**</span>val <span class="op">:</span> val)<span class="op">;</span></span>
|
||
<span id="cb4-2661"><a href=""></a> <span class="fu">updateChart</span>(<span class="fu">filteredData</span>())<span class="op">;</span></span>
|
||
<span id="cb4-2662"><a href=""></a> })</span>
|
||
<span id="cb4-2663"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'width'</span><span class="op">,</span> <span class="st">'100%'</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2664"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">append</span>(<span class="st">'span'</span>)<span class="op">.</span><span class="fu">text</span>(d <span class="kw">=></span> (d<span class="op">.</span><span class="at">label</span><span class="op">.</span><span class="fu">match</span>(<span class="ss">/Sigma</span><span class="sc">|</span><span class="ss">Tailweight/</span>) <span class="op">?</span> d<span class="op">.</span><span class="fu">get</span>() <span class="op">:</span> d<span class="op">.</span><span class="fu">get</span>()))</span>
|
||
<span id="cb4-2665"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'font-size'</span><span class="op">,</span><span class="st">'20px'</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2666"><a href=""></a> </span>
|
||
<span id="cb4-2667"><a href=""></a> <span class="co">// Add Reset button to clear all sliders to their defaults</span></span>
|
||
<span id="cb4-2668"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">append</span>(<span class="st">'button'</span>)</span>
|
||
<span id="cb4-2669"><a href=""></a> <span class="op">.</span><span class="fu">text</span>(<span class="st">'Reset'</span>)</span>
|
||
<span id="cb4-2670"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'font-size'</span><span class="op">,</span> <span class="st">'20px'</span>)</span>
|
||
<span id="cb4-2671"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'align-self'</span><span class="op">,</span> <span class="st">'center'</span>)</span>
|
||
<span id="cb4-2672"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">'margin-left'</span><span class="op">,</span> <span class="st">'auto'</span>)</span>
|
||
<span id="cb4-2673"><a href=""></a> <span class="op">.</span><span class="fu">on</span>(<span class="st">'click'</span><span class="op">,</span> () <span class="kw">=></span> {</span>
|
||
<span id="cb4-2674"><a href=""></a> <span class="co">// reset state vars</span></span>
|
||
<span id="cb4-2675"><a href=""></a> selectedMu <span class="op">=</span> <span class="fl">0.5</span><span class="op">;</span></span>
|
||
<span id="cb4-2676"><a href=""></a> selectedSig <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
|
||
<span id="cb4-2677"><a href=""></a> selectedNonc <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
|
||
<span id="cb4-2678"><a href=""></a> selectedTailw <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
|
||
<span id="cb4-2679"><a href=""></a> <span class="co">// update input positions</span></span>
|
||
<span id="cb4-2680"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">'input'</span>)<span class="op">.</span><span class="fu">property</span>(<span class="st">'value'</span><span class="op">,</span> d <span class="kw">=></span> d<span class="op">.</span><span class="fu">get</span>())<span class="op">;</span></span>
|
||
<span id="cb4-2681"><a href=""></a> <span class="co">// update displayed labels</span></span>
|
||
<span id="cb4-2682"><a href=""></a> sliderCont<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">'span'</span>)</span>
|
||
<span id="cb4-2683"><a href=""></a> <span class="op">.</span><span class="fu">text</span>(d <span class="kw">=></span> d<span class="op">.</span><span class="at">label</span><span class="op">.</span><span class="fu">match</span>(<span class="ss">/Sigma</span><span class="sc">|</span><span class="ss">Tailweight/</span>) <span class="op">?</span> (<span class="dv">2</span><span class="op">**</span>d<span class="op">.</span><span class="fu">get</span>()) <span class="op">:</span> d<span class="op">.</span><span class="fu">get</span>())<span class="op">;</span></span>
|
||
<span id="cb4-2684"><a href=""></a> <span class="co">// redraw chart</span></span>
|
||
<span id="cb4-2685"><a href=""></a> <span class="fu">updateChart</span>(<span class="fu">filteredData</span>())<span class="op">;</span></span>
|
||
<span id="cb4-2686"><a href=""></a> })<span class="op">;</span></span>
|
||
<span id="cb4-2687"><a href=""></a></span>
|
||
<span id="cb4-2688"><a href=""></a> <span class="co">// Build SVG</span></span>
|
||
<span id="cb4-2689"><a href=""></a> <span class="kw">const</span> width <span class="op">=</span> <span class="dv">1200</span><span class="op">;</span></span>
|
||
<span id="cb4-2690"><a href=""></a> <span class="kw">const</span> height <span class="op">=</span> <span class="dv">450</span><span class="op">;</span></span>
|
||
<span id="cb4-2691"><a href=""></a> <span class="kw">const</span> margin <span class="op">=</span> {<span class="dt">top</span><span class="op">:</span> <span class="dv">40</span><span class="op">,</span> <span class="dt">right</span><span class="op">:</span> <span class="dv">20</span><span class="op">,</span> <span class="dt">bottom</span><span class="op">:</span> <span class="dv">40</span><span class="op">,</span> <span class="dt">left</span><span class="op">:</span> <span class="dv">40</span>}<span class="op">;</span></span>
|
||
<span id="cb4-2692"><a href=""></a> <span class="kw">const</span> innerWidth <span class="op">=</span> width <span class="op">-</span> margin<span class="op">.</span><span class="at">left</span> <span class="op">-</span> margin<span class="op">.</span><span class="at">right</span><span class="op">;</span></span>
|
||
<span id="cb4-2693"><a href=""></a> <span class="kw">const</span> innerHeight <span class="op">=</span> height <span class="op">-</span> margin<span class="op">.</span><span class="at">top</span> <span class="op">-</span> margin<span class="op">.</span><span class="at">bottom</span><span class="op">;</span></span>
|
||
<span id="cb4-2694"><a href=""></a></span>
|
||
<span id="cb4-2695"><a href=""></a> <span class="co">// Set controls container width to match SVG plot width</span></span>
|
||
<span id="cb4-2696"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">style</span>(<span class="st">"max-width"</span><span class="op">,</span> <span class="st">"none"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2697"><a href=""></a> <span class="co">// Distribute each control evenly and make sliders full-width</span></span>
|
||
<span id="cb4-2698"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"div"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"flex"</span><span class="op">,</span> <span class="st">"1"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"min-width"</span><span class="op">,</span> <span class="st">"0px"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2699"><a href=""></a> controlsContainer<span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"input"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)<span class="op">.</span><span class="fu">style</span>(<span class="st">"box-sizing"</span><span class="op">,</span> <span class="st">"border-box"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2700"><a href=""></a> </span>
|
||
<span id="cb4-2701"><a href=""></a> <span class="co">// Create scales</span></span>
|
||
<span id="cb4-2702"><a href=""></a> <span class="kw">const</span> x <span class="op">=</span> d3<span class="op">.</span><span class="fu">scaleLinear</span>()</span>
|
||
<span id="cb4-2703"><a href=""></a> <span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> <span class="dv">1</span>])</span>
|
||
<span id="cb4-2704"><a href=""></a> <span class="op">.</span><span class="fu">range</span>([<span class="dv">0</span><span class="op">,</span> innerWidth])<span class="op">;</span></span>
|
||
<span id="cb4-2705"><a href=""></a> </span>
|
||
<span id="cb4-2706"><a href=""></a> <span class="kw">const</span> y <span class="op">=</span> d3<span class="op">.</span><span class="fu">scaleLinear</span>()</span>
|
||
<span id="cb4-2707"><a href=""></a> <span class="op">.</span><span class="fu">domain</span>([<span class="dv">0</span><span class="op">,</span> <span class="dv">1</span>])</span>
|
||
<span id="cb4-2708"><a href=""></a> <span class="op">.</span><span class="fu">range</span>([innerHeight<span class="op">,</span> <span class="dv">0</span>])<span class="op">;</span></span>
|
||
<span id="cb4-2709"><a href=""></a> </span>
|
||
<span id="cb4-2710"><a href=""></a> <span class="co">// Create a color scale for the basis functions</span></span>
|
||
<span id="cb4-2711"><a href=""></a> <span class="kw">const</span> color <span class="op">=</span> d3<span class="op">.</span><span class="fu">scaleOrdinal</span>(d3<span class="op">.</span><span class="at">schemeCategory10</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2712"><a href=""></a> </span>
|
||
<span id="cb4-2713"><a href=""></a> <span class="co">// Create SVG</span></span>
|
||
<span id="cb4-2714"><a href=""></a> <span class="kw">const</span> svg <span class="op">=</span> d3<span class="op">.</span><span class="fu">create</span>(<span class="st">"svg"</span>)</span>
|
||
<span id="cb4-2715"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"width"</span><span class="op">,</span> <span class="st">"100%"</span>)</span>
|
||
<span id="cb4-2716"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"height"</span><span class="op">,</span> <span class="st">"auto"</span>)</span>
|
||
<span id="cb4-2717"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"viewBox"</span><span class="op">,</span> [<span class="dv">0</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> width<span class="op">,</span> height])</span>
|
||
<span id="cb4-2718"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"preserveAspectRatio"</span><span class="op">,</span> <span class="st">"xMidYMid meet"</span>)</span>
|
||
<span id="cb4-2719"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"style"</span><span class="op">,</span> <span class="st">"max-width: 100%; height: auto;"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2720"><a href=""></a> </span>
|
||
<span id="cb4-2721"><a href=""></a> <span class="co">// Create the chart group</span></span>
|
||
<span id="cb4-2722"><a href=""></a> <span class="kw">const</span> g <span class="op">=</span> svg<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
|
||
<span id="cb4-2723"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"transform"</span><span class="op">,</span> <span class="vs">`translate(</span><span class="sc">${</span>margin<span class="op">.</span><span class="at">left</span><span class="sc">}</span><span class="vs">,</span><span class="sc">${</span>margin<span class="op">.</span><span class="at">top</span><span class="sc">}</span><span class="vs">)`</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2724"><a href=""></a> </span>
|
||
<span id="cb4-2725"><a href=""></a> <span class="co">// Add axes</span></span>
|
||
<span id="cb4-2726"><a href=""></a> <span class="kw">const</span> xAxis <span class="op">=</span> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
|
||
<span id="cb4-2727"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"transform"</span><span class="op">,</span> <span class="vs">`translate(0,</span><span class="sc">${</span>innerHeight<span class="sc">}</span><span class="vs">)`</span>)</span>
|
||
<span id="cb4-2728"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"x-axis"</span>)</span>
|
||
<span id="cb4-2729"><a href=""></a> <span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisBottom</span>(x)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">10</span>))</span>
|
||
<span id="cb4-2730"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"font-size"</span><span class="op">,</span> <span class="st">"20px"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2731"><a href=""></a> </span>
|
||
<span id="cb4-2732"><a href=""></a> <span class="kw">const</span> yAxis <span class="op">=</span> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
|
||
<span id="cb4-2733"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"y-axis"</span>)</span>
|
||
<span id="cb4-2734"><a href=""></a> <span class="op">.</span><span class="fu">call</span>(d3<span class="op">.</span><span class="fu">axisLeft</span>(y)<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">5</span>))</span>
|
||
<span id="cb4-2735"><a href=""></a> <span class="op">.</span><span class="fu">style</span>(<span class="st">"font-size"</span><span class="op">,</span> <span class="st">"20px"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2736"><a href=""></a> </span>
|
||
<span id="cb4-2737"><a href=""></a> <span class="co">// Add a horizontal line at y = 0</span></span>
|
||
<span id="cb4-2738"><a href=""></a> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"line"</span>)</span>
|
||
<span id="cb4-2739"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x1"</span><span class="op">,</span> <span class="dv">0</span>)</span>
|
||
<span id="cb4-2740"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x2"</span><span class="op">,</span> innerWidth)</span>
|
||
<span id="cb4-2741"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y1"</span><span class="op">,</span> <span class="fu">y</span>(<span class="dv">0</span>))</span>
|
||
<span id="cb4-2742"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y2"</span><span class="op">,</span> <span class="fu">y</span>(<span class="dv">0</span>))</span>
|
||
<span id="cb4-2743"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> <span class="st">"#000"</span>)</span>
|
||
<span id="cb4-2744"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke-opacity"</span><span class="op">,</span> <span class="fl">0.2</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2745"><a href=""></a> </span>
|
||
<span id="cb4-2746"><a href=""></a> <span class="co">// Add gridlines</span></span>
|
||
<span id="cb4-2747"><a href=""></a> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
|
||
<span id="cb4-2748"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"grid-lines"</span>)</span>
|
||
<span id="cb4-2749"><a href=""></a> <span class="op">.</span><span class="fu">selectAll</span>(<span class="st">"line"</span>)</span>
|
||
<span id="cb4-2750"><a href=""></a> <span class="op">.</span><span class="fu">data</span>(y<span class="op">.</span><span class="fu">ticks</span>(<span class="dv">5</span>))</span>
|
||
<span id="cb4-2751"><a href=""></a> <span class="op">.</span><span class="fu">join</span>(<span class="st">"line"</span>)</span>
|
||
<span id="cb4-2752"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x1"</span><span class="op">,</span> <span class="dv">0</span>)</span>
|
||
<span id="cb4-2753"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"x2"</span><span class="op">,</span> innerWidth)</span>
|
||
<span id="cb4-2754"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y1"</span><span class="op">,</span> d <span class="kw">=></span> <span class="fu">y</span>(d))</span>
|
||
<span id="cb4-2755"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"y2"</span><span class="op">,</span> d <span class="kw">=></span> <span class="fu">y</span>(d))</span>
|
||
<span id="cb4-2756"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke"</span><span class="op">,</span> <span class="st">"#ccc"</span>)</span>
|
||
<span id="cb4-2757"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"stroke-opacity"</span><span class="op">,</span> <span class="fl">0.5</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2758"><a href=""></a> </span>
|
||
<span id="cb4-2759"><a href=""></a> <span class="co">// Create a line generator</span></span>
|
||
<span id="cb4-2760"><a href=""></a> <span class="kw">const</span> line <span class="op">=</span> d3<span class="op">.</span><span class="fu">line</span>()</span>
|
||
<span id="cb4-2761"><a href=""></a> <span class="op">.</span><span class="fu">x</span>(d <span class="kw">=></span> <span class="fu">x</span>(d<span class="op">.</span><span class="at">x</span>))</span>
|
||
<span id="cb4-2762"><a href=""></a> <span class="op">.</span><span class="fu">y</span>(d <span class="kw">=></span> <span class="fu">y</span>(d<span class="op">.</span><span class="at">y</span>))</span>
|
||
<span id="cb4-2763"><a href=""></a> <span class="op">.</span><span class="fu">curve</span>(d3<span class="op">.</span><span class="at">curveBasis</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2764"><a href=""></a> </span>
|
||
<span id="cb4-2765"><a href=""></a> <span class="co">// Group to contain the basis function lines</span></span>
|
||
<span id="cb4-2766"><a href=""></a> <span class="kw">const</span> linesGroup <span class="op">=</span> g<span class="op">.</span><span class="fu">append</span>(<span class="st">"g"</span>)</span>
|
||
<span id="cb4-2767"><a href=""></a> <span class="op">.</span><span class="fu">attr</span>(<span class="st">"class"</span><span class="op">,</span> <span class="st">"basis-functions"</span>)<span class="op">;</span></span>
|
||
<span id="cb4-2768"><a href=""></a> </span>
|
||
<span id="cb4-2769"><a href=""></a> <span class="co">// Store the current basis functions for transition</span></span>
|
||
<span id="cb4-2770"><a href=""></a> <span class="kw">let</span> currentBasisFunctions <span class="op">=</span> <span class="kw">new</span> <span class="bu">Map</span>()<span class="op">;</span></span>
|
||
<span id="cb4-2771"><a href=""></a> </span>
|
||
<span id="cb4-2772"><a href=""></a> <span class="co">// Function to update the chart with new data</span></span>
|
||
<span id="cb4-2773"><a href=""></a> <span class="kw">function</span> <span class="fu">updateChart</span>(data) {</span>
|
||
<span id="cb4-2774"><a href=""></a> <span class="fu">updateChartInner</span>(g<span class="op">,</span> x<span class="op">,</span> y<span class="op">,</span> linesGroup<span class="op">,</span> color<span class="op">,</span> line<span class="op">,</span> data)<span class="op">;</span></span>
|
||
<span id="cb4-2775"><a href=""></a> }</span>
|
||
<span id="cb4-2776"><a href=""></a> </span>
|
||
<span id="cb4-2777"><a href=""></a> <span class="co">// Store the update function</span></span>
|
||
<span id="cb4-2778"><a href=""></a> svg<span class="op">.</span><span class="fu">node</span>()<span class="op">.</span><span class="at">update</span> <span class="op">=</span> updateChart<span class="op">;</span></span>
|
||
<span id="cb4-2779"><a href=""></a> </span>
|
||
<span id="cb4-2780"><a href=""></a> <span class="co">// Initial render</span></span>
|
||
<span id="cb4-2781"><a href=""></a> <span class="fu">updateChart</span>(<span class="fu">filteredData</span>())<span class="op">;</span></span>
|
||
<span id="cb4-2782"><a href=""></a> </span>
|
||
<span id="cb4-2783"><a href=""></a> container<span class="op">.</span><span class="fu">node</span>()<span class="op">.</span><span class="fu">appendChild</span>(svg<span class="op">.</span><span class="fu">node</span>())<span class="op">;</span></span>
|
||
<span id="cb4-2784"><a href=""></a> <span class="cf">return</span> container<span class="op">.</span><span class="fu">node</span>()<span class="op">;</span></span>
|
||
<span id="cb4-2785"><a href=""></a>}</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">
|
||
<div>
|
||
<div id="ojs-cell-3-1" data-nodetype="declaration">
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="cell-output cell-output-display">
|
||
<div>
|
||
<div id="ojs-cell-3-2" data-nodetype="declaration">
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-12-2">
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Non-central beta distribution <span class="citation" data-cites="johnson1995continuous">Johnson et al. (<a href="#/references" role="doc-biblioref" onclick="">1995</a>)</span>:</p>
|
||
<div style="font-size: 70%;">
|
||
<p><span class="math display">\[\begin{equation*}
|
||
\mathcal{B}(x, a, b, c) = \sum_{j=0}^{\infty} e^{-c/2} \frac{\left( \frac{c}{2} \right)^j}{j!} I_x \left( a + j , b \right)
|
||
\end{equation*}\]</span></p>
|
||
</div>
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="assets/mcrps_learning/knot_placement.svg" class="quarto-figure quarto-figure-center" width="1000"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p><i class="fa fa-fw fa-triangle-exclamation" style="color:var(--col_orange_9);"></i> Penalty and <span class="math inline">\(\lambda\)</span> need to be adjusted accordingly <span class="citation" data-cites="li2022general">Li & Cao (<a href="#/references" role="doc-biblioref" onclick="">2022</a>)</span></p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>Using non equidistant knots in <code>profoc</code> is straightforward:</p>
|
||
<div class="cell">
|
||
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb5-1"><a href=""></a>mod <span class="ot"><-</span> <span class="fu">online</span>(</span>
|
||
<span id="cb5-2"><a href=""></a> <span class="at">y =</span> Y,</span>
|
||
<span id="cb5-3"><a href=""></a> <span class="at">experts =</span> experts,</span>
|
||
<span id="cb5-4"><a href=""></a> <span class="at">tau =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">99</span> <span class="sc">/</span> <span class="dv">100</span>,</span>
|
||
<span id="cb5-5"><a href=""></a> <span class="at">b_smooth_pr =</span> <span class="fu">list</span>(</span>
|
||
<span id="cb5-6"><a href=""></a> <span class="at">knots =</span> <span class="dv">9</span>,</span>
|
||
<span id="cb5-7"><a href=""></a> <span class="at">mu =</span> <span class="fl">0.3</span>,</span>
|
||
<span id="cb5-8"><a href=""></a> <span class="at">sigma =</span> <span class="dv">1</span>,</span>
|
||
<span id="cb5-9"><a href=""></a> <span class="at">nonc =</span> <span class="dv">0</span>,</span>
|
||
<span id="cb5-10"><a href=""></a> <span class="at">tailweight =</span> <span class="dv">1</span>,</span>
|
||
<span id="cb5-11"><a href=""></a> <span class="at">deg =</span> <span class="dv">3</span></span>
|
||
<span id="cb5-12"><a href=""></a> )</span>
|
||
<span id="cb5-13"><a href=""></a>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
||
</div>
|
||
<p>Basis specification <code>b_smooth_pr</code> is internally passed to <code>make_basis_mats()</code>.</p>
|
||
<p><i class="fa fa-fw fa-check" style="color:var(--col_green_9);"></i> Profoc adjusts penatly and <span class="math inline">\(\lambda\)</span></p>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="wrap-up" class="slide level2">
|
||
<h2>Wrap-Up</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p><span style="color:var(--col_red_9);"><i class="fa-solid fa-triangle-exclamation" aria-label="triangle-exclamation"></i></span> Potential Downsides:</p>
|
||
<ul>
|
||
<li>Pointwise optimization can induce quantile crossing
|
||
<ul>
|
||
<li>Can be solved by sorting the predictions</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p><span style="color:var(--col_orange_9);"><i class="fa-solid fa-magnifying-glass" aria-label="magnifying-glass"></i></span> Important:</p>
|
||
<ul>
|
||
<li>The choice of the learning rate is crucial</li>
|
||
<li>The loss function has to meet certain criteria</li>
|
||
</ul>
|
||
<p><span style="color:var(--col_green_9);"><i class="fa-solid fa-rocket" aria-label="rocket"></i></span> Upsides:</p>
|
||
<ul>
|
||
<li>Pointwise learning outperforms the Naive solution significantly</li>
|
||
<li>Online learning is much faster than batch methods</li>
|
||
<li>Smoothing further improves the predictive performance</li>
|
||
<li>Asymptotically not worse than the best convex combination</li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>The <a href="https://profoc.berrisch.biz/"><i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_10);"></i> profoc</a> R Package:</p>
|
||
<ul>
|
||
<li>Implements all algorithms discussed above</li>
|
||
<li>Is written using RcppArmadillo <i class="fa fa-fw fa-arrow-right" style="color:var(--col_grey_10);"></i> its fast</li>
|
||
<li>Accepts vectors for most parameters
|
||
<ul>
|
||
<li>The best parameter combination is chosen online</li>
|
||
</ul></li>
|
||
<li>Implements
|
||
<ul>
|
||
<li>Forgetting, Fixed Share</li>
|
||
<li>Different loss functions + gradients</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Pubications:</p>
|
||
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_10);"></i> Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH2023105221">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>. CRPS learning. <em>Journal of Econometrics</em>, 237(2), 105221.</p>
|
||
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_10);"></i> Berrisch, J., & Ziel, F. <span class="citation" data-cites="BERRISCH20241568">(<a href="#/references" role="doc-biblioref" onclick="">2024</a>)</span>. Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 1568-1586.</p>
|
||
</div></div>
|
||
</section></section>
|
||
<section>
|
||
<section id="sec-voldep" class="title-slide slide level1 center">
|
||
<h1>Modeling Volatility and Dependence of European Carbon and Energy Prices</h1>
|
||
<p>Berrisch, J., Pappert, S., Ziel, F., & Arsova, A. (2023). <em>Finance Research Letters</em>, 52, 103503.</p>
|
||
</section>
|
||
<section id="section-2" class="slide level2">
|
||
<h2> </h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="motivation-1">Motivation</h3>
|
||
<p>Understanding European Allowances (EUA) dynamics is important for several fields:</p>
|
||
<p><i class="fa fa-fw fa-chart-pie" style="color:var(--col_grey_9);"></i> Portfolio & Risk Management,</p>
|
||
<p><i class="fa fa-fw fa-timeline" style="color:var(--col_grey_9);"></i> Sustainability Planing</p>
|
||
<p><i class="fa fa-fw fa-handshake" style="color:var(--col_grey_9);"></i> Political decisions</p>
|
||
<p>EUA prices are obviously connected to the energy market</p>
|
||
<p>How can the dynamics be characterized?</p>
|
||
<p>Several Questions arise:</p>
|
||
<ul>
|
||
<li>Data (Pre)processing</li>
|
||
<li>Modeling Approach</li>
|
||
<li>Evaluation</li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h3 id="data-1">Data</h3>
|
||
<p>EUA, natural gas, Brent crude oil, coal</p>
|
||
<p>March 15, 2010, until October 14, 2022</p>
|
||
<p>Data was normalized w.r.t. <span class="math inline">\(\text{CO}_2\)</span> emissions</p>
|
||
<p>Emission-adjusted prices reflects one tonne of <span class="math inline">\(\text{CO}_2\)</span></p>
|
||
<p>We adjusted for inflation by Eurostat’s HICP, excluding energy</p>
|
||
<p>Log transformation of the data to stabilize the variance</p>
|
||
<p>ADF Test: All series are stationary in first differences</p>
|
||
<p>Johansen’s likelihood ratio trace test suggests two cointegrating relationships (levels)</p>
|
||
<p>Johansen’s likelihood ratio trace test suggests no cointegrating relationships (logs)</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="data-2" class="slide level2">
|
||
<h2>Data</h2>
|
||
|
||
<img data-src="index_files/figure-revealjs/unnamed-chunk-30-1.svg" class="quarto-figure quarto-figure-center r-stretch"></section>
|
||
<section id="modeling-approach-overview" class="slide level2">
|
||
<h2>Modeling Approach: Overview</h2>
|
||
<p><br></p>
|
||
<h3 id="vecm-vector-error-correction-model">VECM: Vector Error Correction Model</h3>
|
||
<ul>
|
||
<li>Modeling the expectaion</li>
|
||
<li>Captures the long-run cointegrating relationship</li>
|
||
<li>Different cointegrating ranks, including rank zero (no cointegration)</li>
|
||
</ul>
|
||
<h3 id="garch-generalized-autoregressive-conditional-heteroscedasticity">GARCH: Generalized Autoregressive Conditional Heteroscedasticity</h3>
|
||
<ul>
|
||
<li>Captures dynamics in conditional variance</li>
|
||
</ul>
|
||
<h3 id="copula-captures-the-dependence-structure">Copula: Captures the dependence structure</h3>
|
||
<ul>
|
||
<li>Captures: conditional cross-sectional dependencies</li>
|
||
<li>Dependence allowed to vary over time</li>
|
||
</ul>
|
||
</section>
|
||
<section id="modeling-approach-notation" class="slide level2">
|
||
<h2>Modeling Approach: Notation</h2>
|
||
<p><br></p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<ul>
|
||
<li>Let <span class="math inline">\(\boldsymbol{X}_t\)</span> be a <span class="math inline">\(K\)</span>-dimensional vector at time <span class="math inline">\(t\)</span></li>
|
||
<li>The forecasting target:
|
||
<ul>
|
||
<li>Conditional joint distribution</li>
|
||
<li><span class="math inline">\(F_{\boldsymbol{X}_t|\mathcal{F}_{t-1}}\)</span></li>
|
||
<li><span class="math inline">\(\mathcal{F}_{t}\)</span> is the sigma field generated by all information available up to and including time <span class="math inline">\(t\)</span></li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Sklars theorem: decompose target into - marginal distributions: <span class="math inline">\(F_{X_{k,t}|\mathcal{F}_{t-1}}\)</span> for <span class="math inline">\(k=1,\ldots, K\)</span>, and - copula function: <span class="math inline">\(C_{\boldsymbol{U}_{t}|\mathcal{F}_{t - 1}}\)</span></p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p>Let <span class="math inline">\(\boldsymbol{x}_t= (x_{1,t},\ldots, x_{K,t})^\intercal\)</span> be the realized values</p>
|
||
<p>It holds that:</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
F_{\boldsymbol{X}_t|\mathcal{F}_{t-1}}(\boldsymbol{x}_t) = C_{\boldsymbol{U}_{t}|\mathcal{F}_{t - 1}}(\boldsymbol{u}_t) \nonumber
|
||
\end{align}\]</span></p>
|
||
<p>with: <span class="math inline">\(\boldsymbol{u}_t =(u_{1,t},\ldots, u_{K,t})^\intercal\)</span>, <span class="math inline">\(u_{k,t} = F_{X_{k,t}|\mathcal{F}_{t-1}}(x_{k,t})\)</span></p>
|
||
<p>For brewity we drop the conditioning on <span class="math inline">\(\mathcal{F}_{t-1}\)</span>.</p>
|
||
<p>The model can be specified as follows</p>
|
||
<p><span class="math display">\[\begin{align}
|
||
F(\boldsymbol{x}_t) = C \left[\mathbf{F}(\boldsymbol{x}_t; \boldsymbol{\mu}_t, \boldsymbol{ \sigma }_{t}^2, \boldsymbol{\nu}, \boldsymbol{\lambda}); \Xi_t, \Theta\right] \nonumber
|
||
\end{align}\]</span></p>
|
||
<p><span class="math inline">\(\Xi_{t}\)</span> denotes time-varying dependence parameters <span class="math inline">\(\Theta\)</span> denotes time-invariant dependence parameters</p>
|
||
<p>We take <span class="math inline">\(C\)</span> as the <span class="math inline">\(t\)</span>-copula</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="modeling-approach-mean-and-variance" class="slide level2">
|
||
<h2>Modeling Approach: Mean and Variance</h2>
|
||
<p><br></p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="individual-marginal-distributions">Individual marginal distributions:</h3>
|
||
<p><span class="math display">\[\mathbf{F} = (F_1, \ldots, F_K)^{\intercal}\]</span></p>
|
||
<h3 id="generalized-non-central-t-distributions">Generalized non-central t-distributions</h3>
|
||
<ul>
|
||
<li>To account for heavy tails</li>
|
||
<li>Time varying
|
||
<ul>
|
||
<li>expectation: <span class="math inline">\(\boldsymbol{\mu}_t = (\mu_{1,t}, \ldots, \mu_{K,t})^{\intercal}\)</span></li>
|
||
<li>variance: <span class="math inline">\(\boldsymbol{\sigma}_{t}^2 = (\sigma_{1,t}^2, \ldots, \sigma_{K,t}^2)^{\intercal}\)</span></li>
|
||
</ul></li>
|
||
<li>Time invariant
|
||
<ul>
|
||
<li>degrees of freedom: <span class="math inline">\(\boldsymbol{\nu} = (\nu_1, \ldots, \nu_K)^{\intercal}\)</span></li>
|
||
<li>noncentrality: <span class="math inline">\(\boldsymbol{\lambda} = (\lambda_1, \ldots, \lambda_K)^{\intercal}\)</span></li>
|
||
</ul></li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h3 id="vecm-model">VECM Model</h3>
|
||
<p><span class="math display">\[\begin{align}
|
||
\Delta \boldsymbol{\mu}_t = \Pi \boldsymbol{x}_{t-1} + \Gamma \Delta \boldsymbol{x}_{t-1} \nonumber
|
||
\end{align}\]</span></p>
|
||
<p>where <span class="math inline">\(\Pi = \alpha \beta^{\intercal}\)</span> is the cointegrating matrix of rank <span class="math inline">\(r\)</span>, <span class="math inline">\(0 \leq r\leq K\)</span>.</p>
|
||
<h3 id="garch-model">GARCH model</h3>
|
||
<p><span class="math display">\[\begin{align}
|
||
\sigma_{i,t}^2 = & \omega_i + \alpha^+_{i} (\epsilon_{i,t-1}^+)^2 + \alpha^-_{i} (\epsilon_{i,t-1}^-)^2 + \beta_i \sigma_{i,t-1}^2 \nonumber
|
||
\end{align}\]</span></p>
|
||
<p>where <span class="math inline">\(\epsilon_{i,t-1}^+ = \max\{\epsilon_{i,t-1}, 0\}\)</span> …</p>
|
||
<p>Separate coefficients for positive and negative innovations to capture leverage effects.</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="modeling-approach-dependence" class="slide level2">
|
||
<h2>Modeling Approach: Dependence</h2>
|
||
<p><br></p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="time-varying-dependence-parameters">Time-varying dependence parameters</h3>
|
||
<p><span class="math display">\[\begin{align*}
|
||
\Xi_{t} = & \Lambda\left(\boldsymbol{\xi}_{t}\right)
|
||
\\
|
||
\xi_{ij,t} = & \eta_{0,ij} + \eta_{1,ij} \xi_{ij,t-1} + \eta_{2,ij} z_{i,t-1} z_{j,t-1},
|
||
\end{align*}\]</span></p>
|
||
<p><span class="math inline">\(\xi_{ij,t}\)</span> is a latent process</p>
|
||
<p><span class="math inline">\(z_{i,t}\)</span> denotes the <span class="math inline">\(i\)</span>-th standardized residual from time series <span class="math inline">\(i\)</span> at time point <span class="math inline">\(t\)</span></p>
|
||
<p><span class="math inline">\(\Lambda(\cdot)\)</span> is a link function - ensures that <span class="math inline">\(\Xi_{t}\)</span> is a valid variance covariance matrix - ensures that <span class="math inline">\(\Xi_{t}\)</span> does not exceed its support space and remains semi-positive definite</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h3 id="maximum-likelihood-estimation">Maximum Likelihood Estimation</h3>
|
||
<p>All parameters can be estimated jointly. Using conditional independence: <span class="math display">\[\begin{align*}
|
||
L = f_{X_1} \prod_{i=2}^T f_{X_i|\mathcal{F}_{i-1}},
|
||
\end{align*}\]</span> with multivariate conditional density: <span class="math display">\[\begin{align*}
|
||
f_{\mathbf{X}_t}(\mathbf{x}_t | \mathcal{F}_{t-1}) = c\left[\mathbf{F}(\mathbf{x}_t;\boldsymbol{\mu}_t, \boldsymbol{\sigma}_{t}^2, \boldsymbol{\nu},
|
||
\boldsymbol{\lambda});\Xi_t, \Theta\right] \cdot \\ \prod_{i=1}^K f_{X_{i,t}}(\mathbf{x}_t;\boldsymbol{\mu}_t, \boldsymbol{\sigma}_{t}^2, \boldsymbol{\nu}, \boldsymbol{\lambda})
|
||
\end{align*}\]</span> The copula density <span class="math inline">\(c\)</span> can be derived analytically.</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="study-design-and-evaluation" class="slide level2">
|
||
<h2>Study Design and Evaluation</h2>
|
||
<p><br></p>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<h3 id="rolling-window-forecasting-study">Rolling-window forecasting study</h3>
|
||
<ul>
|
||
<li>3257 observations total</li>
|
||
<li>Window size: 1000 days (~ four years)</li>
|
||
<li>Forecasting 30-steps-ahead</li>
|
||
</ul>
|
||
<p>=> 2227 potential starting points</p>
|
||
<p>We sample 250 to reduce computational cost</p>
|
||
<p>We draw <span class="math inline">\(2^{12}= 2048\)</span> trajectories from the joint predictive distribution</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<h3 id="evaluation">Evaluation</h3>
|
||
<p>Forecasts are evaluated by the energy score (ES)</p>
|
||
<p><span class="math display">\[\begin{align*}
|
||
\text{ES}_t(F, \mathbf{x}_t) = \mathbb{E}_{F} \left(||\tilde{\mathbf{X}}_t - \mathbf{x}_t||_2\right) - \\ \frac{1}{2} \mathbb{E}_F \left(||\tilde{\mathbf{X}}_t - \tilde{\mathbf{X}}_t'||_2 \right)
|
||
\end{align*}\]</span></p>
|
||
<p>where <span class="math inline">\(\mathbf{x}_t\)</span> is the observed <span class="math inline">\(K\)</span>-dimensional realization and <span class="math inline">\(\tilde{\mathbf{X}}_t\)</span>, respectively <span class="math inline">\(\tilde{\mathbf{X}}_t'\)</span> are independent random vectors distributed according to <span class="math inline">\(F\)</span></p>
|
||
<p>For univariate cases the Energy Score becomes the Continuous Ranked Probability Score (CRPS)</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="results-3" class="slide level2">
|
||
<h2>Results</h2>
|
||
<div class="panel-tabset">
|
||
<ul id="tabset-13" class="panel-tabset-tabby"><li><a data-tabby-default="" href="#tabset-13-1">Energy Scores</a></li><li><a href="#tabset-13-2">CRPS Scores</a></li><li><a href="#tabset-13-3">RMSE</a></li><li><a href="#tabset-13-4">Evolution of Linear Dependence <span class="math inline">\(\Xi\)</span></a></li><li><a href="#tabset-13-5">Predictive Quantiles</a></li></ul>
|
||
<div class="tab-content">
|
||
<div id="tabset-13-1">
|
||
<div class="columns">
|
||
<div class="column" style="width:55%;">
|
||
<p>Relative improvement in ES compared to <span class="math inline">\(\text{RW}^{\sigma, \rho}\)</span></p>
|
||
<p>Cellcolor: w.r.t. test statistic of Diebold-Mariano test (testing wether the model outperformes the benchmark, greener = better).</p>
|
||
<div class="cell" width="revert-layer">
|
||
<table class="lightable-paper table table-condensed caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; margin-left: auto; margin-right: auto; font-size: 14px; margin-left: auto; margin-right: auto;">
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Model</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{1-30}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{EUA}}_{1-30}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{Oil}}_{1-30}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{NGas}}_{1-30}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{Coal}}_{1-30}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{1}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{5}\)</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">\(\text{ES}^{\text{All}}_{30}\)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">161.96</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">10.06</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">37.94</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">146.73</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">13.22</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">5.56</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">13.28</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(189, 189, 189, 255) !important;">34.29</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma_t, \rho_t}_{}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 197, 103, 255) !important;">9.40</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 201, 102, 255) !important;">3.75</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 211, 70, 255) !important;">-0.41</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(132, 196, 103, 255) !important;">11.39</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(132, 196, 103, 255) !important;">4.13</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(162, 206, 100, 255) !important;">10.34</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(155, 204, 101, 255) !important;">9.10</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(165, 207, 100, 255) !important;">7.59</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho_t}_{\textrm{ncp}, \textrm{log}}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(109, 188, 105, 255) !important;">12.04</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(127, 194, 104, 255) !important;">6.16</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 216, 73, 255) !important;">-0.56</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(106, 187, 106, 255) !important;">14.33</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(102, 186, 106, 255) !important;">7.35</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(141, 199, 102, 255) !important;">9.22</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(148, 201, 102, 255) !important;">9.82</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(144, 200, 102, 255) !important;">10.02</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(109, 188, 105, 255) !important;">12.10</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(123, 193, 104, 255) !important;">6.25</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 210, 69, 255) !important;">-0.59</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(106, 187, 106, 255) !important;">14.44</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(102, 186, 106, 255) !important;">7.31</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(142, 199, 102, 255) !important;">9.04</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 201, 102, 255) !important;">9.66</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(145, 200, 102, 255) !important;">9.91</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma_t, \rho_t}_{\textrm{lev}, \textrm{ncp}}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(130, 195, 104, 255) !important;">9.68</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 197, 60, 255) !important;">-0.72</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(230, 229, 92, 255) !important;">0.32</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(127, 194, 104, 255) !important;">11.74</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 197, 103, 255) !important;">3.70</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(155, 204, 101, 255) !important;">10.82</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(156, 204, 101, 255) !important;">10.50</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(153, 203, 101, 255) !important;">8.21</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma, \rho_t}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(109, 188, 105, 255) !important;">12.15</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(113, 189, 105, 255) !important;">6.10</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 205, 66, 255) !important;">-0.70</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(106, 187, 106, 255) !important;">14.57</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(102, 186, 106, 255) !important;">7.80</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(147, 201, 102, 255) !important;">8.05</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(152, 203, 101, 255) !important;">9.99</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(146, 201, 102, 255) !important;">10.04</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(120, 192, 105, 255) !important;">9.94</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(136, 197, 103, 255) !important;">5.75</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(246, 234, 90, 255) !important;">0.08</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(110, 188, 105, 255) !important;">13.05</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(140, 199, 103, 255) !important;">7.83</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(171, 209, 99, 255) !important;">6.96</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(162, 206, 100, 255) !important;">7.74</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(174, 210, 99, 255) !important;">6.21</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(146, 201, 102, 255) !important;">8.12</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(133, 196, 103, 255) !important;">7.80</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 216, 74, 255) !important;">-0.51</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(135, 197, 103, 255) !important;">11.17</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; font-weight: bold; background-color: rgba(148, 201, 102, 255) !important;">8.54</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(205, 220, 96, 255) !important;">5.05</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(201, 219, 96, 255) !important;">6.14</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(231, 229, 92, 255) !important;">2.66</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(167, 208, 100, 255) !important;">5.50</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 181, 49, 255) !important;">-4.43</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 179, 48, 255) !important;">-3.22</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(165, 207, 100, 255) !important;">6.29</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(188, 215, 98, 255) !important;">4.68</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(251, 143, 56, 255) !important;">-25.99</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 220, 76, 255) !important;">-2.42</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(215, 224, 94, 255) !important;">3.07</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(151, 203, 101, 255) !important;">7.68</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(192, 216, 97, 255) !important;">3.31</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(255, 163, 41, 255) !important;">-4.34</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(149, 202, 102, 255) !important;">9.07</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(133, 196, 103, 255) !important;">8.30</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(252, 151, 51, 255) !important;">-22.11</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(246, 234, 90, 255) !important;">1.07</td>
|
||
<td style="text-align: right; color: rgba(65, 65, 65, 255) !important; background-color: rgba(210, 222, 95, 255) !important;">4.32</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:41%;">
|
||
<ul>
|
||
<li>Benchmarks:
|
||
<ul>
|
||
<li><span class="math inline">\(\text{RW}^{\sigma, \rho}\)</span>: Random walk with constant volatility and correlation</li>
|
||
<li>Univariate <span class="math inline">\(\text{ETS}^{\sigma}\)</span> with constant volatility</li>
|
||
<li>Vector ETS <span class="math inline">\(VES^{\sigma}\)</span> with constant volatility</li>
|
||
</ul></li>
|
||
<li>Heteroscedasticity is a main driver of ES</li>
|
||
<li>The VECM model without cointegration (essentially a VAR) is the best performing model in terms of ES overall</li>
|
||
<li>For EUA, the ETS Benchmark is the best performing model in terms of ES</li>
|
||
</ul>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-13-2">
|
||
<div class="columns">
|
||
<div class="column" style="width:28%;">
|
||
<ul>
|
||
<li>CRPS solely evaluates the marginal distributions
|
||
<ul>
|
||
<li>The cross-sectional dependence is ignored</li>
|
||
</ul></li>
|
||
<li>VES models deliver poor performance in short horizons</li>
|
||
<li>For Oil prices the RW Benchmark can’t be oupterformed 30 steps ahead</li>
|
||
<li>Both VECM models generally deliver good performance</li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:68%;">
|
||
<p>Improvement in CRPS of selected models relative to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> in % (higher = better). Colored according to the test statistic of a DM-Test comparing to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> (greener means lower test statistic i.e., better performance compared to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span>).</p>
|
||
<table class="lightable-paper table table-condensed caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; width: auto !important; margin-left: auto; margin-right: auto; font-size: 16px; width: auto !important; margin-left: auto; margin-right: auto;">
|
||
<colgroup>
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; empty-cells: hide;"></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
EUA
|
||
</div></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
Oil
|
||
</div></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
NGas
|
||
</div></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
Coal
|
||
</div></th>
|
||
</tr>
|
||
<tr class="even">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Model</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{}\)</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.4</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.1</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.5</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.4</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.1</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.7</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.6</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">29.8</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.8</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma_t, \rho_t}_{}\)</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(150, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.6</td>
|
||
<td style="text-align: right; background-color: rgba(144, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.0</td>
|
||
<td style="text-align: right; background-color: rgba(200, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.8</td>
|
||
<td style="text-align: right; background-color: rgba(190, 215, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.1</td>
|
||
<td style="text-align: right; background-color: rgba(152, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.7</td>
|
||
<td style="text-align: right; background-color: rgba(255, 199, 62, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
|
||
<td style="text-align: right; background-color: rgba(163, 207, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.6</td>
|
||
<td style="text-align: right; background-color: rgba(162, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.5</td>
|
||
<td style="text-align: right; background-color: rgba(161, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.6</td>
|
||
<td style="text-align: right; background-color: rgba(136, 197, 103, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.7</td>
|
||
<td style="text-align: right; background-color: rgba(148, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.5</td>
|
||
<td style="text-align: right; background-color: rgba(179, 212, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.1</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho_t}_{\textrm{ncp}, \textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(156, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.1</td>
|
||
<td style="text-align: right; background-color: rgba(122, 192, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.7</td>
|
||
<td style="text-align: right; background-color: rgba(169, 208, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.0</td>
|
||
<td style="text-align: right; background-color: rgba(227, 228, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
|
||
<td style="text-align: right; background-color: rgba(227, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.8</td>
|
||
<td style="text-align: right; background-color: rgba(255, 224, 79, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.4</td>
|
||
<td style="text-align: right; background-color: rgba(142, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.4</td>
|
||
<td style="text-align: right; background-color: rgba(150, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.5</td>
|
||
<td style="text-align: right; background-color: rgba(143, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.4</td>
|
||
<td style="text-align: right; background-color: rgba(119, 191, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.0</td>
|
||
<td style="text-align: right; background-color: rgba(127, 194, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.3</td>
|
||
<td style="text-align: right; background-color: rgba(124, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.7</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(163, 207, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.7</td>
|
||
<td style="text-align: right; background-color: rgba(118, 191, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.9</td>
|
||
<td style="text-align: right; background-color: rgba(162, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 236, 87, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; background-color: rgba(243, 233, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 216, 74, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.6</td>
|
||
<td style="text-align: right; background-color: rgba(142, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.2</td>
|
||
<td style="text-align: right; background-color: rgba(149, 202, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.4</td>
|
||
<td style="text-align: right; background-color: rgba(143, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.4</td>
|
||
<td style="text-align: right; background-color: rgba(119, 192, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.7</td>
|
||
<td style="text-align: right; background-color: rgba(127, 194, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.5</td>
|
||
<td style="text-align: right; background-color: rgba(123, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.6</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma_t, \rho_t}_{\textrm{lev}, \textrm{ncp}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(155, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.6</td>
|
||
<td style="text-align: right; background-color: rgba(231, 229, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 169, 40, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.6</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(177, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.7</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(157, 205, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 237, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(156, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">13.1</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(161, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.2</td>
|
||
<td style="text-align: right; background-color: rgba(152, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.4</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(142, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.8</td>
|
||
<td style="text-align: right; background-color: rgba(146, 201, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.2</td>
|
||
<td style="text-align: right; background-color: rgba(197, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.5</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma, \rho_t}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(178, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.2</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(114, 190, 105, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.9</td>
|
||
<td style="text-align: right; background-color: rgba(153, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.1</td>
|
||
<td style="text-align: right; background-color: rgba(250, 235, 89, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; background-color: rgba(239, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 208, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
|
||
<td style="text-align: right; background-color: rgba(148, 201, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.9</td>
|
||
<td style="text-align: right; background-color: rgba(154, 204, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.8</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(144, 200, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">12.7</td>
|
||
<td style="text-align: right; background-color: rgba(123, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.8</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(125, 193, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.9</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(121, 192, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.3</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}\)</td>
|
||
<td style="text-align: right; background-color: rgba(252, 236, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; background-color: rgba(141, 199, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.8</td>
|
||
<td style="text-align: right; background-color: rgba(164, 207, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.7</td>
|
||
<td style="text-align: right; background-color: rgba(196, 217, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.1</td>
|
||
<td style="text-align: right; background-color: rgba(177, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 223, 79, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
|
||
<td style="text-align: right; background-color: rgba(153, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.9</td>
|
||
<td style="text-align: right; background-color: rgba(152, 203, 101, 255) !important; color: rgba(65, 65, 65, 255) !important;">11.3</td>
|
||
<td style="text-align: right; background-color: rgba(148, 201, 102, 255) !important; color: rgba(65, 65, 65, 255) !important;">10.9</td>
|
||
<td style="text-align: right; background-color: rgba(183, 213, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.5</td>
|
||
<td style="text-align: right; background-color: rgba(188, 215, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.7</td>
|
||
<td style="text-align: right; background-color: rgba(199, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.6</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(239, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.0</td>
|
||
<td style="text-align: right; background-color: rgba(128, 194, 104, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.6</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(160, 206, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.0</td>
|
||
<td style="text-align: right; background-color: rgba(252, 236, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
|
||
<td style="text-align: right; background-color: rgba(233, 230, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
|
||
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.6</td>
|
||
<td style="text-align: right; background-color: rgba(184, 213, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">8.9</td>
|
||
<td style="text-align: right; background-color: rgba(187, 215, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">9.4</td>
|
||
<td style="text-align: right; background-color: rgba(201, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.1</td>
|
||
<td style="text-align: right; background-color: rgba(193, 216, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.3</td>
|
||
<td style="text-align: right; background-color: rgba(183, 213, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.8</td>
|
||
<td style="text-align: right; background-color: rgba(200, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.7</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}\)</td>
|
||
<td style="text-align: right; background-color: rgba(241, 99, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-38.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 190, 56, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 188, 54, 255) !important; color: rgba(65, 65, 65, 255) !important;">-5.4</td>
|
||
<td style="text-align: right; background-color: rgba(240, 93, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-33.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 185, 52, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 196, 59, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.4</td>
|
||
<td style="text-align: right; background-color: rgba(254, 158, 45, 255) !important; color: rgba(65, 65, 65, 255) !important;">-26.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 222, 78, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.6</td>
|
||
<td style="text-align: right; background-color: rgba(215, 224, 94, 255) !important; color: rgba(65, 65, 65, 255) !important;">3.6</td>
|
||
<td style="text-align: right; background-color: rgba(245, 113, 70, 255) !important; color: rgba(65, 65, 65, 255) !important;">-37.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 203, 64, 255) !important; color: rgba(65, 65, 65, 255) !important;">-5.5</td>
|
||
<td style="text-align: right; background-color: rgba(203, 220, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">4.7</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(248, 129, 64, 255) !important; color: rgba(65, 65, 65, 255) !important;">-32.4</td>
|
||
<td style="text-align: right; background-color: rgba(227, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.8</td>
|
||
<td style="text-align: right; background-color: rgba(232, 229, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.8</td>
|
||
<td style="text-align: right; background-color: rgba(242, 101, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-30.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 182, 50, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 185, 52, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 166, 38, 255) !important; color: rgba(65, 65, 65, 255) !important;">-22.0</td>
|
||
<td style="text-align: right; background-color: rgba(242, 233, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.8</td>
|
||
<td style="text-align: right; background-color: rgba(207, 221, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.4</td>
|
||
<td style="text-align: right; background-color: rgba(252, 151, 51, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.0</td>
|
||
<td style="text-align: right; background-color: rgba(236, 231, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.3</td>
|
||
<td style="text-align: right; background-color: rgba(170, 209, 100, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.4</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-13-3">
|
||
<div class="columns">
|
||
<div class="column" style="width:28%;">
|
||
<p>RMSE measures the performance of the forecasts at their mean</p>
|
||
<p><br></p>
|
||
<ul>
|
||
<li>Some models beat the benchmarks at short horizons</li>
|
||
</ul>
|
||
<p><br></p>
|
||
<p>Conclusion: the Improvements seen before must be attributed to other parts of the multivariate probabilistic predictive distribution</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:68%;">
|
||
<p>Improvement in RMSE score of selected models relative to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> in % (higher = better). Colored according to the test statistic of a DM-Test comparing to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span> (greener means lower test statistic i.e., better performance compared to <span class="math inline">\(\textrm{RW}^{\sigma, \rho}_{}\)</span>).</p>
|
||
<table class="lightable-paper table table-condensed caption-top" data-quarto-postprocess="true" style="font-family: "Arial Narrow", arial, helvetica, sans-serif; width: auto !important; margin-left: auto; margin-right: auto; font-size: 14px; width: auto !important; margin-left: auto; margin-right: auto;">
|
||
<colgroup>
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
<col style="width: 7%">
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="header">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; empty-cells: hide;"></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
EUA
|
||
</div></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
Oil
|
||
</div></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
NGas
|
||
</div></th>
|
||
<th colspan="3" data-quarto-table-cell-role="th" style="text-align: center; padding-bottom: 0; padding-left: 3px; padding-right: 3px;"><div style="border-bottom: 1px solid #00000020; padding-bottom: 5px; ">
|
||
Coal
|
||
</div></th>
|
||
</tr>
|
||
<tr class="even">
|
||
<th data-quarto-table-cell-role="th" style="text-align: left; color: rgba(65, 65, 65, 255) !important;">Model</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H1</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H5</th>
|
||
<th data-quarto-table-cell-role="th" style="text-align: right; color: rgba(65, 65, 65, 255) !important;">H30</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{}\)</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.0</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">5.0</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.9</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">6.4</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">16.7</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">17.8</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">42.8</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">85.4</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.9</td>
|
||
<td style="text-align: right; background-color: rgba(189, 189, 189, 255) !important; color: rgba(65, 65, 65, 255) !important;">7.0</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma_t, \rho_t}_{}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 230, 83, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 225, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
|
||
<td style="text-align: right; background-color: rgba(180, 212, 98, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
|
||
<td style="text-align: right; background-color: rgba(251, 236, 89, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 201, 63, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 223, 78, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 225, 79, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
|
||
<td style="text-align: right; background-color: rgba(202, 219, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(207, 221, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 231, 84, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 237, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 206, 66, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.8</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho_t}_{\textrm{ncp}, \textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 209, 69, 255) !important; color: rgba(65, 65, 65, 255) !important;">-270.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 184, 51, 255) !important; color: rgba(65, 65, 65, 255) !important;">-154.1</td>
|
||
<td style="text-align: right; background-color: rgba(253, 156, 47, 255) !important; color: rgba(65, 65, 65, 255) !important;">-139.9</td>
|
||
<td style="text-align: right; background-color: rgba(192, 216, 97, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 213, 71, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 208, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
|
||
<td style="text-align: right; background-color: rgba(229, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
|
||
<td style="text-align: right; background-color: rgba(255, 226, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.6</td>
|
||
<td style="text-align: right; background-color: rgba(226, 227, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 208, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-31.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 187, 53, 255) !important; color: rgba(65, 65, 65, 255) !important;">-24.5</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{RW}^{\sigma, \rho}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 203, 64, 255) !important; color: rgba(65, 65, 65, 255) !important;">-705.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 201, 63, 255) !important; color: rgba(65, 65, 65, 255) !important;">-265.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 173, 43, 255) !important; color: rgba(65, 65, 65, 255) !important;">-125.2</td>
|
||
<td style="text-align: right; background-color: rgba(176, 211, 99, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.6</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(245, 234, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 231, 84, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 222, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.4</td>
|
||
<td style="text-align: right; background-color: rgba(251, 236, 89, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 226, 81, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 193, 58, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 226, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 199, 61, 255) !important; color: rgba(65, 65, 65, 255) !important;">-8.3</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma_t, \rho_t}_{\textrm{lev}, \textrm{ncp}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.9</td>
|
||
<td style="text-align: right; background-color: rgba(241, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; background-color: rgba(198, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.5</td>
|
||
<td style="text-align: right; background-color: rgba(228, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.5</td>
|
||
<td style="text-align: right; background-color: rgba(240, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 235, 86, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 231, 84, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.4</td>
|
||
<td style="text-align: right; background-color: rgba(203, 220, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
|
||
<td style="text-align: right; background-color: rgba(239, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(224, 227, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.4</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(241, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
|
||
<td style="text-align: right; background-color: rgba(234, 230, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VECM}^{\textrm{r0}, \sigma, \rho_t}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 209, 69, 255) !important; color: rgba(65, 65, 65, 255) !important;">-271.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 185, 52, 255) !important; color: rgba(65, 65, 65, 255) !important;">-191.3</td>
|
||
<td style="text-align: right; background-color: rgba(254, 159, 45, 255) !important; color: rgba(65, 65, 65, 255) !important;">-114.3</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(203, 220, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.7</td>
|
||
<td style="text-align: right; background-color: rgba(255, 209, 69, 255) !important; color: rgba(65, 65, 65, 255) !important;">-12.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 196, 60, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 223, 78, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.6</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(225, 227, 93, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-4.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 235, 87, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 212, 71, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.8</td>
|
||
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.7</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 228, 82, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
|
||
<td style="text-align: right; background-color: rgba(240, 232, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.3</td>
|
||
<td style="text-align: right; background-color: rgba(216, 224, 94, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
|
||
<td style="text-align: right; background-color: rgba(208, 221, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.7</td>
|
||
<td style="text-align: right; background-color: rgba(244, 233, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(240, 232, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 214, 72, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
|
||
<td style="text-align: right; background-color: rgba(229, 228, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 216, 73, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 198, 61, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.9</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(230, 229, 92, 255) !important; color: rgba(65, 65, 65, 255) !important;">2.5</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{ETS}^{\sigma}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 206, 67, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.0</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(245, 234, 90, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.4</td>
|
||
<td style="text-align: right; font-weight: bold; background-color: rgba(236, 231, 91, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
|
||
<td style="text-align: right; background-color: rgba(199, 218, 96, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 237, 88, 255) !important; color: rgba(65, 65, 65, 255) !important;">0.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 234, 86, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.1</td>
|
||
<td style="text-align: right; background-color: rgba(255, 212, 71, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 225, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 206, 66, 255) !important; color: rgba(65, 65, 65, 255) !important;">-13.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 226, 80, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 205, 66, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 228, 82, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.8</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 168, 40, 255) !important; color: rgba(65, 65, 65, 255) !important;">-37.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 188, 54, 255) !important; color: rgba(65, 65, 65, 255) !important;">-8.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 188, 54, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.0</td>
|
||
<td style="text-align: right; background-color: rgba(253, 153, 49, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.9</td>
|
||
<td style="text-align: right; background-color: rgba(255, 197, 60, 255) !important; color: rgba(65, 65, 65, 255) !important;">-7.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 180, 48, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.8</td>
|
||
<td style="text-align: right; background-color: rgba(255, 171, 42, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 183, 50, 255) !important; color: rgba(65, 65, 65, 255) !important;">-9.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 221, 77, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.4</td>
|
||
<td style="text-align: right; background-color: rgba(255, 192, 56, 255) !important; color: rgba(65, 65, 65, 255) !important;">-41.7</td>
|
||
<td style="text-align: right; background-color: rgba(255, 218, 75, 255) !important; color: rgba(65, 65, 65, 255) !important;">-1.2</td>
|
||
<td style="text-align: right; background-color: rgba(212, 223, 95, 255) !important; color: rgba(65, 65, 65, 255) !important;">1.6</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td style="text-align: left; color: rgba(65, 65, 65, 255) !important;">\(\textrm{VES}^{\sigma}_{\textrm{log}}\)</td>
|
||
<td style="text-align: right; background-color: rgba(255, 170, 41, 255) !important; color: rgba(65, 65, 65, 255) !important;">-37.6</td>
|
||
<td style="text-align: right; background-color: rgba(255, 189, 55, 255) !important; color: rgba(65, 65, 65, 255) !important;">-9.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 186, 53, 255) !important; color: rgba(65, 65, 65, 255) !important;">-7.8</td>
|
||
<td style="text-align: right; background-color: rgba(253, 154, 48, 255) !important; color: rgba(65, 65, 65, 255) !important;">-26.8</td>
|
||
<td style="text-align: right; background-color: rgba(255, 198, 61, 255) !important; color: rgba(65, 65, 65, 255) !important;">-7.3</td>
|
||
<td style="text-align: right; background-color: rgba(255, 190, 55, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 172, 42, 255) !important; color: rgba(65, 65, 65, 255) !important;">-27.0</td>
|
||
<td style="text-align: right; background-color: rgba(255, 195, 59, 255) !important; color: rgba(65, 65, 65, 255) !important;">-6.8</td>
|
||
<td style="text-align: right; background-color: rgba(255, 209, 68, 255) !important; color: rgba(65, 65, 65, 255) !important;">-3.5</td>
|
||
<td style="text-align: right; background-color: rgba(255, 193, 57, 255) !important; color: rgba(65, 65, 65, 255) !important;">-41.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 196, 60, 255) !important; color: rgba(65, 65, 65, 255) !important;">-2.2</td>
|
||
<td style="text-align: right; background-color: rgba(255, 232, 85, 255) !important; color: rgba(65, 65, 65, 255) !important;">-0.3</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div></div>
|
||
</div>
|
||
<div id="tabset-13-4">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-34-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="tabset-13-5">
|
||
<div class="cell" data-layout-align="center">
|
||
<div class="cell-output-display">
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure>
|
||
<p><img data-src="index_files/figure-revealjs/unnamed-chunk-35-1.svg" class="quarto-figure quarto-figure-center"></p>
|
||
</figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="conclusion" class="slide level2">
|
||
<h2>Conclusion</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p>Accounting for heteroscedasticity or stabilizing the variance via log transformation is crucial for good performance in terms of ES</p>
|
||
<ul>
|
||
<li>Price dynamics emerged way before the russian invaion into ukraine</li>
|
||
<li>Linear dependence between the series reacted only right after the invasion</li>
|
||
<li>Improvements in forecasting performance is mainly attributed to:
|
||
<ul>
|
||
<li>the tails multivariate probabilistic predictive distribution</li>
|
||
<li>the dependence structure between the marginals</li>
|
||
</ul></li>
|
||
</ul>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p><br></p>
|
||
<center>
|
||
<img src="assets/voldep/frame.png">
|
||
</center>
|
||
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_grey_10);"></i> <span class="citation" data-cites="berrisch2023modeling">Berrisch, Pappert, et al. (<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span></p>
|
||
</div></div>
|
||
</section>
|
||
<section id="sec-contributions" class="slide level2">
|
||
<h2>Contributions</h2>
|
||
<div class="columns">
|
||
<div class="column" style="width:48%;">
|
||
<p style="margin:1.5em;">
|
||
</p>
|
||
<p><strong>Theoretical</strong></p>
|
||
<p>Probabilistic Online Learning:</p>
|
||
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Aggregation <br> <i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Regression</p>
|
||
<p style="margin:1.5em;">
|
||
</p>
|
||
<p><strong>Practical</strong></p>
|
||
<p>Applications</p>
|
||
<p><i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Energy Commodities <br> <i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Electricity Prices <br> <i class="fa fa-fw fa-newspaper" style="color:var(--col_blue-grey_9);"></i> Electricity Load</p>
|
||
<p style="margin:1.5em;">
|
||
</p>
|
||
<p><strong>Well received by the academic community:</strong></p>
|
||
<p><i class="fa fa-fw fa-5" style="color:var(--col_green_10);"></i> of <i class="fa fa-fw fa-7" style="color:var(--col_gray_9);"></i> papers already published</p>
|
||
<p><i class="fa fa-fw fa-quote-right" style="color:var(--col_green_10);"></i> 104 citations since 2020 (<a href="https://scholar.google.com/citations?user=wfF1oJYAAAAJ&hl=de&oi=sra">Google Scholar</a>)</p>
|
||
</div><div class="column" style="width:4%;">
|
||
|
||
</div><div class="column" style="width:48%;">
|
||
<p style="margin:1.5em;">
|
||
</p>
|
||
<p><strong>Software</strong></p>
|
||
<p>R Packages:</p>
|
||
<p><i class="fa-brands fa-fw fa-r-project" style="color:#276DC3;"></i> <a href="https://profoc.berrisch.biz/">profoc</a>, <a href="https://rcpptimer.berrisch.biz/">rcpptimer</a>, <a href="https://dccpp.berrisch.biz/">dccpp</a></p>
|
||
<p>Python Packages:</p>
|
||
<p><i class="fa-brands fa-fw fa-python" style="color: #FFD43B;"></i> <a href="https://github.com/simon-hirsch/ondil">ondil</a>, <a href="https://github.com/BerriJ/sstudentt">sstudentt</a></p>
|
||
<p>Contributions to other projects:</p>
|
||
<p><i class="fa-brands fa-fw fa-r-project" style="color:#276DC3;"></i> <a href="https://github.com/RcppCore/RcppArmadillo">RcppArmadillo</a> <br> <i class="fa-brands fa-fw fa-r-project" style="color:#276DC3;"></i> <a href="https://github.com/gamlss-dev/gamlss">gamlss</a><br> <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_9);"></i> <a href="https://github.com/NixOS/nixpkgs">NixOS/nixpkgs</a> <br> <i class="fa-brands fa-fw fa-github" style="color:var(--col_grey_9);"></i> <a href="https://github.com/OpenPrinting/foomatic-db">OpenPrinting/foomatic-db</a> <br></p>
|
||
<p><strong>Awards:</strong></p>
|
||
<p>Berrisch, J., Narajewski, M., & Ziel, F. <span class="citation" data-cites="BERRISCH2023100236">(<a href="#/references" role="doc-biblioref" onclick="">2023</a>)</span>:</p>
|
||
<p><i class="fa fa-fw fa-award" style="color:var(--col_red_9);"></i> Won Western Power Distribution Competition <br> <i class="fa fa-fw fa-award" style="color:var(--col_amber_9);"></i> Won Best-Student-Presentation Award</p>
|
||
</div></div>
|
||
</section>
|
||
<section id="references" class="slide level2 smaller scrollable" data-visibility="uncounted">
|
||
<h2>References</h2>
|
||
|
||
<div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" data-line-spacing="2" role="list">
|
||
<div id="ref-berrisch2025rcpptimer" class="csl-entry" role="listitem">
|
||
Berrisch, J. (2025). Rcpptimer: Rcpp tic-toc timer with OpenMP support. <em>arXiv Preprint arXiv:2501.15856</em>, abs/2501.15856. DOI: <a href="https://doi.org/10.48550/arXiv.2501.15856">10.48550/arXiv.2501.15856</a>
|
||
</div>
|
||
<div id="ref-BERRISCH2023100236" class="csl-entry" role="listitem">
|
||
Berrisch, J., Narajewski, M., & Ziel, F. (2023). High-resolution peak demand estimation using generalized additive models and deep neural networks. <em>Energy and AI</em>, 13, 100236. DOI: <a href="https://doi.org/10.1016/j.egyai.2023.100236">10.1016/j.egyai.2023.100236</a>
|
||
</div>
|
||
<div id="ref-berrisch2023modeling" class="csl-entry" role="listitem">
|
||
Berrisch, J., Pappert, S., Ziel, F., & Arsova, A. (2023). Modeling volatility and dependence of european carbon and energy prices. <em>Finance Research Letters</em>, 52, 103503. DOI: <a href="https://doi.org/10.1016/j.frl.2022.103503">10.1016/j.frl.2022.103503</a>
|
||
</div>
|
||
<div id="ref-berrisch2022distributional" class="csl-entry" role="listitem">
|
||
Berrisch, J., & Ziel, F. (2022). Distributional modeling and forecasting of natural gas prices. <em>Journal of Forecasting</em>, 41(6), 1065–1086. DOI: <a href="https://doi.org/10.1002/for.2853">10.1002/for.2853</a>
|
||
</div>
|
||
<div id="ref-BERRISCH2023105221" class="csl-entry" role="listitem">
|
||
Berrisch, J., & Ziel, F. (2023). CRPS learning. <em>Journal of Econometrics</em>, 237(2, Part C), 105221. DOI: <a href="https://doi.org/10.1016/j.jeconom.2021.11.008">10.1016/j.jeconom.2021.11.008</a>
|
||
</div>
|
||
<div id="ref-BERRISCH20241568" class="csl-entry" role="listitem">
|
||
Berrisch, J., & Ziel, F. (2024). Multivariate probabilistic CRPS learning with an application to day-ahead electricity prices. <em>International Journal of Forecasting</em>, 40(4), 1568–1586. DOI: <a href="https://doi.org/10.1016/j.ijforecast.2024.01.005">10.1016/j.ijforecast.2024.01.005</a>
|
||
</div>
|
||
<div id="ref-cesa2006prediction" class="csl-entry" role="listitem">
|
||
Cesa-Bianchi, N., & Lugosi, G. (2006). <em><span class="nocase">Prediction, learning, and games</span></em> (pp. I–XII, 1–394). Cambridge university press. DOI: <a href="https://doi.org/10.1017/CBO9780511546921">10.1017/CBO9780511546921</a>
|
||
</div>
|
||
<div id="ref-gaillard2018efficient" class="csl-entry" role="listitem">
|
||
Gaillard, P., & Wintenberger, O. (2018). <span class="nocase">Efficient online algorithms for fast-rate regret bounds under sparsity</span>. In S. Bengio, H. M. Wallach, H. Larochelle, K. Grauman, N. Cesa-Bianchi, & R. Garnett (Eds.), <em>Proceedings of the 32nd international conference on neural information processing systems</em> (pp. 7026–7036). Cornell University. DOI: <a href="https://doi.org/10.48550/arxiv.1805.09174">10.48550/arxiv.1805.09174</a>
|
||
</div>
|
||
<div id="ref-gneiting2011making" class="csl-entry" role="listitem">
|
||
Gneiting, T. (2011). <span class="nocase">Making and evaluating point forecasts</span>. <em>Journal of the American Statistical Association</em>, 106(494), 746–762. DOI: <a href="https://doi.org/10.1198/jasa.2011.r10138">10.1198/jasa.2011.r10138</a>
|
||
</div>
|
||
<div id="ref-gneiting2007strictly" class="csl-entry" role="listitem">
|
||
Gneiting, T., & Raftery, A.E. (2007). <span class="nocase">Strictly proper scoring rules, prediction, and estimation</span>. <em>Journal of the American Statistical Association</em>, 102(477), 359–378. DOI: <a href="https://doi.org/10.1198/016214506000001437">10.1198/016214506000001437</a>
|
||
</div>
|
||
<div id="ref-hirsch2024online" class="csl-entry" role="listitem">
|
||
Hirsch, S., Berrisch, J., & Ziel, F. (2024). Online distributional regression. <em>arXiv Preprint arXiv:2407.08750</em>, abs/2407.08750. DOI: <a href="https://doi.org/10.48550/arXiv.2407.08750">10.48550/arXiv.2407.08750</a>
|
||
</div>
|
||
<div id="ref-johnson1995continuous" class="csl-entry" role="listitem">
|
||
Johnson, N.L., Kotz, S., & Balakrishnan, N. (1995). <em>Continuous univariate distributions, volume 2</em> (Vol. 289). John wiley & sons.
|
||
</div>
|
||
<div id="ref-li2022general" class="csl-entry" role="listitem">
|
||
Li, Z., & Cao, J. (2022). General p-splines for non-uniform b-splines. <em>arXiv Preprint</em>. DOI: <a href="https://doi.org/10.48550/arXiv.2201.06808">10.48550/arXiv.2201.06808</a>
|
||
</div>
|
||
<div id="ref-marcjasz2022distributional" class="csl-entry" role="listitem">
|
||
Marcjasz, G., Narajewski, M., Weron, R., & Ziel, F. (2023). Distributional neural networks for electricity price forecasting. <em>Energy Economics</em>, 125, 106843. DOI: <a href="https://doi.org/10.1016/j.eneco.2023.106843">10.1016/j.eneco.2023.106843</a>
|
||
</div>
|
||
<div id="ref-wintenberger2017optimal" class="csl-entry" role="listitem">
|
||
Wintenberger, O. (2017). Optimal learning with bernstein online aggregation. <em>Machine Learning</em>, 106(1), 119–141. DOI: <a href="https://doi.org/10.1007/s10994-016-5592-6">10.1007/s10994-016-5592-6</a>
|
||
</div>
|
||
</div>
|
||
</section></section>
|
||
</div>
|
||
<div class="quarto-auto-generated-content" style="display: none;">
|
||
<div class="footer footer-default">
|
||
|
||
</div>
|
||
</div></div>
|
||
|
||
<script>window.backupDefine = window.define; window.define = undefined;</script>
|
||
<script src="index_files/libs/revealjs/dist/reveal.js"></script>
|
||
<!-- reveal.js plugins -->
|
||
<script src="index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/pdf-export/pdfexport.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/reveal-menu/menu.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/reveal-pointer/pointer.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/quarto-support/support.js"></script>
|
||
|
||
|
||
<script src="index_files/libs/revealjs/plugin/notes/notes.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/search/search.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/zoom/zoom.js"></script>
|
||
<script src="index_files/libs/revealjs/plugin/math/math.js"></script>
|
||
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script>
|
||
|
||
<script>
|
||
|
||
// Full list of configuration options available at:
|
||
// https://revealjs.com/config/
|
||
Reveal.initialize({
|
||
'controlsAuto': true,
|
||
'previewLinksAuto': false,
|
||
'pdfSeparateFragments': false,
|
||
'autoAnimateEasing': "ease",
|
||
'autoAnimateDuration': 1,
|
||
'autoAnimateUnmatched': true,
|
||
'jumpToSlide': true,
|
||
'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"<i class=\"fas fa-gear\"></i>","content":"<ul class=\"slide-menu-items\">\n<li class=\"slide-tool-item active\" data-item=\"0\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.fullscreen(event)\"><kbd>f</kbd> Fullscreen</a></li>\n<li class=\"slide-tool-item\" data-item=\"1\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.speakerMode(event)\"><kbd>s</kbd> Speaker View</a></li>\n<li class=\"slide-tool-item\" data-item=\"2\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.overview(event)\"><kbd>o</kbd> Slide Overview</a></li>\n<li class=\"slide-tool-item\" data-item=\"3\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.togglePdfExport(event)\"><kbd>e</kbd> PDF Export Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"4\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleScrollView(event)\"><kbd>r</kbd> Scroll View Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"5\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.keyboardHelp(event)\"><kbd>?</kbd> Keyboard Help</a></li>\n</ul>"}],"openButton":true},
|
||
'pointer': {"key":"q","alwaysVisible":false,"hideDelay":3000,"color":"#202020FF","scaleFactor":0.03,"icon":"fa fa-hand-point-up"},
|
||
'smaller': true,
|
||
|
||
// Display controls in the bottom right corner
|
||
controls: false,
|
||
|
||
// Help the user learn the controls by providing hints, for example by
|
||
// bouncing the down arrow when they first encounter a vertical slide
|
||
controlsTutorial: false,
|
||
|
||
// Determines where controls appear, "edges" or "bottom-right"
|
||
controlsLayout: 'edges',
|
||
|
||
// Visibility rule for backwards navigation arrows; "faded", "hidden"
|
||
// or "visible"
|
||
controlsBackArrows: 'faded',
|
||
|
||
// Display a presentation progress bar
|
||
progress: true,
|
||
|
||
// Display the page number of the current slide
|
||
slideNumber: 'c/t',
|
||
|
||
// 'all', 'print', or 'speaker'
|
||
showSlideNumber: 'all',
|
||
|
||
// Add the current slide number to the URL hash so that reloading the
|
||
// page/copying the URL will return you to the same slide
|
||
hash: true,
|
||
|
||
// Start with 1 for the hash rather than 0
|
||
hashOneBasedIndex: false,
|
||
|
||
// Flags if we should monitor the hash and change slides accordingly
|
||
respondToHashChanges: true,
|
||
|
||
// Push each slide change to the browser history
|
||
history: true,
|
||
|
||
// Enable keyboard shortcuts for navigation
|
||
keyboard: true,
|
||
|
||
// Enable the slide overview mode
|
||
overview: true,
|
||
|
||
// Disables the default reveal.js slide layout (scaling and centering)
|
||
// so that you can use custom CSS layout
|
||
disableLayout: false,
|
||
|
||
// Vertical centering of slides
|
||
center: false,
|
||
|
||
// Enables touch navigation on devices with touch input
|
||
touch: true,
|
||
|
||
// Loop the presentation
|
||
loop: false,
|
||
|
||
// Change the presentation direction to be RTL
|
||
rtl: false,
|
||
|
||
// see https://revealjs.com/vertical-slides/#navigation-mode
|
||
navigationMode: 'linear',
|
||
|
||
// Randomizes the order of slides each time the presentation loads
|
||
shuffle: false,
|
||
|
||
// Turns fragments on and off globally
|
||
fragments: true,
|
||
|
||
// Flags whether to include the current fragment in the URL,
|
||
// so that reloading brings you to the same fragment position
|
||
fragmentInURL: false,
|
||
|
||
// Flags if the presentation is running in an embedded mode,
|
||
// i.e. contained within a limited portion of the screen
|
||
embedded: false,
|
||
|
||
// Flags if we should show a help overlay when the questionmark
|
||
// key is pressed
|
||
help: true,
|
||
|
||
// Flags if it should be possible to pause the presentation (blackout)
|
||
pause: true,
|
||
|
||
// Flags if speaker notes should be visible to all viewers
|
||
showNotes: false,
|
||
|
||
// Global override for autoplaying embedded media (null/true/false)
|
||
autoPlayMedia: null,
|
||
|
||
// Global override for preloading lazy-loaded iframes (null/true/false)
|
||
preloadIframes: null,
|
||
|
||
// Number of milliseconds between automatically proceeding to the
|
||
// next slide, disabled when set to 0, this value can be overwritten
|
||
// by using a data-autoslide attribute on your slides
|
||
autoSlide: 0,
|
||
|
||
// Stop auto-sliding after user input
|
||
autoSlideStoppable: true,
|
||
|
||
// Use this method for navigation when auto-sliding
|
||
autoSlideMethod: null,
|
||
|
||
// Specify the average time in seconds that you think you will spend
|
||
// presenting each slide. This is used to show a pacing timer in the
|
||
// speaker view
|
||
defaultTiming: null,
|
||
|
||
// Enable slide navigation via mouse wheel
|
||
mouseWheel: false,
|
||
|
||
// The display mode that will be used to show slides
|
||
display: 'block',
|
||
|
||
// Hide cursor if inactive
|
||
hideInactiveCursor: true,
|
||
|
||
// Time before the cursor is hidden (in ms)
|
||
hideCursorTime: 5000,
|
||
|
||
// Opens links in an iframe preview overlay
|
||
previewLinks: false,
|
||
|
||
// Transition style (none/fade/slide/convex/concave/zoom)
|
||
transition: 'none',
|
||
|
||
// Transition speed (default/fast/slow)
|
||
transitionSpeed: 'default',
|
||
|
||
// Transition style for full page slide backgrounds
|
||
// (none/fade/slide/convex/concave/zoom)
|
||
backgroundTransition: 'none',
|
||
|
||
// Number of slides away from the current that are visible
|
||
viewDistance: 3,
|
||
|
||
// Number of slides away from the current that are visible on mobile
|
||
// devices. It is advisable to set this to a lower number than
|
||
// viewDistance in order to save resources.
|
||
mobileViewDistance: 2,
|
||
|
||
// The "normal" size of the presentation, aspect ratio will be preserved
|
||
// when the presentation is scaled to fit different resolutions. Can be
|
||
// specified using percentage units.
|
||
width: 1280,
|
||
|
||
height: 720,
|
||
|
||
// Factor of the display size that should remain empty around the content
|
||
margin: 0.1,
|
||
|
||
math: {
|
||
mathjax: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js',
|
||
config: 'TeX-AMS_HTML-full',
|
||
tex2jax: {
|
||
inlineMath: [['\\(','\\)']],
|
||
displayMath: [['\\[','\\]']],
|
||
balanceBraces: true,
|
||
processEscapes: false,
|
||
processRefs: true,
|
||
processEnvironments: true,
|
||
preview: 'TeX',
|
||
skipTags: ['script','noscript','style','textarea','pre','code'],
|
||
ignoreClass: 'tex2jax_ignore',
|
||
processClass: 'tex2jax_process'
|
||
},
|
||
},
|
||
|
||
// reveal.js plugins
|
||
plugins: [QuartoLineHighlight, PdfExport, RevealMenu, RevealPointer, QuartoSupport,
|
||
|
||
RevealMath,
|
||
RevealNotes,
|
||
RevealSearch,
|
||
RevealZoom
|
||
]
|
||
});
|
||
</script>
|
||
<script type="ojs-module-contents">
|
||
eyJjb250ZW50cyI6W3sibWV0aG9kTmFtZSI6ImludGVycHJldCIsImNlbGxOYW1lIjoib2pzLWNlbGwtMSIsImlubGluZSI6ZmFsc2UsInNvdXJjZSI6ImQzID0gcmVxdWlyZShcImQzQDdcIilcbiJ9LHsibWV0aG9kTmFtZSI6ImludGVycHJldCIsImNlbGxOYW1lIjoib2pzLWNlbGwtMiIsImlubGluZSI6ZmFsc2UsInNvdXJjZSI6ImJzcGxpbmVEYXRhID0gRmlsZUF0dGFjaG1lbnQoXCJhc3NldHMvbWNycHNfbGVhcm5pbmcvYmFzaXNfZnVuY3Rpb25zLmNzdlwiKS5jc3YoeyB0eXBlZDogdHJ1ZSB9KVxuIn0seyJtZXRob2ROYW1lIjoiaW50ZXJwcmV0IiwiY2VsbE5hbWUiOiJvanMtY2VsbC0zIiwiaW5saW5lIjpmYWxzZSwic291cmNlIjoiZnVuY3Rpb24gdXBkYXRlQ2hhcnRJbm5lcihnLCB4LCB5LCBsaW5lc0dyb3VwLCBjb2xvciwgbGluZSwgZGF0YSkge1xuICAvLyBVcGRhdGUgYXhlcyB3aXRoIHRyYW5zaXRpb25zXG4gIHguZG9tYWluKFswLCBkMy5tYXgoZGF0YSwgZCA9PiBkLngpXSk7XG4gIGcuc2VsZWN0KFwiLngtYXhpc1wiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMTUwMCkuY2FsbChkMy5heGlzQm90dG9tKHgpLnRpY2tzKDEwKSk7XG4gIHkuZG9tYWluKFswLCBkMy5tYXgoZGF0YSwgZCA9PiBkLnkpXSk7XG4gIGcuc2VsZWN0KFwiLnktYXhpc1wiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMTUwMCkuY2FsbChkMy5heGlzTGVmdCh5KS50aWNrcyg1KSk7XG5cbiAgLy8gR3JvdXAgZGF0YSBieSBiYXNpcyBmdW5jdGlvblxuICBjb25zdCBkYXRhQnlGdW5jdGlvbiA9IEFycmF5LmZyb20oZDMuZ3JvdXAoZGF0YSwgZCA9PiBkLmIpKTtcbiAgY29uc3Qga2V5Rm4gPSBkID0+IGRbMF07XG5cbiAgLy8gVXBkYXRlIGJhc2lzIGZ1bmN0aW9uIGxpbmVzXG4gIGNvbnN0IHUgPSBsaW5lc0dyb3VwLnNlbGVjdEFsbChcInBhdGhcIikuZGF0YShkYXRhQnlGdW5jdGlvbiwga2V5Rm4pO1xuICB1LmpvaW4oXG4gICAgZW50ZXIgPT4gZW50ZXIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZmlsbFwiLFwibm9uZVwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsMylcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIChfLCBpKSA9PiBjb2xvcihpKSkuYXR0cihcImRcIiwgZCA9PiBsaW5lKGRbMV0ubWFwKHB0ID0+ICh7eDogcHQueCwgeTogMH0pKSkpXG4gICAgICAuc3R5bGUoXCJvcGFjaXR5XCIsMCksXG4gICAgdXBkYXRlID0+IHVwZGF0ZSxcbiAgICBleGl0ID0+IGV4aXQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDEwMDApLnN0eWxlKFwib3BhY2l0eVwiLDApLnJlbW92ZSgpXG4gIClcbiAgLnRyYW5zaXRpb24oKS5kdXJhdGlvbigxMDAwKVxuICAgIC5hdHRyKFwiZFwiLCBkID0+IGxpbmUoZFsxXSkpXG4gICAgLmF0dHIoXCJzdHJva2VcIiwgKF8sIGkpID0+IGNvbG9yKGkpKVxuICAgIC5zdHlsZShcIm9wYWNpdHlcIiwxKTtcbn1cblxuY2hhcnQgPSB7XG4gIC8vIFN0YXRlIHZhcmlhYmxlcyBmb3Igc2VsZWN0ZWQgcGFyYW1ldGVyc1xuICBsZXQgc2VsZWN0ZWRNdSA9IDAuNTtcbiAgbGV0IHNlbGVjdGVkU2lnID0gMTtcbiAgbGV0IHNlbGVjdGVkTm9uYyA9IDA7XG4gIGxldCBzZWxlY3RlZFRhaWx3ID0gMTtcbiAgY29uc3QgZmlsdGVyZWREYXRhID0gKCkgPT4gYnNwbGluZURhdGEuZmlsdGVyKGQgPT5cbiAgICBNYXRoLmFicyhzZWxlY3RlZE11IC0gZC5tdSkgPCAwLjAwMSAmJlxuICAgIGQuc2lnID09PSBzZWxlY3RlZFNpZyAmJlxuICAgIGQubm9uYyA9PT0gc2VsZWN0ZWROb25jICYmXG4gICAgZC50YWlsdyA9PT0gc2VsZWN0ZWRUYWlsd1xuICApO1xuICBjb25zdCBjb250YWluZXIgPSBkMy5jcmVhdGUoXCJkaXZcIilcbiAgICAuc3R5bGUoXCJtYXgtd2lkdGhcIiwgXCJub25lXCIpXG4gICAgLnN0eWxlKFwid2lkdGhcIiwgXCIxMDAlXCIpOztcbiAgY29uc3QgY29udHJvbHNDb250YWluZXIgPSBjb250YWluZXIuYXBwZW5kKFwiZGl2XCIpXG4gICAgLnN0eWxlKFwiZGlzcGxheVwiLCBcImZsZXhcIilcbiAgICAuc3R5bGUoXCJnYXBcIiwgXCIyMHB4XCIpO1xuICAvLyBzbGlkZXIgY29udHJvbHNcbiAgY29uc3Qgc2xpZGVycyA9IFtcbiAgICB7IGxhYmVsOiAnTXUnLCBnZXQ6ICgpID0+IHNlbGVjdGVkTXUsIHNldDogdiA9PiBzZWxlY3RlZE11ID0gdiwgbWluOiAwLjEsIG1heDogMC45LCBzdGVwOiAwLjIgfSxcbiAgICB7IGxhYmVsOiAnU2lnbWEnLCBnZXQ6ICgpID0+IE1hdGgubG9nMihzZWxlY3RlZFNpZyksIHNldDogdiA9PiBzZWxlY3RlZFNpZyA9IDIgKiogdiwgbWluOiAtMiwgbWF4OiAyLCBzdGVwOiAxIH0sXG4gICAgeyBsYWJlbDogJ05vbmNlbnRyYWxpdHknLCBnZXQ6ICgpID0+IHNlbGVjdGVkTm9uYywgc2V0OiB2ID0+IHNlbGVjdGVkTm9uYyA9IHYsIG1pbjogLTQsIG1heDogNCwgc3RlcDogMiB9LFxuICAgIHsgbGFiZWw6ICdUYWlsd2VpZ2h0JywgZ2V0OiAoKSA9PiBNYXRoLmxvZzIoc2VsZWN0ZWRUYWlsdyksIHNldDogdiA9PiBzZWxlY3RlZFRhaWx3ID0gMiAqKiB2LCBtaW46IC0yLCBtYXg6IDIsIHN0ZXA6IDEgfVxuICBdO1xuICAvLyBCdWlsZCBzbGlkZXIgY29udHJvbHMgd2l0aCBEMyBkYXRhIGpvaW5cbiAgY29uc3Qgc2xpZGVyQ29udCA9IGNvbnRyb2xzQ29udGFpbmVyLnNlbGVjdEFsbCgnZGl2JykuZGF0YShzbGlkZXJzKS5qb2luKCdkaXYnKVxuICAgIC5zdHlsZSgnZGlzcGxheScsJ2ZsZXgnKS5zdHlsZSgnYWxpZ24taXRlbXMnLCdjZW50ZXInKS5zdHlsZSgnZ2FwJywnMTBweCcpXG4gICAgLnN0eWxlKCdmbGV4JywnMScpLnN0eWxlKCdtaW4td2lkdGgnLCcwcHgnKTtcbiAgc2xpZGVyQ29udC5hcHBlbmQoJ2xhYmVsJykudGV4dChkID0+IGQubGFiZWwgKyAnOicpLnN0eWxlKCdmb250LXNpemUnLCcyMHB4Jyk7XG4gIHNsaWRlckNvbnQuYXBwZW5kKCdpbnB1dCcpXG4gICAgLmF0dHIoJ3R5cGUnLCdyYW5nZScpLmF0dHIoJ21pbicsIGQgPT4gZC5taW4pLmF0dHIoJ21heCcsIGQgPT4gZC5tYXgpLmF0dHIoJ3N0ZXAnLCBkID0+IGQuc3RlcClcbiAgICAucHJvcGVydHkoJ3ZhbHVlJywgZCA9PiBkLmdldCgpKVxuICAgIC5vbignaW5wdXQnLCBmdW5jdGlvbihldmVudCwgZCkge1xuICAgICAgY29uc3QgdmFsID0gK3RoaXMudmFsdWU7IGQuc2V0KHZhbCk7XG4gICAgICBkMy5zZWxlY3QodGhpcy5wYXJlbnROb2RlKS5zZWxlY3QoJ3NwYW4nKS50ZXh0KGQubGFiZWwubWF0Y2goL1NpZ21hfFRhaWx3ZWlnaHQvKSA/IDIqKnZhbCA6IHZhbCk7XG4gICAgICB1cGRhdGVDaGFydChmaWx0ZXJlZERhdGEoKSk7XG4gICAgfSlcbiAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKTtcbiAgc2xpZGVyQ29udC5hcHBlbmQoJ3NwYW4nKS50ZXh0KGQgPT4gKGQubGFiZWwubWF0Y2goL1NpZ21hfFRhaWx3ZWlnaHQvKSA/IGQuZ2V0KCkgOiBkLmdldCgpKSlcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsJzIwcHgnKTtcbiAgXG4gIC8vIEFkZCBSZXNldCBidXR0b24gdG8gY2xlYXIgYWxsIHNsaWRlcnMgdG8gdGhlaXIgZGVmYXVsdHNcbiAgY29udHJvbHNDb250YWluZXIuYXBwZW5kKCdidXR0b24nKVxuICAgIC50ZXh0KCdSZXNldCcpXG4gICAgLnN0eWxlKCdmb250LXNpemUnLCAnMjBweCcpXG4gICAgLnN0eWxlKCdhbGlnbi1zZWxmJywgJ2NlbnRlcicpXG4gICAgLnN0eWxlKCdtYXJnaW4tbGVmdCcsICdhdXRvJylcbiAgICAub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgLy8gcmVzZXQgc3RhdGUgdmFyc1xuICAgICAgc2VsZWN0ZWRNdSA9IDAuNTtcbiAgICAgIHNlbGVjdGVkU2lnID0gMTtcbiAgICAgIHNlbGVjdGVkTm9uYyA9IDA7XG4gICAgICBzZWxlY3RlZFRhaWx3ID0gMTtcbiAgICAgIC8vIHVwZGF0ZSBpbnB1dCBwb3NpdGlvbnNcbiAgICAgIHNsaWRlckNvbnQuc2VsZWN0QWxsKCdpbnB1dCcpLnByb3BlcnR5KCd2YWx1ZScsIGQgPT4gZC5nZXQoKSk7XG4gICAgICAvLyB1cGRhdGUgZGlzcGxheWVkIGxhYmVsc1xuICAgICAgc2xpZGVyQ29udC5zZWxlY3RBbGwoJ3NwYW4nKVxuICAgICAgICAudGV4dChkID0+IGQubGFiZWwubWF0Y2goL1NpZ21hfFRhaWx3ZWlnaHQvKSA/ICgyKipkLmdldCgpKSA6IGQuZ2V0KCkpO1xuICAgICAgLy8gcmVkcmF3IGNoYXJ0XG4gICAgICB1cGRhdGVDaGFydChmaWx0ZXJlZERhdGEoKSk7XG4gICAgfSk7XG5cbiAgIC8vIEJ1aWxkIFNWR1xuICAgY29uc3Qgd2lkdGggPSAxMjAwO1xuICAgY29uc3QgaGVpZ2h0ID0gNDUwO1xuICAgY29uc3QgbWFyZ2luID0ge3RvcDogNDAsIHJpZ2h0OiAyMCwgYm90dG9tOiA0MCwgbGVmdDogNDB9O1xuICAgY29uc3QgaW5uZXJXaWR0aCA9IHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XG4gICBjb25zdCBpbm5lckhlaWdodCA9IGhlaWdodCAtIG1hcmdpbi50b3AgLSBtYXJnaW4uYm90dG9tO1xuXG4gICAvLyBTZXQgY29udHJvbHMgY29udGFpbmVyIHdpZHRoIHRvIG1hdGNoIFNWRyBwbG90IHdpZHRoXG4gICBjb250cm9sc0NvbnRhaW5lci5zdHlsZShcIm1heC13aWR0aFwiLCBcIm5vbmVcIikuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAvLyBEaXN0cmlidXRlIGVhY2ggY29udHJvbCBldmVubHkgYW5kIG1ha2Ugc2xpZGVycyBmdWxsLXdpZHRoXG4gICBjb250cm9sc0NvbnRhaW5lci5zZWxlY3RBbGwoXCJkaXZcIikuc3R5bGUoXCJmbGV4XCIsIFwiMVwiKS5zdHlsZShcIm1pbi13aWR0aFwiLCBcIjBweFwiKTtcbiAgIGNvbnRyb2xzQ29udGFpbmVyLnNlbGVjdEFsbChcImlucHV0XCIpLnN0eWxlKFwid2lkdGhcIiwgXCIxMDAlXCIpLnN0eWxlKFwiYm94LXNpemluZ1wiLCBcImJvcmRlci1ib3hcIik7XG4gICBcbiAgIC8vIENyZWF0ZSBzY2FsZXNcbiAgIGNvbnN0IHggPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgIC5kb21haW4oWzAsIDFdKVxuICAgICAucmFuZ2UoWzAsIGlubmVyV2lkdGhdKTtcbiAgICAgXG4gICBjb25zdCB5ID0gZDMuc2NhbGVMaW5lYXIoKVxuICAgICAuZG9tYWluKFswLCAxXSlcbiAgICAgLnJhbmdlKFtpbm5lckhlaWdodCwgMF0pO1xuICAgXG4gICAvLyBDcmVhdGUgYSBjb2xvciBzY2FsZSBmb3IgdGhlIGJhc2lzIGZ1bmN0aW9uc1xuICAgY29uc3QgY29sb3IgPSBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCk7XG4gICBcbiAgIC8vIENyZWF0ZSBTVkdcbiAgIGNvbnN0IHN2ZyA9IGQzLmNyZWF0ZShcInN2Z1wiKVxuICAgICAuYXR0cihcIndpZHRoXCIsIFwiMTAwJVwiKVxuICAgICAuYXR0cihcImhlaWdodFwiLCBcImF1dG9cIilcbiAgICAgLmF0dHIoXCJ2aWV3Qm94XCIsIFswLCAwLCB3aWR0aCwgaGVpZ2h0XSlcbiAgICAgLmF0dHIoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwieE1pZFlNaWQgbWVldFwiKVxuICAgICAuYXR0cihcInN0eWxlXCIsIFwibWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87XCIpO1xuICAgXG4gICAvLyBDcmVhdGUgdGhlIGNoYXJ0IGdyb3VwXG4gICBjb25zdCBnID0gc3ZnLmFwcGVuZChcImdcIilcbiAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke21hcmdpbi5sZWZ0fSwke21hcmdpbi50b3B9KWApO1xuICAgXG4gICAvLyBBZGQgYXhlc1xuICAgY29uc3QgeEF4aXMgPSBnLmFwcGVuZChcImdcIilcbiAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgwLCR7aW5uZXJIZWlnaHR9KWApXG4gICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ4LWF4aXNcIilcbiAgICAgLmNhbGwoZDMuYXhpc0JvdHRvbSh4KS50aWNrcygxMCkpXG4gICAgIC5zdHlsZShcImZvbnQtc2l6ZVwiLCBcIjIwcHhcIik7XG4gICBcbiAgIGNvbnN0IHlBeGlzID0gZy5hcHBlbmQoXCJnXCIpXG4gICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ5LWF4aXNcIilcbiAgICAgLmNhbGwoZDMuYXhpc0xlZnQoeSkudGlja3MoNSkpXG4gICAgIC5zdHlsZShcImZvbnQtc2l6ZVwiLCBcIjIwcHhcIik7XG4gICBcbiAgIC8vIEFkZCBhIGhvcml6b250YWwgbGluZSBhdCB5ID0gMFxuICAgZy5hcHBlbmQoXCJsaW5lXCIpXG4gICAgIC5hdHRyKFwieDFcIiwgMClcbiAgICAgLmF0dHIoXCJ4MlwiLCBpbm5lcldpZHRoKVxuICAgICAuYXR0cihcInkxXCIsIHkoMCkpXG4gICAgIC5hdHRyKFwieTJcIiwgeSgwKSlcbiAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjMDAwXCIpXG4gICAgIC5hdHRyKFwic3Ryb2tlLW9wYWNpdHlcIiwgMC4yKTtcbiAgIFxuICAgLy8gQWRkIGdyaWRsaW5lc1xuICAgZy5hcHBlbmQoXCJnXCIpXG4gICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmlkLWxpbmVzXCIpXG4gICAgIC5zZWxlY3RBbGwoXCJsaW5lXCIpXG4gICAgIC5kYXRhKHkudGlja3MoNSkpXG4gICAgIC5qb2luKFwibGluZVwiKVxuICAgICAuYXR0cihcIngxXCIsIDApXG4gICAgIC5hdHRyKFwieDJcIiwgaW5uZXJXaWR0aClcbiAgICAgLmF0dHIoXCJ5MVwiLCBkID0+IHkoZCkpXG4gICAgIC5hdHRyKFwieTJcIiwgZCA9PiB5KGQpKVxuICAgICAuYXR0cihcInN0cm9rZVwiLCBcIiNjY2NcIilcbiAgICAgLmF0dHIoXCJzdHJva2Utb3BhY2l0eVwiLCAwLjUpO1xuICAgXG4gICAvLyBDcmVhdGUgYSBsaW5lIGdlbmVyYXRvclxuICAgY29uc3QgbGluZSA9IGQzLmxpbmUoKVxuICAgICAueChkID0+IHgoZC54KSlcbiAgICAgLnkoZCA9PiB5KGQueSkpXG4gICAgIC5jdXJ2ZShkMy5jdXJ2ZUJhc2lzKTtcbiAgIFxuICAgLy8gR3JvdXAgdG8gY29udGFpbiB0aGUgYmFzaXMgZnVuY3Rpb24gbGluZXNcbiAgIGNvbnN0IGxpbmVzR3JvdXAgPSBnLmFwcGVuZChcImdcIilcbiAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImJhc2lzLWZ1bmN0aW9uc1wiKTtcbiAgIFxuICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgYmFzaXMgZnVuY3Rpb25zIGZvciB0cmFuc2l0aW9uXG4gICBsZXQgY3VycmVudEJhc2lzRnVuY3Rpb25zID0gbmV3IE1hcCgpO1xuICAgXG4gICAvLyBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGNoYXJ0IHdpdGggbmV3IGRhdGFcbiAgIGZ1bmN0aW9uIHVwZGF0ZUNoYXJ0KGRhdGEpIHtcbiAgICAgdXBkYXRlQ2hhcnRJbm5lcihnLCB4LCB5LCBsaW5lc0dyb3VwLCBjb2xvciwgbGluZSwgZGF0YSk7XG4gICB9XG4gICBcbiAgIC8vIFN0b3JlIHRoZSB1cGRhdGUgZnVuY3Rpb25cbiAgIHN2Zy5ub2RlKCkudXBkYXRlID0gdXBkYXRlQ2hhcnQ7XG4gICBcbiAgIC8vIEluaXRpYWwgcmVuZGVyXG4gICB1cGRhdGVDaGFydChmaWx0ZXJlZERhdGEoKSk7XG4gICBcbiAgIGNvbnRhaW5lci5ub2RlKCkuYXBwZW5kQ2hpbGQoc3ZnLm5vZGUoKSk7XG4gICByZXR1cm4gY29udGFpbmVyLm5vZGUoKTtcbn1cbiJ9XX0=
|
||
</script>
|
||
<script type="module">
|
||
if (window.location.protocol === "file:") { alert("The OJS runtime does not work with file:// URLs. Please use a web server to view this document."); }
|
||
window._ojs.paths.runtimeToDoc = "../../..";
|
||
window._ojs.paths.runtimeToRoot = "../../..";
|
||
window._ojs.paths.docToRoot = "";
|
||
window._ojs.selfContained = false;
|
||
window._ojs.runtime.interpretFromScriptTags();
|
||
</script>
|
||
|
||
<script>
|
||
// htmlwidgets need to know to resize themselves when slides are shown/hidden.
|
||
// Fire the "slideenter" event (handled by htmlwidgets.js) when the current
|
||
// slide changes (different for each slide format).
|
||
(function () {
|
||
// dispatch for htmlwidgets
|
||
function fireSlideEnter() {
|
||
const event = window.document.createEvent("Event");
|
||
event.initEvent("slideenter", true, true);
|
||
window.document.dispatchEvent(event);
|
||
}
|
||
|
||
function fireSlideChanged(previousSlide, currentSlide) {
|
||
fireSlideEnter();
|
||
|
||
// dispatch for shiny
|
||
if (window.jQuery) {
|
||
if (previousSlide) {
|
||
window.jQuery(previousSlide).trigger("hidden");
|
||
}
|
||
if (currentSlide) {
|
||
window.jQuery(currentSlide).trigger("shown");
|
||
}
|
||
}
|
||
}
|
||
|
||
// hookup for slidy
|
||
if (window.w3c_slidy) {
|
||
window.w3c_slidy.add_observer(function (slide_num) {
|
||
// slide_num starts at position 1
|
||
fireSlideChanged(null, w3c_slidy.slides[slide_num - 1]);
|
||
});
|
||
}
|
||
|
||
})();
|
||
</script>
|
||
|
||
<script id="quarto-html-after-body" type="application/javascript">
|
||
window.document.addEventListener("DOMContentLoaded", function (event) {
|
||
const tabsets = window.document.querySelectorAll(".panel-tabset-tabby")
|
||
tabsets.forEach(function(tabset) {
|
||
const tabby = new Tabby('#' + tabset.id);
|
||
});
|
||
const isCodeAnnotation = (el) => {
|
||
for (const clz of el.classList) {
|
||
if (clz.startsWith('code-annotation-')) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
const onCopySuccess = function(e) {
|
||
// button target
|
||
const button = e.trigger;
|
||
// don't keep focus
|
||
button.blur();
|
||
// flash "checked"
|
||
button.classList.add('code-copy-button-checked');
|
||
var currentTitle = button.getAttribute("title");
|
||
button.setAttribute("title", "Copied!");
|
||
let tooltip;
|
||
if (window.bootstrap) {
|
||
button.setAttribute("data-bs-toggle", "tooltip");
|
||
button.setAttribute("data-bs-placement", "left");
|
||
button.setAttribute("data-bs-title", "Copied!");
|
||
tooltip = new bootstrap.Tooltip(button,
|
||
{ trigger: "manual",
|
||
customClass: "code-copy-button-tooltip",
|
||
offset: [0, -8]});
|
||
tooltip.show();
|
||
}
|
||
setTimeout(function() {
|
||
if (tooltip) {
|
||
tooltip.hide();
|
||
button.removeAttribute("data-bs-title");
|
||
button.removeAttribute("data-bs-toggle");
|
||
button.removeAttribute("data-bs-placement");
|
||
}
|
||
button.setAttribute("title", currentTitle);
|
||
button.classList.remove('code-copy-button-checked');
|
||
}, 1000);
|
||
// clear code selection
|
||
e.clearSelection();
|
||
}
|
||
const getTextToCopy = function(trigger) {
|
||
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
||
for (const childEl of codeEl.children) {
|
||
if (isCodeAnnotation(childEl)) {
|
||
childEl.remove();
|
||
}
|
||
}
|
||
return codeEl.innerText;
|
||
}
|
||
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
|
||
text: getTextToCopy
|
||
});
|
||
clipboard.on('success', onCopySuccess);
|
||
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
|
||
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
|
||
text: getTextToCopy,
|
||
container: window.document.getElementById('quarto-embedded-source-code-modal')
|
||
});
|
||
clipboardModal.on('success', onCopySuccess);
|
||
}
|
||
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
|
||
var mailtoRegex = new RegExp(/^mailto:/);
|
||
var filterRegex = new RegExp('/' + window.location.host + '/');
|
||
var isInternal = (href) => {
|
||
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
|
||
}
|
||
// Inspect non-navigation links and adorn them if external
|
||
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
|
||
for (var i=0; i<links.length; i++) {
|
||
const link = links[i];
|
||
if (!isInternal(link.href)) {
|
||
// undo the damage that might have been done by quarto-nav.js in the case of
|
||
// links that we want to consider external
|
||
if (link.dataset.originalHref !== undefined) {
|
||
link.href = link.dataset.originalHref;
|
||
}
|
||
}
|
||
}
|
||
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
|
||
const config = {
|
||
allowHTML: true,
|
||
maxWidth: 500,
|
||
delay: 100,
|
||
arrow: false,
|
||
appendTo: function(el) {
|
||
return el.closest('section.slide') || el.parentElement;
|
||
},
|
||
interactive: true,
|
||
interactiveBorder: 10,
|
||
theme: 'light-border',
|
||
placement: 'bottom-start',
|
||
};
|
||
if (contentFn) {
|
||
config.content = contentFn;
|
||
}
|
||
if (onTriggerFn) {
|
||
config.onTrigger = onTriggerFn;
|
||
}
|
||
if (onUntriggerFn) {
|
||
config.onUntrigger = onUntriggerFn;
|
||
}
|
||
config['offset'] = [0,0];
|
||
config['maxWidth'] = 700;
|
||
window.tippy(el, config);
|
||
}
|
||
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
||
for (var i=0; i<noterefs.length; i++) {
|
||
const ref = noterefs[i];
|
||
tippyHover(ref, function() {
|
||
// use id or data attribute instead here
|
||
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
||
try { href = new URL(href).hash; } catch {}
|
||
const id = href.replace(/^#\/?/, "");
|
||
const note = window.document.getElementById(id);
|
||
if (note) {
|
||
return note.innerHTML;
|
||
} else {
|
||
return "";
|
||
}
|
||
});
|
||
}
|
||
const xrefs = window.document.querySelectorAll('a.quarto-xref');
|
||
const processXRef = (id, note) => {
|
||
// Strip column container classes
|
||
const stripColumnClz = (el) => {
|
||
el.classList.remove("page-full", "page-columns");
|
||
if (el.children) {
|
||
for (const child of el.children) {
|
||
stripColumnClz(child);
|
||
}
|
||
}
|
||
}
|
||
stripColumnClz(note)
|
||
if (id === null || id.startsWith('sec-')) {
|
||
// Special case sections, only their first couple elements
|
||
const container = document.createElement("div");
|
||
if (note.children && note.children.length > 2) {
|
||
container.appendChild(note.children[0].cloneNode(true));
|
||
for (let i = 1; i < note.children.length; i++) {
|
||
const child = note.children[i];
|
||
if (child.tagName === "P" && child.innerText === "") {
|
||
continue;
|
||
} else {
|
||
container.appendChild(child.cloneNode(true));
|
||
break;
|
||
}
|
||
}
|
||
if (window.Quarto?.typesetMath) {
|
||
window.Quarto.typesetMath(container);
|
||
}
|
||
return container.innerHTML
|
||
} else {
|
||
if (window.Quarto?.typesetMath) {
|
||
window.Quarto.typesetMath(note);
|
||
}
|
||
return note.innerHTML;
|
||
}
|
||
} else {
|
||
// Remove any anchor links if they are present
|
||
const anchorLink = note.querySelector('a.anchorjs-link');
|
||
if (anchorLink) {
|
||
anchorLink.remove();
|
||
}
|
||
if (window.Quarto?.typesetMath) {
|
||
window.Quarto.typesetMath(note);
|
||
}
|
||
if (note.classList.contains("callout")) {
|
||
return note.outerHTML;
|
||
} else {
|
||
return note.innerHTML;
|
||
}
|
||
}
|
||
}
|
||
for (var i=0; i<xrefs.length; i++) {
|
||
const xref = xrefs[i];
|
||
tippyHover(xref, undefined, function(instance) {
|
||
instance.disable();
|
||
let url = xref.getAttribute('href');
|
||
let hash = undefined;
|
||
if (url.startsWith('#')) {
|
||
hash = url;
|
||
} else {
|
||
try { hash = new URL(url).hash; } catch {}
|
||
}
|
||
if (hash) {
|
||
const id = hash.replace(/^#\/?/, "");
|
||
const note = window.document.getElementById(id);
|
||
if (note !== null) {
|
||
try {
|
||
const html = processXRef(id, note.cloneNode(true));
|
||
instance.setContent(html);
|
||
} finally {
|
||
instance.enable();
|
||
instance.show();
|
||
}
|
||
} else {
|
||
// See if we can fetch this
|
||
fetch(url.split('#')[0])
|
||
.then(res => res.text())
|
||
.then(html => {
|
||
const parser = new DOMParser();
|
||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||
const note = htmlDoc.getElementById(id);
|
||
if (note !== null) {
|
||
const html = processXRef(id, note);
|
||
instance.setContent(html);
|
||
}
|
||
}).finally(() => {
|
||
instance.enable();
|
||
instance.show();
|
||
});
|
||
}
|
||
} else {
|
||
// See if we can fetch a full url (with no hash to target)
|
||
// This is a special case and we should probably do some content thinning / targeting
|
||
fetch(url)
|
||
.then(res => res.text())
|
||
.then(html => {
|
||
const parser = new DOMParser();
|
||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||
const note = htmlDoc.querySelector('main.content');
|
||
if (note !== null) {
|
||
// This should only happen for chapter cross references
|
||
// (since there is no id in the URL)
|
||
// remove the first header
|
||
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
|
||
note.children[0].remove();
|
||
}
|
||
const html = processXRef(null, note);
|
||
instance.setContent(html);
|
||
}
|
||
}).finally(() => {
|
||
instance.enable();
|
||
instance.show();
|
||
});
|
||
}
|
||
}, function(instance) {
|
||
});
|
||
}
|
||
const findCites = (el) => {
|
||
const parentEl = el.parentElement;
|
||
if (parentEl) {
|
||
const cites = parentEl.dataset.cites;
|
||
if (cites) {
|
||
return {
|
||
el,
|
||
cites: cites.split(' ')
|
||
};
|
||
} else {
|
||
return findCites(el.parentElement)
|
||
}
|
||
} else {
|
||
return undefined;
|
||
}
|
||
};
|
||
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
||
for (var i=0; i<bibliorefs.length; i++) {
|
||
const ref = bibliorefs[i];
|
||
const citeInfo = findCites(ref);
|
||
if (citeInfo) {
|
||
tippyHover(citeInfo.el, function() {
|
||
var popup = window.document.createElement('div');
|
||
citeInfo.cites.forEach(function(cite) {
|
||
var citeDiv = window.document.createElement('div');
|
||
citeDiv.classList.add('hanging-indent');
|
||
citeDiv.classList.add('csl-entry');
|
||
var biblioDiv = window.document.getElementById('ref-' + cite);
|
||
if (biblioDiv) {
|
||
citeDiv.innerHTML = biblioDiv.innerHTML;
|
||
}
|
||
popup.appendChild(citeDiv);
|
||
});
|
||
return popup.innerHTML;
|
||
});
|
||
}
|
||
}
|
||
});
|
||
</script>
|
||
|
||
|
||
</body></html> |