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.

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.120 seconds)

Gallery generated by Sphinx-Gallery