Manipulate a time seriesΒΆ

The objective here is to create and manipulate a time series. A time series is a particular field where the mesh \mathcal{M} 1-d and regular, eg a time grid (t_0, \dots, t_{N-1}).

It is possible to draw a time series, using interpolation between the values: see the use case on the Field.

A time series can be obtained as a realization of a multivariate stochastic process X: \Omega \times [0,T] \rightarrow \mathbb{R}^d of dimension d where [0,T] is discretized according to the regular grid (t_0, \dots, t_{N-1}) . The values (\underline{x}_0, \dots, \underline{x}_{N-1}) of the time series are defined by:

\forall i \in [0, N-1],\quad \underline{x}_i= X(\omega)(t_i)

A time series is stored in the TimeSeries object that stores the regular time grid and the associated values.

from __future__ import print_function
import openturns as ot
import openturns.viewer as viewer
from matplotlib import pylab as plt
import math as m
ot.Log.Show(ot.Log.NONE)

Create the RegularGrid

tMin = 0.
timeStep = 0.1
N = 100
myTimeGrid = ot.RegularGrid(tMin, timeStep, N)

Case 1: Create a time series from a time grid and values Care! The number of steps of the time grid must correspond to the size of the values

myValues = ot.Normal(3).getSample(myTimeGrid.getVertices().getSize())
myTimeSeries = ot.TimeSeries(myTimeGrid, myValues)
myTimeSeries

