I see that this question has been bumped to the home page again. I recently answered a similar question at https://math.stackexchange.com/a/2920136/575517 so I'll give the essence of it here, in case anyone finds it helpful.
This question "How do I know that the simulation run has reached equilibrium?" is often glossed over and left as a "rule of thumb".
As discussed in other answers, usually one requires that an "equilibration" or "burn-in" time should be at least as long as the correlation time $\tau_A$ of the variable $A$ of interest or, even better, all variables of interest (taking the longest $\tau$). One discards that part of the trajectory, and starts accumulating averages thereafter.
Problems here are that one needs an estimate of $\tau_A$ beforehand,
and also that this argument is loosely based on linear response theory:
namely that the relaxation of a slightly perturbed state to equilibrium
occurs on a timescale given by $\tau_A$, which is a property of the
equilibrium time correlation function. There's no guarantee that the
relaxation from an arbitrarily prepared initial configuration will follow
this law, even though $\tau_A$ might provide a reasonable guide.
However I'm aware of at least one paper where an attempt has been made, by John Chodera, to tackle it objectively: https://doi.org/10.1101/021659 which was also published in J Chem Theo Comp, 12, 1799 (2016).
I won't try to reproduce the mathematics here, but the basic idea is to use the procedure for estimating statistical errors in correlated sequences of data - which involves estimating the correlation time (or the statistical inefficiency, which is the spacing between effectively independent samples) - and applying it to the interval $(t_0,t_{\text{max}})$ which covers the period between the (proposed) end of the equilibration period, $t_0$, and the end of the whole dataset, $t_{\text{max}}$. This calculation behaves in a predictable way if the dataset is at equilibrium: the fluctuations $\langle\delta A_{\Delta t}^2\rangle$ of a finite-time-average
$$
\delta A_{\Delta t} = A_{\Delta t}-\langle A\rangle, \qquad
A_{\Delta t} = \frac{1}{\Delta t} \int_t^{t+\Delta t} dt \, A(t)
$$
depend in a known way on the averaging interval $\Delta t$.
The time origins $t$ are chosen within the interval of interest, $(t_0,t_{\text{max}}-\Delta t)$;
the fluctuations are calculated from all the periods $\Delta t$
lying within that interval.
The method systematically carries out this calculation as a function of $t_0$, reducing it from an initial high value towards the start of the run. At some point, it is expected that deviations from the expected behaviour are seen.
That point is taken to be the end of the equilibration period.
Anyway, reading that paper should be helpful in clarifying this issue.
The author also provides a piece of Python software to implement the calculation automatically, so it may be of practical use as well.