> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/more-details/build-digital-twin/twin-types.md).

# Types of Digital Twins

When you select a data view, RootCause reads it and proposes the most specific twin type the data supports (see [Selecting your Data View](/more-details/build-digital-twin/selecting-data-view.md)). There are four, and they differ on just two questions:

* **Is there a time dimension?** Does each row belong to a sequence ordered in time, or is each row a standalone snapshot?
* **Are there multiple environments?** Is the data one homogeneous set, or many distinct groups — products, cities, stores, customer segments — that you want modeled together?

Crossing those two questions gives the four types.

<figure><img src="/files/9naioJxFMBaexwxjODqf" alt="A 2x2 diagram of the four digital twin types, split by whether the data has a time dimension and whether it has multiple environments"><figcaption><p>The four twin types, by time dimension and number of environments.</p></figcaption></figure>

***

## The four types

### 1. Static

Observations with **no time information**. Each row is an independent case — one row per customer, say. The twin learns what drives what from a single snapshot, ignoring any time element. Best when your rows are independent cases rather than a series of dates.

### 2. Temporal

Observations **with time**: a single series ordered by a time column. The twin learns both immediate effects and *lagged* effects — causes whose impact shows up one or more time steps later.

### 3. Multi-Environment Static

**Many groups, no time.** Each environment — a product, a region, a segment — is observed as a snapshot, and the twin discovers one shared cause-and-effect network across all of them while allowing a limited set of differences between them. This setting is also called *pooled cross-section* or *multi-context* data. It is **not** panel data: there is no time axis.

### 4. Multi-Environment Temporal

**Many groups tracked over time** — the richest type. Take an example: a table of sales orders tagged with a **product** and a **city**, recorded over time (just one example; your data will differ). It combines the time dimension of a Temporal twin with the grouping of a multi-environment twin. This is what statisticians call **panel data**; the platform labels a trained one a *Panel Time Series Model*.

***

## Why "environments," not "groups"?

A multi-environment twin does more than sort your data into buckets. It assumes every environment shares the **same underlying cause-and-effect structure**, and that only a few specific mechanisms differ between them. That shared causal core is what the twin sets out to discover; the differences are treated as information, not noise.

This is why the platform says *environments* and not *groups*. In statistics a "group" is just a partition — a bucket of rows that may differ from the next bucket in any way at all. An "environment" is a stronger idea, borrowed from causal inference: a setting in which the causal mechanisms are mostly stable and only sparsely perturbed.

And the differences between environments are an **asset, not a nuisance**. Each environment behaves like a natural experiment: by seeing how cause and effect shift from one environment to the next, the twin can pin down the direction of relationships it could never resolve from a single pooled dataset. Modeling many environments together is therefore *more* accurate than modeling each one alone — provided they genuinely share a common causal core.

The research behind this idea is listed under [Further reading](#further-reading).

***

## How the platform chooses

The moment you select a data view, RootCause inspects it and **ticks every type the data supports**, selecting the most specific one by default. You can override the choice, but the auto-detected type is almost always the right starting point.

<figure><img src="/files/N9cS305wxrLqLcgfngSC" alt="The builder&#x27;s Choose your data step with the Type selector: Static is marked Recommended and selected, while Temporal and Multi-env time are disabled because the data has no time column"><figcaption><p>The Type selector after picking a data view: Static is marked Recommended, and the types the data cannot support are disabled.</p></figcaption></figure>

***

## Further reading

The "environments" framing — and the finding that variation across environments *helps* causal discovery — comes from a body of causal-inference research:

* Peters, J., Bühlmann, P. & Meinshausen, N. (2016). Causal inference by using invariant prediction: identification and confidence intervals. *Journal of the Royal Statistical Society: Series B*, 78(5), 947–1012. — introduces "environments" (Invariant Causal Prediction).
* Arjovsky, M., Bottou, L., Gulrajani, I. & Lopez-Paz, D. (2019). Invariant Risk Minimization. arXiv:1907.02893. — popularised the term in machine learning.
* Mooij, J. M., Magliacane, S. & Claassen, T. (2020). Joint Causal Inference from Multiple Contexts. *Journal of Machine Learning Research*, 21(99), 1–108. — discovery across multiple environments/contexts.
* Perry, R., von Kügelgen, J. & Schölkopf, B. (2022). Causal Discovery in Heterogeneous Environments Under the Sparse Mechanism Shift Hypothesis. *Advances in Neural Information Processing Systems*, 35. — why sparse differences across environments make the full causal structure identifiable.
* Günther, W., Ninad, U. & Runge, J. (2023). Causal Discovery for Time Series from Multiple Datasets with Latent Contexts. *Uncertainty in Artificial Intelligence (UAI)*. — the multi-environment *temporal* (panel) case.
* Sun, Y., Wang, Y., Jin, Y., Chan, D. & Koehler, J. (2017). Geo-level Bayesian Hierarchical Media Mix Modeling. Google Inc. — the hierarchical "groups / partial pooling" framing, for contrast.

***

## Other Build a Digital Twin pages

* [Selecting your Data View](/more-details/build-digital-twin/selecting-data-view.md) — choosing the data and reading the auto-filled configuration.
* [Configuration to Build Digital Twin](/more-details/build-digital-twin/build-configuration.md) — every control on the build screen.
* [Tuning for Fit](/more-details/build-digital-twin/tuning-for-fit.md) — adjusting the configuration to improve model fit.

See [Digital Twin overview](/more-details/digital-twin.md) for the bigger picture.
