Objective measure of relaxation time towards equilibrium for a time series I have several time series (generated from a numerical model) that go through an initial stage of spinup, followed by a period of dynamic equilibrium, that presumably exists for all times beyond the spinup period. See this link for an example.
While I can usually estimate the spinup time and the equilibrium by inspection of the curves, I would like to know is if there is some standard method from time series analysis for determining whether a time series has passed through some early deterministic stage and has approached a later stage of noise around some mean value (Something like a AR(1) process, if I am using the terminology correctly).
Summary:
Is there an objective method to determine the point upon which a time series has approached equilibrium (e.g. phrased as a probability from a hypothesis test for each point) and is there similarly an objective way to state the mean value during this equilibrium period?
 A: Since it seems that you have a time trend and then constant mean, KPSS test is appropriate. Here is the example with R code.
x<-rnorm(1000,sd=10)
y<-c(rep(0.3,200),rep(180,800))+c(rep(0,20),(1:180),rep(0,800))+x

plot(1:1000,y,type="l")


Test for stationarity
> kpss.test(y)

    KPSS Test for Level Stationarity

data:  y 
KPSS Level = 5.5237, Truncation lag parameter = 7, p-value = 0.01

Message d'avis :
In kpss.test(y) : p-value smaller than printed p-value

The null hypothesis that the series are stationary is rejected. Test the series after the spinoff.
> kpss.test(y[300:1000])

    KPSS Test for Level Stationarity

data:  y[300:1000] 
KPSS Level = 0.1797, Truncation lag parameter = 6, p-value = 0.1

Message d'avis :
In kpss.test(y[300:1000]) : p-value greater than printed p-value

The null hypothesis of stationarity is accepted.
It is also possible to detect when the change occurs by using breakpoints function from package strucchange. It is rather slow for large data sets.
> breakpoints(y~t,data=df)

     Optimal 2-segment partition: 

Call:
breakpoints.formula(formula = y ~ t, data = df)

Breakpoints at observation number:
204 

Corresponding to breakdates:
204 

In general, testing for stationarity is a complicated procedure, so my approach is not guaranteed to work in general. The main difficulty is that different tests have power over different alternatives. So the most appropriate test should be chosen on the basis what might be the deviation from the stationarity. 
