Reading the dashboard
Adoption outlook
The gray line is observed cumulative adoption and the red line the median forecast, with its band shaded. The horizontal line marks the penetration cap and the vertical line the tipping point; the tinted region is the forecast period. The metric switch rescales everything:
- Penetration: installations \(\div\) the sector's customers.
- Capacity: installations \(\times\) average system size.
- Generation: capacity \(\times\, 15.5\%\) capacity factor \(\times\, 8{,}760\,\text{h}\).
The lower chart shows new installations per year: gray bars are observed, red bars the median forecast, and whiskers the band.
Substations
Each whisker is a substation's HPCP interval for new installations in the next window. The dot is the point forecast (mean of the \(M\) simulated futures) and the dark tick the count observed in the last window. Substations are sorted from the highest upper bound to the lowest.
Grid map
Circuits are dots colored by the selected metric, joined to their substation (triangle) on an OpenStreetMap base map. Hover a circuit to see its numbers and highlight its sibling circuits. Positions depend on the data source. With Synthetic, circuits are scattered over Indianapolis and are not real feeders. With Real, each circuit sits at the centre of its poles plus about \(400\,\text{m}\) of random noise, and each substation at the centre of its circuits. Uploaded topology with lon/lat is drawn where it is.
Method
1 · Records → point process
Every installation is an event \((t, k)\) on circuit \(k\), whose adoption rate is
\[\begin{aligned}\lambda_k(t) = \gamma(t)\Big[&\,\mu_k e^{\rho t} + \alpha_{\text{self}} \sum_{t' < t,\; k' = k} \beta e^{-\beta (t - t')} \\ &+ \alpha_{\text{sib}} \sum_{t' < t,\; k' \in \mathcal{S}(k)} \beta e^{-\beta (t - t')}\Big]\end{aligned}\]
Here \(\mu_k e^{\rho t}\) is background adoption, which grows with cost declines and policy. The two sums are peer effects from earlier installations on the same circuit and on sibling circuits \(\mathcal{S}(k)\) under the same substation, a structured version of the interaction matrix \(\mathbf{A}\).
2 · Fit by EM
Maximum likelihood (Eq. \(4\)) via expectation-maximisation. Each event is split between "background" and "triggered by an earlier installation", which gives closed-form updates for \(\mu_k\), \(\rho\), \(\alpha_{\text{self}}\) and \(\alpha_{\text{sib}}\). The decay \(\beta\) is solved exactly, including the boundary term that matters when adoption grows quickly. A weak Gamma prior pulls each circuit's \(\mu_k\) toward its share of customers, so circuits with few installations keep a nonzero rate.
3 · Hierarchical conformal intervals
The model fitted before \(\tau\) simulates \(M\) futures \(\tilde y_j^{(m)}\) for every rolling window \(j\) after \(\tau\), by Ogata thinning. Each window is scored with the sibling-aware non-conformity score (Eq. \(7\)):
\[e_{j,k} = \min_{1 \le m \le M} \big\lVert \mathbf{S}_k \odot \big(y_j - \tilde y_j^{(m)}\big) \big\rVert_\infty, \qquad \mathbf{S} = \mathbf{C}\mathbf{C}^\top\]
The intervals (Eq. \(8\)) are
\[\hat L_k = \min_m \tilde y^{(m)}_{n+1,k} - \hat Q_k, \qquad \hat U_k = \max_m \tilde y^{(m)}_{n+1,k} + \hat Q_k\]
where \(\hat Q_k\) is the (optionally recency-weighted) conformal quantile. Summing them over a substation's circuits gives a valid substation interval. The network total gets its own one-dimensional conformal score.
4 · Long-range scenario
The model is refitted on all records and simulated to \(2050\). The saturation term is \(\gamma(t) = 1\) until the tipping point \(t_{\text{tp}}\); after it, adoption slows with the remaining headroom to the cap:
\[\gamma(t) = \frac{1 - N_t / N_{\text{cap}}}{1 - N_{t_{\text{tp}}} / N_{\text{cap}}}, \qquad t \ge t_{\text{tp}}\]
Each path also draws its growth rate \(\rho\) from its estimated sampling error, anchored to today's rate, so the band widens with the horizon.