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

ot.Log.Show(ot.Log.NONE)

Create the RegularGrid

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



Case 2: Get a time series from a Process

myProcess = ot.WhiteNoise(ot.Normal(3), myTimeGrid)
myTimeSeries2 = myProcess.getRealization()
myTimeSeries2
tX0X1X2
000.3854209-1.61086-0.6874292
10.1-0.02107395-1.405266-0.6029087
20.2-0.07453712-0.287633-0.4026233
30.3-0.4894317-0.58033881.196489
40.41.0045560.5372572-0.08770909
50.51.4239350.68201462.884055
60.60.2796988-1.178997-0.143892
70.70.68130790.014379190.5099701
80.8-1.0602340.044836570.2499197
90.91.24773-0.3856004-0.2880728
101-0.58905170.49957531.132313
111.1-0.84378111.43619-0.1876503
121.20.9405220.7151117-1.439318
131.3-0.1429401-0.17658880.9054335
141.40.6688361-0.1848348-0.2056171
151.50.85390611.0827170.7860448
161.6-1.839514-0.4807376-0.7431111
171.70.25838940.064986780.8220976
181.8-0.2202976-1.2674070.06548754
191.9-2.5064850.2182682-0.3734256
202-0.3483342-1.020392-0.9373684
212.10.793814-0.983334-0.4151898
222.20.1049272-0.49916560.3643877
232.3-0.16279310.49257820.3548167
242.4-0.8811936-0.819895-2.106536
252.50.1773956-0.04881701-0.9867962
262.6-0.88621321.2191610.266691
272.70.1883040.80905141.619885
282.8-0.5646788-0.99210440.7245245
292.90.3057475-0.41199462.759856
3030.40880391.121707-0.6501654
313.1-1.0342881.1503790.5587453
323.21.332409-0.32251480.4750779
333.3-0.15360951.0355351.381175
343.41.225896-0.10566460.3069166
353.50.49247580.4262604-0.5698308
363.6-0.4156163-2.609303-2.173168
373.7-1.324497-1.455850.1801837
383.81.4211981.866039-0.1742316
393.9-1.555471.48841.303924
404-1.061323-1.305955-1.629615
414.1-0.29628690.87397920.1051378
424.2-0.02998592-1.5160321.474471
434.3-1.03669-1.5346510.8259901
444.40.457382-0.38656151.28411
454.5-0.32594611.637177-0.8420178
464.6-0.29240970.36159910.4570965
474.70.2379781.0208261.699262
484.8-0.54388090.4973056-1.469904
494.9-2.294773-0.2623551-1.554523
505-2.827310.58255310.4139608
515.1-0.93024370.549059-0.69065
525.2-0.6021352-0.76771841.285077
535.3-0.222591.2217410.4439343
545.4-0.7078664-1.0569120.5648551
555.50.29809861.3424181.085837
565.60.8239627-0.6283856-0.8834576
575.70.86075331.4562640.1421699
585.8-0.33233230.89529780.1655028
595.90.027144610.16458070.2626963
6061.6386110.1818056-0.1240066
616.11.56386-0.54716150.4136208
626.2-0.5009097-1.561814-2.157897
636.3-0.8845609-0.03278067-0.4371368
646.40.92630220.36402171.127778
656.5-0.29581290.521623-0.5048369
666.6-1.126024-0.15387590.9138794
676.7-2.0582741.0936460.353957
686.8-0.57084881.5213970.2852253
696.9-1.835236-0.30448520.9165636
7070.91406640.10757050.06927429
717.1-0.66504881.9512160.7997068
727.2-0.8125796-0.57977910.1117721
737.3-0.2133026-1.116885-0.872058
747.41.6291643.399959-0.9405087
757.50.8080016-0.54500921.626903
767.6-0.061288020.308256-0.9618253
777.7-1.2550940.4358796-0.7273887
787.8-0.3513546-1.318261-0.47417
797.9-0.10056021.643525-0.4139103
8080.8686027-0.43225211.012874
818.1-1.1149270.4695280.9161205
828.2-0.3569551.022334-2.00257
838.3-1.715160.6274581-1.352094
848.4-0.03491598-0.037932510.05596954
858.5-0.28109470.144073-2.171863
868.6-0.33894530.5843859-0.8390798
878.7-1.041380.35194971.069267
888.8-2.8664621.1825040.2067203
898.9-0.6907754-0.74259841.164752
909-0.09003073-1.2094510.7730654
919.1-0.8069562-1.0466430.1396704
929.21.0673650.1232827-0.776005
939.3-0.882326-0.01456590.2200673
949.40.4727389-0.31590741.723677
959.50.53389850.4875888-0.5419431
969.60.7959215-0.9714537-0.3666259
979.70.13633551.229809-0.4606246
989.80.5330227-0.98758070.2573491
999.90.415046-0.75341090.07963906