[ t X0 X1 X2 ]
0 : [ 0 1.06975 -1.77994 -0.832708 ]
1 : [ 0.1 -0.245372 -0.0205006 -0.170101 ]
2 : [ 0.2 0.529296 -0.725104 -1.16247 ]
3 : [ 0.3 0.199523 0.727148 -0.260688 ]
4 : [ 0.4 -0.136772 0.52023 -0.659133 ]
5 : [ 0.5 -0.180673 -1.04885 0.512371 ]
6 : [ 0.6 0.20648 -0.960832 0.414682 ]
7 : [ 0.7 -1.22871 2.57497 -0.00804901 ]
8 : [ 0.8 -1.8859 0.830757 -0.378346 ]
9 : [ 0.9 0.479046 1.60938 -0.570841 ]
10 : [ 1 0.269096 0.803503 0.583218 ]
11 : [ 1.1 0.449756 -0.693556 1.89666 ]
12 : [ 1.2 0.0270818 -0.258272 -0.37012 ]
13 : [ 1.3 0.0456596 -0.343048 -0.392484 ]
14 : [ 1.4 -2.41093 1.93921 -0.590044 ]
15 : [ 1.5 0.22705 -0.141765 0.855507 ]
16 : [ 1.6 0.286761 0.564812 -0.509701 ]
17 : [ 1.7 1.40334 -1.37852 0.434035 ]
18 : [ 1.8 0.0342518 0.896116 -0.870577 ]
19 : [ 1.9 1.36995 0.272597 0.579223 ]
20 : [ 2 -1.5321 0.957065 0.427663 ]
21 : [ 2.1 -0.36668 0.648699 -0.00464944 ]
22 : [ 2.2 0.171548 -0.0795761 0.455389 ]
23 : [ 2.3 -2.14009 0.933245 0.818686 ]
24 : [ 2.4 -1.54826 0.370246 -0.773089 ]
25 : [ 2.5 -0.0129833 0.187309 -2.13145 ]
26 : [ 2.6 -1.19768 -0.00500185 -0.125673 ]
27 : [ 2.7 -1.89201 3.40565 -0.103576 ]
28 : [ 2.8 0.415448 0.727255 0.978855 ]
29 : [ 2.9 1.15808 0.295275 0.283934 ]
30 : [ 3 1.29426 0.200773 0.342265 ]
31 : [ 3.1 0.164085 -0.608383 0.144346 ]
32 : [ 3.2 0.537733 0.696557 1.18791 ]
33 : [ 3.3 2.18097 -0.194809 0.628316 ]
34 : [ 3.4 0.230866 -0.648071 -0.0280203 ]
35 : [ 3.5 0.871005 1.24473 -0.106358 ]
36 : [ 3.6 -0.234489 -2.0102 0.121701 ]
37 : [ 3.7 -1.33163 -0.825457 -1.21658 ]
38 : [ 3.8 -1.02579 -1.22486 -0.735057 ]
39 : [ 3.9 0.267431 -0.313967 0.328403 ]
40 : [ 4 -1.18542 0.272577 -0.537997 ]
41 : [ 4.1 -0.154628 0.0348939 0.357208 ]
42 : [ 4.2 0.87381 -1.4897 -1.60323 ]
43 : [ 4.3 0.276884 -0.205279 0.313591 ]
44 : [ 4.4 1.52063 2.12789 0.15741 ]
45 : [ 4.5 0.056432 1.05201 -1.06929 ]
46 : [ 4.6 0.0389696 0.108862 1.56022 ]
47 : [ 4.7 0.897858 0.0713179 0.329058 ]
48 : [ 4.8 0.768345 -0.201722 0.148307 ]
49 : [ 4.9 0.498826 -0.540609 0.202215 ]
50 : [ 5 1.52964 -1.19218 0.524954 ]
51 : [ 5.1 -0.127176 1.00122 0.299567 ]
52 : [ 5.2 -0.0732479 -0.592801 0.509773 ]
53 : [ 5.3 1.56808 0.369343 0.687346 ]
54 : [ 5.4 0.26022 1.5601 0.68388 ]
55 : [ 5.5 -0.260408 0.169652 -1.01657 ]
56 : [ 5.6 0.810285 -0.934548 0.440233 ]
57 : [ 5.7 0.102655 0.16255 0.977606 ]
58 : [ 5.8 -0.685128 -0.0411968 -0.161531 ]
59 : [ 5.9 0.00948899 -0.699237 0.835643 ]
60 : [ 6 0.961209 -0.395342 0.250509 ]
61 : [ 6.1 -1.71279 -0.303372 1.71343 ]
62 : [ 6.2 0.287997 -0.346204 -1.24308 ]
63 : [ 6.3 -0.661934 -0.539626 0.78918 ]
64 : [ 6.4 0.525199 0.265505 -0.615353 ]
65 : [ 6.5 0.667728 -0.320656 -0.00603524 ]
66 : [ 6.6 -1.44043 0.0706512 0.400517 ]
67 : [ 6.7 -0.537003 -2.13043 0.186229 ]
68 : [ 6.8 -1.32629 0.242601 -0.897333 ]
69 : [ 6.9 -0.957364 1.58824 -0.238077 ]
70 : [ 7 -0.654398 1.49892 -0.713136 ]
71 : [ 7.1 -1.33516 0.567629 0.640198 ]
72 : [ 7.2 -0.259729 0.192286 -1.40222 ]
73 : [ 7.3 0.560018 -1.35624 1.03452 ]
74 : [ 7.4 -0.378793 -0.125727 -0.587836 ]
75 : [ 7.5 1.07894 -1.66939 1.70834 ]
76 : [ 7.6 -0.845941 -0.178621 -0.195884 ]
77 : [ 7.7 1.81133 0.400036 1.10812 ]
78 : [ 7.8 -0.455236 -0.793417 2.28383 ]
79 : [ 7.9 0.351885 -0.0608221 1.18257 ]
80 : [ 8 2.05724 2.0836 -1.10946 ]
81 : [ 8.1 0.646117 0.314088 -1.25919 ]
82 : [ 8.2 2.51347 1.10677 -1.23708 ]
83 : [ 8.3 -0.405063 1.24478 0.258866 ]
84 : [ 8.4 -0.1138 0.3815 0.155791 ]
85 : [ 8.5 0.402412 1.33272 -0.805619 ]
86 : [ 8.6 0.385421 -1.61086 -0.687429 ]
87 : [ 8.7 -0.021074 -1.40527 -0.602909 ]
88 : [ 8.8 -0.0745371 -0.287633 -0.402623 ]
89 : [ 8.9 -0.489432 -0.580339 1.19649 ]
90 : [ 9 1.00456 0.537257 -0.0877091 ]
91 : [ 9.1 1.42393 0.682015 2.88405 ]
92 : [ 9.2 0.279699 -1.179 -0.143892 ]
93 : [ 9.3 0.681308 0.0143792 0.50997 ]
94 : [ 9.4 -1.06023 0.0448366 0.24992 ]
95 : [ 9.5 1.24773 -0.3856 -0.288073 ]
96 : [ 9.6 -0.589052 0.499575 1.13231 ]
97 : [ 9.7 -0.843781 1.43619 -0.18765 ]
98 : [ 9.8 0.940522 0.715112 -1.43932 ]
99 : [ 9.9 -0.14294 -0.176589 0.905433 ]



Case 2: Get a time series from a Process

