TimeSeriesMapThread[f,tes]
時系列データ tes の各ペア{t,x}に対して,時間と値のペア{t,f[t,x]}を持つ新しい時系列または事象系列を作成する.
TimeSeriesMapThread[f,tes,{{a1,a2,…},{b1,b2,…},…}]
tes について{{t1,f[t1,x1,a1,b1,…]},{t2,f[t2,x2,a2,b2,…]},…}を与える.
TimeSeriesMapThread
TimeSeriesMapThread[f,tes]
時系列データ tes の各ペア{t,x}に対して,時間と値のペア{t,f[t,x]}を持つ新しい時系列または事象系列を作成する.
TimeSeriesMapThread[f,tes,{{a1,a2,…},{b1,b2,…},…}]
tes について{{t1,f[t1,x1,a1,b1,…]},{t2,f[t2,x2,a2,b2,…]},…}を与える.
詳細
- TimeSeriesMapThreadは,一般に,時系列または事象系列の時間と値に関数を適用するために使われる.
- 次は,tes の可能な形である.
-
TimeSeries[…] 連続した時間順序のサンプリングデータ EventSeries[…] 対応する値を持つ時間的事象 TemporalData[…] 時間と値のペアから構築された経路の集合 {x1,x2,…} 0から始まる整数時間を想定する値のリスト {{t1,x1},{t2,x2},…} 時間と値のペアのリスト - TimeSeriesMapThread[f[…]&,tes]はTimeSeriesMap[f[#Time,…]&,tes]に等しい.
- TimeSeriesMapThreadは,複数の経路を持つTemporalDataオブジェクトに経路ごとに縫い込まれる.
例題
すべて開く すべて閉じる例 (3)
ts = TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}];TimeSeriesMapThread[f, ts]ts = TimeSeries[RandomReal[{-1, 1}, 10 ^ 3], {1}];ListPlot[ts]TimeSeriesMapThread[Sin[#1 / 100] + #2&, ts]ListPlot[%]ts = TimeSeries[Table[RandomVariate[NormalDistribution[0, σ]], {σ, 1000}]];ListPlot[ts]TimeSeriesMapThread[#2 + #3&, ts, {Subdivide[0, 50, 999]^2}]//ListPlotスコープ (7)
基本的な用法 (2)
ts = TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}];f[3, _] := 0;
f[_, v_] := v;TimeSeriesMapThread[f, ts]["Path"]data = TimeSeries[Table[{t, {Sin[t], Cos[t]}}, {t, 0, 30, 0.1}]];ListLinePlot[data]ListLinePlot[TimeSeriesMapThread[RandomReal[{-#1 / 50, #1 / 50}] + #2&, data]]データの型 (5)
ts = {{1, a}, {2, b}, {3, c}, {7, d}};TimeSeriesMapThread[f, ts]TimeSeries中の3より大きい時点の値を1に設定する:
ts = TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}];f[a_, b_] := If[a > 3, 1, b]TimeSeriesMapThread[f, ts]["Path"]整数時についてのTemporalDataを可視化する:
data = RandomFunction[WienerProcess[0, 7], {0, 20, .1}, 40]ListLinePlot[data, PlotStyle -> Thin]TimeSeriesMapThread[If[Mod[#1, 1] == 0., #2, 0]&, data]ListLinePlot[%]EventSeriesの中央の50の値を0に設定する:
es = TemporalData[EventSeries, {{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 7, 8, 8, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12,
12, 13, 13, 14, 14, 14, 14, 14, 14, 15, 15, ... 20, 20, 21, 22, 22,
23, 23, 24, 25, 26, 26, 27, 27, 28, 28, 28, 28, 29, 30, 30, 30, 31, 31, 31, 32, 32, 33, 33,
33}}, {{0, 99, 1}}, 1, {"Discrete", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> None, ValueDimensions -> 1}}, False, 10.];ListPlot[es, Filling -> Axis]TimeSeriesMapThread[If[25 < #1 < 74, 0, #2]&, es]ListPlot[%, Filling -> Axis]s = Quantity[{0, 16, 9, 3, 20, 23}, "Meters"];ts = TimeSeries[s]f[a_, b_] := If[a > 2, Quantity[1, "Meters"], b]new = TimeSeriesMapThread[f, ts]new["Path"]アプリケーション (5)
インフレ (1)
次は,1970年から2010年までのスポット原油価格である.このデータにはインフレ調整は行われていない:
oilPrices = TemporalData[TimeSeries, {{{Quantity[3.35, "USDollars"/"BarrelsOfOilEquivalent"],
Quantity[3.35, "USDollars"/"BarrelsOfOilEquivalent"],
Quantity[3.35, "USDollars"/"BarrelsOfOilEquivalent"],
Quantity[3.35, "USDollars"/"BarrelsOfOilEqu ... ilEquivalent"]}},
{TemporalData`DateSpecification[{1970, 1, 1, 0, 0, 0.}, {2010, 1, 1, 0, 0, 0.},
{{45, "Day"}, {15, "Hour"}, {41, "Minute"}, {20, "Second"}}]}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {ValueDimensions -> 1}}, True, 10.];DateListPlot[oilPrices, Joined -> True]消費者物価指数(CPI)は,しばしば,過去の価格にインフレ調整を施すために使われる:
pi = TemporalData[TimeSeries, {{{22.424, 22.747, 22.935, 23.233, 23.588, 23.905, 24.146, 24.345, 24.745,
24.894, 25.114, 25.398, 25.398, 26.145, 26.634, 27.095, 27.095, 28.266, 29.127, 30.012, 30.69,
31.138, 31.692, 32.22, 32.567, 32.893, 33.3 ... 100.179, 100.179}},
{TemporalData`DateSpecification[{1970, 1, 1, 0, 0, 0.}, {2010, 1, 1, 0, 0, 0}, {1, "Quarter"}]},
1, {"Continuous", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, True, 314.1];DateListPlot[pi, Joined -> True]cpiCor[base_, t_, v_] := (v * base/pi[t])消費者物価指数の最も新しい価格を用いてインフレ調整した価格:
baseCPI = pi["December 31st, 2009"]cp = TimeSeriesMapThread[cpiCor[baseCPI, #1, #2]&, oilPrices];DateListPlot[{cp, oilPrices}, Joined -> True, PlotLegends -> {"Adjusted", "Original"}, PlotStyle -> Thick]cp["March 5th, 2001"]天候 (1)
次は,ミズーリ州のある町の,3年間の月ごとの気温の平均である.このデータを,季節要因と季節要因ではないものに分ける:
temp = TemporalData[TimeSeries, {{{22.82, 17.01, 11.85, 7.14, 0.37, -4.54, -1.58, 6.57, 12.34, 19.02,
20.95, 22.02, 19.59, 19.77, 12.38, 7.21, -0.54, -2.28, 1.12, 3.13, 12.51, 16.38, 23.54, 23.65,
23.23, 20.73, 12.63, 6.39, -3.88, 2.98, -1.07, 4.84, 13.32, 16.42, 21.69, 24.02, 22.18}},
{TemporalData`DateSpecification[{2004, 1, 1}, {2007, 1, 1}, "Month"]}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {ValueDimensions -> 1}}, True, 10.];DateListPlot[temp, Joined -> True]mod = NonlinearModelFit[temp, a Sin[(x - b/5000000)], {a, b}, x];DateListPlot[scomp = TimeSeriesMapThread[mod[#1]&, temp], Joined -> True]sCor[t_, v_] := v - scomp[t]ncomp = TimeSeriesMapThread[sCor, temp];DateListPlot[ncomp, Joined -> True]Normal[TimeSeriesThread[Total, {ncomp, scomp}]] == Normal[temp]シミュレーション (1)
TimeSeriesMapThreadを使って変換されたランダム過程のシミュレーションを行う:
μ = 0;σ = 1 / 3;t0 = 0;t1 = 2;x0 = 0;x1 = 0;WienerProcessのシミュレーションを行う:
proc = WienerProcess[μ, σ];
SeedRandom[3];
data = RandomFunction[proc, {t0, t1, .1}];sample = TimeSeriesMapThread[x0(x1 - x0)(#1 - t0) / (t1 - t0) + #2 - (#1 - t0) Last[data["Values"]] / (t1 - t0) - (t1 - #1)First[data["Values"]] / (t1 - t0)&, data];対応するBrownianBridgeProcessと比較する:
SeedRandom[3];
data = RandomFunction[BrownianBridgeProcess[σ, {t0, x0}, {t1, x1}], {t0, t1, .1}];ListLinePlot[{sample, data}, PlotStyle -> {Thick, Dotted}]GDP (1)
スイスのGDP(単位:米ドル)推定における矛盾について調べる:
GDPDiscrepancy = EntityValue[Entity["Country", "Switzerland"], EntityProperty["Country", "DiscrepancyInExpenditureEstimateOfGDP", {"CurrencyUnit" -> "CurrentLCU", "Date" -> All}]]GDPDiscrepancy["FirstValue"]//QuantityUnitGDPDiscrepancyInUSDollars = TimeSeriesMapThread[InflationAdjust[Quantity[QuantityMagnitude[#2], DatedUnit["SwissFrancs", First@DateList[#1]]], DatedUnit["USDollars", First@DateList[#1]]]&, GDPDiscrepancy]DateListPlot[GDPDiscrepancyInUSDollars]月相 (1)
dates = DateRange[DateObject[{2014, 1, 1, 12}], DateObject[{2014, 1, 31, 12}], 1];mp = MoonPhase[dates, "Icon"];
sf = MoonPhase[dates, "Fraction"];phases = TimeSeriesMapThread[Framed[Labeled[ImageResize[#2, 45], Style[DateString[#1, {"DayNameShort", " ", "DayShort"}]]], Background -> Lighter[ColorData["StarryNightColors", #3], .3]]&, mp, {sf["Values"]}];Labeled[Grid[Partition[phases["Values"], 7, 7, 4, ""], Dividers -> All, Spacings -> {0, 0}], "January 2014", Top]特性と関係 (3)
単純な時系列を取り,f を縫込み適用することで別の時系列を構築する:
ts = TimeSeries[{11, 17, 13}]res1 = TimeSeriesMapThread[f, ts]この結果は,ConstructColumnsを使ってTabularに変換し,これを変換し直すことでも取得できる:
ConstructColumns[Tabular[ts], "s" -> Function[f[#Timestamp, #Value]]]res2 = TimeSeries[%[All, "s"], {ts["Times"]}]res1 === res2二項関数 f を単純な時系列のタイムスタンプおよび値に渡って写像する:
ts = TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}]res = TimeSeriesMapThread[f, ts]TimeSeriesMap[f, ts]//NormalNormal[res]TransformColumnsを使っても同じ結果を得ることができる:
res === TransformColumns[ts, "Value" -> (f[#Timestamp, #Value]&)]TimeSeriesMapThread[Function[f[#2]],ts]はTimeSeriesMap[f,ts]に等しい:
ts = TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}]res = TimeSeriesMapThread[f[#2]&, ts]Normal[res]res === TimeSeriesMap[f, ts]テキスト
Wolfram Research (2014), TimeSeriesMapThread, Wolfram言語関数, https://reference.wolfram.com/language/ref/TimeSeriesMapThread.html (2026年に更新).
CMS
Wolfram Language. 2014. "TimeSeriesMapThread." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2026. https://reference.wolfram.com/language/ref/TimeSeriesMapThread.html.
APA
Wolfram Language. (2014). TimeSeriesMapThread. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TimeSeriesMapThread.html
BibTeX
@misc{reference.wolfram_2026_timeseriesmapthread, author="Wolfram Research", title="{TimeSeriesMapThread}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/TimeSeriesMapThread.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_timeseriesmapthread, organization={Wolfram Research}, title={TimeSeriesMapThread}, year={2026}, url={https://reference.wolfram.com/language/ref/TimeSeriesMapThread.html}, note=[Accessed: 03-November-2026]}