Get the number of values of the time series

myTimeSeries.getSize()
100

Get the dimension of the values observed at each time

myTimeSeries.getMesh().getDimension()
1

Get the value Xi at index i

i = 37
print("Xi = ", myTimeSeries.getValueAtIndex(i))
Xi =  [-2.14009,0.933245,0.818686]

Get the time series at index i : Xi

i = 37
print("Xi = ", myTimeSeries[i])
Xi =  [-2.14009,0.933245,0.818686]

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])
ti =  3.7
Xi1 =  -2.1400929826096444

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

myTimeSeries.getValues()
X0X1X2
0-0.3048259-1.0036080.4839469
10.6240040.039543780.6604305
21.1008120.58575810.3281357
3-0.17841190.083307890.8977757
4-1.4097340.7111029-1.754176
5-1.3366080.26989271.413675
60.49924141.158536-0.09896703
7-0.65046691.4611450.6137203
82.142012-1.667722-0.1514732
92.41580.1372886-0.9697043
10-0.292688-1.025222-0.3549386
11-0.86930170.2668970.296524
12-2.241144-1.560704-2.271998
130.7224505-2.161275-0.3286104
141.069747-1.779941-0.8327076
15-0.2453716-0.0205006-0.1701006
160.5292955-0.7251038-1.162473
170.19952350.7271477-0.2606875
18-0.13677180.5202298-0.6591333
19-0.1806734-1.0488470.5123711
200.2064803-0.9608320.4146824
21-1.2287142.57497-0.008049008
22-1.8858990.830757-0.3783459
230.47904631.609382-0.5708413
240.26909640.80350330.5832181
250.4497564-0.69355591.896662
260.02708176-0.258272-0.37012
270.04565963-0.3430478-0.3924844
28-2.4109291.939206-0.5900438
290.2270499-0.14176540.8555065
300.2867610.5648119-0.5097008
311.403344-1.3785220.4340351
320.034251810.8961165-0.8705775
331.3699530.27259690.5792226
34-1.5321030.9570650.4276634
35-0.36668020.6486989-0.004649441
360.1715484-0.079576110.4553892
37-2.1400930.93324460.8186856
38-1.5482560.370246-0.773089
39-0.012983330.1873089-2.131449
40-1.197682-0.005001849-0.1256726
41-1.8920073.40565-0.1035762
420.41544770.72725450.9788553
431.1580810.29527520.2839339
441.2942580.20077350.342265
450.1640854-0.60838320.1443463
460.53773290.69655671.187906
472.180975-0.19480930.6283156
480.2308662-0.6480712-0.02802031
490.87100461.244731-0.1063582
50-0.2344887-2.0102040.1217012
51-1.331632-0.8254575-1.216578
52-1.025789-1.224865-0.7350567
530.2674311-0.31396660.3284034
54-1.1854180.2725766-0.5379969
55-0.15462760.034893870.3572081
560.8738098-1.489697-1.603233
570.2768838-0.20527910.3135911
581.5206262.1278920.1574096
590.056431991.05201-1.069286
600.038969580.10886191.560223
610.89785810.071317860.3290581
620.7683447-0.20172150.1483074
630.4988259-0.54060890.202215
641.52964-1.1921790.5249542
65-0.12717581.0012170.2995675
66-0.07324792-0.59280080.509773
671.5680790.36934280.6873462
680.26022051.5601010.6838802
69-0.26040790.1696515-1.016573
700.8102853-0.93454770.4402335
710.10265450.16255020.9776058
72-0.6851276-0.04119683-0.1615313
730.009488993-0.69923730.8356431
740.9612086-0.39534240.2505092
75-1.712787-0.30337221.713433
760.2879968-0.3462038-1.243077
77-0.6619336-0.53962570.7891796
780.5251990.2655049-0.6153533
790.6677281-0.3206562-0.00603524
80-1.4404270.070651250.4005165
81-0.5370034-2.1304320.1862285
82-1.3262880.2426011-0.8973327
83-0.95736431.588237-0.2380769
84-0.65439791.498919-0.7131357
85-1.3351570.56762850.640198
86-0.2597290.1922855-1.402221
870.5600177-1.3562441.034522
88-0.3787931-0.1257271-0.5878356
891.078941-1.6693861.708344
90-0.8459409-0.1786205-0.1958844
911.8113250.40003631.108118
92-0.4552358-0.79341742.283829
930.351885-0.060822141.182574
942.0572362.083603-1.109457
950.64611740.3140881-1.259195
962.513471.106768-1.237082
97-0.40506291.2447750.2588656
98-0.11379980.38149980.1557911
990.40241241.332716-0.8056192


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

myTimeSeries.getInputMean()

[0.0282591,0.0564162,0.0199248]



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