myProcess = ot.WhiteNoise(ot.Normal(3), myTimeGrid)
myTimeSeries2 = myProcess.getRealization()
myTimeSeries2
tX0X1X2
000.6688361-0.1848348-0.2056171
10.10.85390611.0827170.7860448
20.2-1.839514-0.4807376-0.7431111
30.30.25838940.064986780.8220976
40.4-0.2202976-1.2674070.06548754
50.5-2.5064850.2182682-0.3734256
60.6-0.3483342-1.020392-0.9373684
70.70.793814-0.983334-0.4151898
80.80.1049272-0.49916560.3643877
90.9-0.16279310.49257820.3548167
101-0.8811936-0.819895-2.106536
111.10.1773956-0.04881701-0.9867962
121.2-0.88621321.2191610.266691
131.30.1883040.80905141.619885
141.4-0.5646788-0.99210440.7245245
151.50.3057475-0.41199462.759856
161.60.40880391.121707-0.6501654
171.7-1.0342881.1503790.5587453
181.81.332409-0.32251480.4750779
191.9-0.15360951.0355351.381175
2021.225896-0.10566460.3069166
212.10.49247580.4262604-0.5698308
222.2-0.4156163-2.609303-2.173168
232.3-1.324497-1.455850.1801837
242.41.4211981.866039-0.1742316
252.5-1.555471.48841.303924
262.6-1.061323-1.305955-1.629615
272.7-0.29628690.87397920.1051378
282.8-0.02998592-1.5160321.474471
292.9-1.03669-1.5346510.8259901
3030.457382-0.38656151.28411
313.1-0.32594611.637177-0.8420178
323.2-0.29240970.36159910.4570965
333.30.2379781.0208261.699262
343.4-0.54388090.4973056-1.469904
353.5-2.294773-0.2623551-1.554523
363.6-2.827310.58255310.4139608
373.7-0.93024370.549059-0.69065
383.8-0.6021352-0.76771841.285077
393.9-0.222591.2217410.4439343
404-0.7078664-1.0569120.5648551
414.10.29809861.3424181.085837
424.20.8239627-0.6283856-0.8834576
434.30.86075331.4562640.1421699
444.4-0.33233230.89529780.1655028
454.50.027144610.16458070.2626963
464.61.6386110.1818056-0.1240066
474.71.56386-0.54716150.4136208
484.8-0.5009097-1.561814-2.157897
494.9-0.8845609-0.03278067-0.4371368
5050.92630220.36402171.127778
515.1-0.29581290.521623-0.5048369
525.2-1.126024-0.15387590.9138794
535.3-2.0582741.0936460.353957
545.4-0.57084881.5213970.2852253
555.5-1.835236-0.30448520.9165636
565.60.91406640.10757050.06927429
575.7-0.66504881.9512160.7997068
585.8-0.8125796-0.57977910.1117721
595.9-0.2133026-1.116885-0.872058
6061.6291643.399959-0.9405087
616.10.8080016-0.54500921.626903
626.2-0.061288020.308256-0.9618253
636.3-1.2550940.4358796-0.7273887
646.4-0.3513546-1.318261-0.47417
656.5-0.10056021.643525-0.4139103
666.60.8686027-0.43225211.012874
676.7-1.1149270.4695280.9161205
686.8-0.3569551.022334-2.00257
696.9-1.715160.6274581-1.352094
707-0.03491598-0.037932510.05596954
717.1-0.28109470.144073-2.171863
727.2-0.33894530.5843859-0.8390798
737.3-1.041380.35194971.069267
747.4-2.8664621.1825040.2067203
757.5-0.6907754-0.74259841.164752
767.6-0.09003073-1.2094510.7730654
777.7-0.8069562-1.0466430.1396704
787.81.0673650.1232827-0.776005
797.9-0.882326-0.01456590.2200673
8080.4727389-0.31590741.723677
818.10.53389850.4875888-0.5419431
828.20.7959215-0.9714537-0.3666259
838.30.13633551.229809-0.4606246
848.40.5330227-0.98758070.2573491
858.50.415046-0.75341090.07963906
868.60.5442014-1.354907-0.03364811
878.7-0.7464795-0.63558080.7484256
888.8-1.115680.12871660.8080038
898.9-0.5232872-0.029844340.04724269
9090.3280034-1.044189-0.07286712
919.12.15871-0.2920541-1.050486
929.2-0.2947081.053643-0.186262
939.3-1.741194-0.71871860.3079888
949.4-0.1860214-1.4038910.8369425
959.5-2.217396-1.1960060.9390647
969.60.553490.9341016-1.968257
979.70.04515048-0.23814850.3987472
989.8-1.37868-0.68110750.339187
999.90.6905608-0.25761851.481621


Get the number of values of the time series

myTimeSeries.getSize()

Out:

100

Get the dimension of the values observed at each time

myTimeSeries.getMesh().getDimension()

Out:

1

Get the value Xi at index i

i = 37
print('Xi = ', myTimeSeries.getValueAtIndex(i))

Out:

Xi =  [-1.33163,-0.825457,-1.21658]

Get the time series at index i : Xi

i = 37
print('Xi = ', myTimeSeries[i])

Out:

Xi =  [-1.33163,-0.825457,-1.21658]

Get a the marginal value at index i of the time series

i = 37
# get the time stamp:
print('ti = ', myTimeSeries.getTimeGrid().getValue(i))
# get the first component of the corresponding value :
print('Xi1 = ', myTimeSeries[i, 0])

Out:

