error propagation – Calculations with Around produce larger than expected uncertainties

I am working with several TimeSeries containing Around objects. I find that the propagated uncertainties for numerical values are larger than I expect them to be. In contrast, the propagated uncertainties for symbolic values are exactly what I expect them to be.

This is also true for ordinary List objects, so I will use List to demonstrate. Note that the original data values are all positive (n(i) > 0) and their original uncertainties equal their square roots (δn(i) = √n(i))

First, generate a list of symbolic data:

symbolicData = Table(Around(n(i), Sqrt(n(i))), {i, 10})

enter image description here

Then, Accumulate these data:

symbolicTotals = Accumulate@symbolicData

enter image description here

The uncertainty of the last value is the square root of that value:

{symbolicTotals((-1))("Uncertainty"), Sqrt@symbolicTotals((-1))("Value")}

enter image description here

Given my understanding of error propagation, this is correct.

Now, generate numerical data:

numericalData = Table(Around(#, Sqrt(#)) &@RandomInteger(10), {i, 10})

enter image description here

Acculumate these data:

numericalTotals = Accumulate@numericalData

enter image description here

Compare the last value’s uncertainty and square root:

{numericalTotals((-1))("Uncertainty"), Sqrt@numericalTotals((-1))("Value")}

enter image description here

The uncertainty is larger than the square root. This happens for any long list of numbers.

Why? And how can I fix it? (Assuming there’s an actual problem here, and not simply a lack of knowledge on my end.)

My guess is that this discrepancy is a consequence of the fact that

When Around is used in computations, uncertainties are by default propagated using a first-order series approximation, assuming no correlations.

What exactly is being approximated here, and if Around always does this, why doesn’t it affect symbolic values?

I understand that AroundReplace allows for higher-order approximations, but it starts with a symbolic expression and substitutes numerical values. I’m starting with numerical values. Is my only option to generate TimeSeries objects with symbolic values, do all my computations, and then AroundReplace the symbols with the original numerical data?

Is there a better way?