A Study of Ego Behaviour Pattern Changes in Dreams

I have a fairly large database of my recorded dreams, and after coming across the hypothesis proposed by Christian Roesler in his article[1], I decided to test it.

Roesler proposes classifying dreams according to the behaviour pattern of the dreamer’s ego, dividing them into five types. Each type describes the complexity with which the ego interacts with other objects in the dream.

  1. The dream ego is absent
  2. The dream ego is under threat
  3. The dream ego needs to assert itself
  4. Dream about movement
  5. Dream about social interaction

So does the complexity of our ego behaviour in dreams always increase over the course of successful therapy?

Roesler’s Hypothesis

Hypothesis: SDA pattern levels rise over the course of therapy (that is, a shift occurs over time from lower types to higher ones).

Or, as the author himself put it:

We would also hypothesize that there is a typical change in dream patterns over the course of successful therapies.

[…]

These transformative patterns in the dream series are interpreted from a psychodynamic perspective and are seen as speaking to the fact that an initially weak ego structure, which fails to regulate and integrate threatening emotions, impulses and complexes, gains in ego strength over the course of the therapy and increasingly succeeds in coping with initially suppressed or split off parts of the psyche and integrating these into constructive interactions with others.

Changes in dream patterns over the course of therapy in connection with improvements in ego strength

Changes in dream patterns over the course of therapy in connection with improvements in ego strength

Dream Database

For the study, the dreams of a single patient were analysed using the Gemini and Claude AI models. The results of the dream analysis (excluding descriptions of the dreams themselves and the rationale behind the classification) are attached as a separate archive.

Excluded from further analysis:

  • 6 dreams that could not be classified,
  • 3 dreams from 2018.

The table below shows the statistics for the data, to give a sense of the distribution of results.

  • Total dreams: 1111
  • Date range: from 2020-06-07 to 2026-05-09
YearPattern 1, %Pattern 2, %Pattern 3, %Pattern 4, %Pattern 5, %Total dreams
202009.122.718.25044
20214.214.628.511.141.6144
20220.816.334.96.541.5123
20231.111.13012.145.7280
20242.212.330.79.245.6228
20250.511.135.813.738.9226
20261.513.630.313.640.966
Pattern dynamics over time with added jitter and a moving average of the last 50 dreams

Pattern dynamics over time with added jitter and a moving average of the last 50 dreams

Pattern distribution grouped by quarter

Pattern distribution grouped by quarter

Analysis of Results

We will apply three statistical analysis methods to the input data.

  1. The Mann-Kendall test applied to the chronologically ordered series of 1111 classified dreams found no statistically significant monotonic trend in the SDA pattern level over the 5.5-year observation period: τ=−0.0001, S=-31, p=0.9979, Sen's slope=0.000
Details

Mann-Kendall trend test

We use the Mann-Kendall test to determine whether a linear monotonic trend exists in the data of this time series.

Calculation results:

  • τ: -0.0001
  • p-value: 0.99794
  • S: -31.0
  • Sen’s median slope: 0.000000
  • Trend: no trend

Interpretation of the results:

  • S = -31 – the sum of all pairwise comparisons across 1111 dreams (616 605 pairs in total). This value is effectively zero, because the number of “increasing” pairs is almost equal to the number of “decreasing” ones.
  • τ (tau) = -0.0001 – the normalised value of S in the range [-1, +1]. 0 – no trend, +1 – perfectly increasing, -1 – perfectly decreasing. The obtained value is almost zero.
  • p-value = 0.99794 – a 99.8% probability of obtaining this result (or a more extreme one) purely by chance, even if there is no trend at all. The data looks like random noise with no underlying trend.
  • There is no evidence of the pattern growing over time.
  1. Ordinal logistic regression of the SDA model against time (in years) showed no significant effect, indicating that ego complexity in dreams did not systematically increase over the observation period: OR = 1.00, 95% CI [0.93, 1.07], p = 0.99
Details

Ordinal logistic regression

Since the SDA pattern is an ordinal variable with unequal intervals between levels, we use ordinal logistic regression to estimate the effect of time on the pattern level.

Calculation results:

  • Coefficient (years): -0.0003
  • 95% CI for coefficient: [-0.0715, 0.0710]
  • p-value: 0.994295
  • OR per year: 0.9997
  • OR 95% CI: [0.9310, 1.0736]

Interpretation of the results:

  • OR per year = 0.9997 – the probability of observing a higher pattern category in any given dream is multiplied by 0.9997 per year. This value does not differ from 1.0 (no change).
  • p = 0.994 – time has no statistically significant effect on the pattern level.
  • OR 95% CI [0.9310, 1.0736] – the coefficient may range from 0.931 to 1.0736. The interval is symmetric and reasonably narrow. Even in the worst case, the effect is small – at most ~8% change in probability per year in either direction.
  • The complexity of the ego behaviour pattern in dreams did not systematically increase over the observation period.
  1. A one-sided Mann-Whitney test found no significant difference in pattern levels between the first and second halves of the dream series: U=153 442, p=0.433, n₁=556, n₂=555
Details

Split-half comparison (Mann-Whitney U)

The median date is chosen as the split point. If the pattern increases over time, the second half should have stochastically higher values than the first. Roesler himself in his study qualitatively compares the “first half” and the “second half” of a dream series.

Calculation results:

  • Split date: 2023-11-01
  • First half (n=556): mean=3.815, median=4.0
  • Second half (n=555): mean=3.832, median=4.0
  • U statistic: 153 442
  • p-value (one-sided, H1: first < second): 0.433105

Pattern distribution by half:

  • Pattern 1: first=10 (1.8%) second=7 (1.3%)
  • Pattern 2: first=74 (13.3%) second=64 (11.5%)
  • Pattern 3: first=167 (30.0%) second=182 (32.8%)
  • Pattern 4: first=63 (11.3%) second=64 (11.5%)
  • Pattern 5: first=242 (43.5%) second=238 (42.9%)

Interpretation of the results:

  • U statistic: 153 442 – counts, across all possible pairs, how many times a dream from the second half has a higher pattern than a dream from the first half. The expected value under no difference is U ≈ 154 290 (n₁×n₂/2 = 556×555/2). The obtained U is very close to this (since U is slightly below the expected value, the second half is actually slightly lower than expected, not higher). There is almost no asymmetry.
  • Means: 3.815 vs 3.832 – a tiny difference of 0.017 on a scale from 1 to 5.
  • Medians: 4.0 vs 4.0 – identical medians.
  • p-value: 0.433105 – if there were no difference between the halves, the probability of obtaining a U value as large or larger by chance is 43%. Reference values: p < 0.05 – acceptable significance, p < 0.01 – strong evidence. The obtained value is what one would expect from random noise.
  • Pattern distribution: changes are minor and not always even in the expected direction.
  • The two halves of the dream series do not differ statistically. The pattern composition of dreams in 2020–2023 is practically the same as in 2023–2026.

Conclusions

The patient assesses his course of therapy as fairly successful. Yet no correlation was found between undergoing therapy and changes in ego behaviour patterns in dreams.

Additional information about the study can be downloaded as an archive.[2]


References
  1. Christian Roesler. Jungian theory of dreaming and contemporary dream research - findings from the research project ‘Structural Dream Analysis’ (Journal of Analytical Psychology, 2020, 65, 1, 44–62). Download

  2. Archive with the database of classified dreams without the dream texts themselves (sequence number, date, classified pattern and dream subtype), a description of the classification process, and the Python code used for the statistical calculations and plots. Download

comments powered by Disqus