ti =  3.7
Xi1 =  -1.3316320019575207

Get all the values (X1, .., Xn) of the time series

myTimeSeries.getValues()
X0X1X2
01.069747-1.779941-0.8327076
1-0.2453716-0.0205006-0.1701006
20.5292955-0.7251038-1.162473
30.19952350.7271477-0.2606875
4-0.13677180.5202298-0.6591333
5-0.1806734-1.0488470.5123711
60.2064803-0.9608320.4146824
7-1.2287142.57497-0.008049008
8-1.8858990.830757-0.3783459
90.47904631.609382-0.5708413
100.26909640.80350330.5832181
110.4497564-0.69355591.896662
120.02708176-0.258272-0.37012
130.04565963-0.3430478-0.3924844
14-2.4109291.939206-0.5900438
150.2270499-0.14176540.8555065
160.2867610.5648119-0.5097008
171.403344-1.3785220.4340351
180.034251810.8961165-0.8705775
191.3699530.27259690.5792226
20-1.5321030.9570650.4276634
21-0.36668020.6486989-0.004649441
220.1715484-0.079576110.4553892
23-2.1400930.93324460.8186856
24-1.5482560.370246-0.773089
25-0.012983330.1873089-2.131449
26-1.197682-0.005001849-0.1256726
27-1.8920073.40565-0.1035762
280.41544770.72725450.9788553
291.1580810.29527520.2839339
301.2942580.20077350.342265
310.1640854-0.60838320.1443463
320.53773290.69655671.187906
332.180975-0.19480930.6283156
340.2308662-0.6480712-0.02802031
350.87100461.244731-0.1063582
36-0.2344887-2.0102040.1217012
37-1.331632-0.8254575-1.216578
38-1.025789-1.224865-0.7350567
390.2674311-0.31396660.3284034
40-1.1854180.2725766-0.5379969
41-0.15462760.034893870.3572081
420.8738098-1.489697-1.603233
430.2768838-0.20527910.3135911
441.5206262.1278920.1574096
450.056431991.05201-1.069286
460.038969580.10886191.560223
470.89785810.071317860.3290581
480.7683447-0.20172150.1483074
490.4988259-0.54060890.202215
501.52964-1.1921790.5249542
51-0.12717581.0012170.2995675
52-0.07324792-0.59280080.509773
531.5680790.36934280.6873462
540.26022051.5601010.6838802
55-0.26040790.1696515-1.016573
560.8102853-0.93454770.4402335
570.10265450.16255020.9776058
58-0.6851276-0.04119683-0.1615313
590.009488993-0.69923730.8356431
600.9612086-0.39534240.2505092
61-1.712787-0.30337221.713433
620.2879968-0.3462038-1.243077
63-0.6619336-0.53962570.7891796
640.5251990.2655049-0.6153533
650.6677281-0.3206562-0.00603524
66-1.4404270.070651250.4005165
67-0.5370034-2.1304320.1862285
68-1.3262880.2426011-0.8973327
69-0.95736431.588237-0.2380769
70-0.65439791.498919-0.7131357
71-1.3351570.56762850.640198
72-0.2597290.1922855-1.402221
730.5600177-1.3562441.034522
74-0.3787931-0.1257271-0.5878356
751.078941-1.6693861.708344
76-0.8459409-0.1786205-0.1958844
771.8113250.40003631.108118
78-0.4552358-0.79341742.283829
790.351885-0.060822141.182574
802.0572362.083603-1.109457
810.64611740.3140881-1.259195
822.513471.106768-1.237082
83-0.40506291.2447750.2588656
84-0.11379980.38149980.1557911
850.40241241.332716-0.8056192
860.3854209-1.61086-0.6874292
87-0.02107395-1.405266-0.6029087
88-0.07453712-0.287633-0.4026233
89-0.4894317-0.58033881.196489
901.0045560.5372572-0.08770909
911.4239350.68201462.884055
920.2796988-1.178997-0.143892
930.68130790.014379190.5099701
94-1.0602340.044836570.2499197
951.24773-0.3856004-0.2880728
96-0.58905170.49957531.132313
97-0.84378111.43619-0.1876503
980.9405220.7151117-1.439318
99-0.1429401-0.17658880.9054335


Compute the temporal Mean It corresponds to the mean of the values of the time series

myTimeSeries.getInputMean()

[0.0424435,0.0709075,0.0473796]



Draw the marginal i of the time series using linear interpolation

graph = myTimeSeries.drawMarginal(0)
view = viewer.View(graph)
Unnamed - 0 marginal

with no interpolation

graph = myTimeSeries.drawMarginal(0, False)
view = viewer.View(graph)
plt.show()
Unnamed - 0 marginal

Total running time of the script: ( 0 minutes 0.192 seconds)

Gallery generated by Sphinx-Gallery