FirstPassageTimeDistribution[mproc,f]
マルコフ(Markov)過程 mproc の初期状態から最初に最終状態 f に至るまでの時間分布を表す.
FirstPassageTimeDistribution
FirstPassageTimeDistribution[mproc,f]
マルコフ(Markov)過程 mproc の初期状態から最初に最終状態 f に至るまでの時間分布を表す.
詳細
- FirstPassageTimeDistributionは初到達時間としても知られている.
- マルコフ過程 mproc はDiscreteMarkovProcessまたはContinuousMarkovProcessである.
- FirstPassageTimeDistributionにおける時間 t の確率はProbability[x[t]∈f∧∀τ,0<τ<tx[τ]∉fx[0]i,xmproc]に等しい.ただし,i は初期状態である.
- mproc がすでに目標状態に達している場合,FirstPassageTimeDistributionは平均再帰時間の分布を与える.
- 鎖が吸収的で目標状態が吸収的ではない場合,FirstPassageTimeDistributionは目標状態に達することを条件とした分布を与える.
- FirstPassageTimeDistributionは,離散時間マルコフ過程の位相タイプ離散分布ならびに連続時間マルコフ過程の位相タイプ連続分布を表す.
- FirstPassageTimeDistributionは,Mean,Quantile,PDF,RandomVariate等の関数で使うことができる.
例題
すべて開く すべて閉じる例 (1)
状態3になるために必要なステップ数の,平均,分散,確率密度関数を計算する:
𝒫 = DiscreteMarkovProcess[{1, 0, 0}, (| | | |
| ----- | ----- | ----- |
| 0 | 1 / 2 | 1 / 2 |
| 1 / 2 | 0 | 1 / 2 |
| 1 / 2 | 1 / 2 | 0 |)];𝒟 = FirstPassageTimeDistribution[𝒫, 3];PDF[𝒟, k]DiscretePlot[%, {k, 0, 5}, ExtentSize -> 1 / 2]CDF[𝒟, k]DiscretePlot[%, {k, 0, 5}, ExtentSize -> Right]Mean[𝒟]Variance[𝒟]スコープ (3)
𝒫 = ContinuousMarkovProcess[1, {{-2, 1, 1, 0}, {2, -6, 2, 2}, {3, 3, -9, 3}, {0, 0, 0, 0}}];𝒟 = FirstPassageTimeDistribution[𝒫, 4];PDF[𝒟, t]Plot[PDF[𝒟, t], {t, 0, 10}]Mean[𝒟]N[%]paths = Select[RandomFunction[𝒫, {0, 10 ^ 5}, 4 * 10 ^ 4]["Paths"], #[[-1, 1]] == 10 ^ 5&];Mean[paths[[All, -2, 1]]]CharacteristicFunction[𝒟, s]//TogetherProbability[time < 1, time𝒟]N[%]目標状態に到達するという条件で,そこまでの初期通過時間の平均と分散を求める:
𝒫 = DiscreteMarkovProcess[3, {{1 / 2, 1 / 2, 0, 0}, {1 / 2, 1 / 2, 0, 0}, {1 / 3, 1 / 4, 13 / 60, 1 / 5}, {0, 0, 0, 1}}];MarkovProcessProperties[𝒫, "Absorbing"]𝒟 = FirstPassageTimeDistribution[𝒫, {1, 2}];{Mean[𝒟], Variance[𝒟]}//Nsample = RandomFunction[𝒫, {0, 128}, 10 ^ 5, Method -> {Automatic, "StoppingFunction" -> Function[{len, pos}, pos == 3]}];
times = Cases[sample["Paths"], {__, {t_, 1 | 2}} :> t];{Mean[times], Variance[times]}//Ndist = FirstPassageTimeDistribution[ContinuousMarkovProcess[{0.1, 0.9, 0, 0}, {{-6.2, 2, 0, 4.2}, {2, -9, 1, 6}, {1, 0, -3, 2}, {0, 0, 0, 0}}], 4];data = RandomVariate[dist, 10 ^ 4];hist = Histogram[data, Automatic, "PDF"];pdf = Plot[PDF[dist, x], {x, 0, 10}, PlotRange -> All, PlotStyle -> Thick];Show[hist, pdf, ImageSize -> Medium]アプリケーション (7)
空港か市内のどちらかにタクシーがいる.市内から次に空港へ行く確率は1/4,市内の別の場所へ行く確率は3/4である.空港からは常に市内へ戻る.状態1が市内を,状態2が空港を表す離散マルコフ過程を使って空港から始めてタクシーをモデル化する:
taxi = DiscreteMarkovProcess[2, {{3 / 4, 1 / 4}, {1, 0}}];タクシーが次に空港へ行くまでの市内での実車回数の期待値を求める:
Mean[FirstPassageTimeDistribution[taxi, 2]]賭博者が3ユニットから始めて,各ステップで1ユニットを賭けた.勝負に勝つ確率は0.4で目標は止めるまでに7ユニット勝つことである.この賭博者が目標を達成するまで,あるいはすべて失うまでの勝負時間の期待値を求める.この賭博の過程は離散マルコフ過程としてモデル化することができる.ただし,状態
は賭博者が
ユニット持っていることを表す:
m = (| | | | | | | | |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0.6 | 0 | 0.4 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0.6 | 0 | 0.4 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0.6 | 0 | 0.4 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0.6 | 0 | 0.4 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0.6 | 0 | 0.4 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0.6 | 0 | 0.4 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |);gambler = DiscreteMarkovProcess[4, m];ListLinePlot[RandomFunction[gambler, {0, 20}, 5]["ValueList"] - 1]𝒟 = FirstPassageTimeDistribution[gambler, {1, 8}];Mean[𝒟]DiscretePlot[PDF[𝒟, k], {k, 0, 15}, ExtentSize -> 1 / 2]NProbability[k ≤ 10, k𝒟]サイコロの6面すべてが出るまでに平均で何回サイコロを振らなければならないかを求める:
dierolls = DiscreteMarkovProcess[1, With[{numfaces = 6}, SparseArray[{{i_, i_} -> (i - 1) / numfaces, {i_, j_} /; (j - i - 1 == 0) -> (numfaces - (i - 1)) / numfaces}, {numfaces + 1, numfaces + 1}]]];Mean[FirstPassageTimeDistribution[dierolls, 7]]//N公正なコインをはじいたときに,平均して,表裏裏よりも表表裏の方が起るまでに時間がかかる:
proc = DiscreteMarkovProcess[1, {{1 / 2, 1 / 2, 0, 0, 0, 0}, {0, 0, 1 / 2, 1 / 2, 0, 0}, {0, 0, 1 / 2, 0, 1 / 2, 0}, {0, 1 / 2, 0, 0, 0, 1 / 2}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 1}}];Graph[{"Start", "H", "HH", "HT", "HHT", "HTT"}, proc, ImageSize -> Medium]Mean[FirstPassageTimeDistribution[proc, 5]]//NMean[FirstPassageTimeDistribution[proc, 6]]//N粒子が立体の8つの頂点間を対称ランダムウォークで動く.
が最初の頂点,
が対頂点であるとする場合に,以下を計算する:
proc = DiscreteMarkovProcess[1, HypercubeGraph[3]];Graph[proc]Mean[FirstPassageTimeDistribution[proc, 1]]Mean[FirstPassageTimeDistribution[proc, 8]]到達時間の平均を使って,既約過程の期待される全訪問時間を抑制する:
sm = With[{n = 7}, AdjacencyMatrix[CompleteGraph[n]] / (n - 1)];irredproc = DiscreteMarkovProcess[i, sm];MarkovProcessProperties[irredproc, "Irreducible"]With[{numstates = Length[sm]}, With[{maxhittingtime = Max[Outer[Mean[FirstPassageTimeDistribution[DiscreteMarkovProcess[#1, sm], #2]]&, Range[numstates], Range[numstates]]]}, maxhittingtime ≤ Subscript[t, cov] ≤ maxhittingtime * HarmonicNumber[numstates]]]ハッブル宇宙望遠鏡には,6つのジャイロスコープが搭載され,完全な確度を得るためには,そのうちの少なくとも3つが必要である.ジャイロスコープの稼動時間は独立しており,故障率が
の指数分布に従う.4つ目のジャイロスコープが故障すると,望遠鏡はスリープモードに入り,その後の観測が一時的に停止される.望遠鏡がスリープモードに入るには,平均
の指数時間が必要で,スリープモードに入った後は,地球の基地局は休止信号を受け取り,シャトルの飛行任務が準備される.望遠鏡に修理のための乗組員が到着し,ジャイロスコープの安定化ユニットを修繕するまでに,平均
の指数時間がかかる.その間に,残りの2つのジャイロスコープが故障する可能性がある.最後のジャイロスコープが故障すると,望遠鏡はクラッシュする.
,
,
で,すべては逆時間(単位:年)とする:
qm = {{-6λ, 6λ, 0, 0, 0, 0, 0, 0, 0}, {0, -5λ, 5λ, 0, 0, 0, 0, 0, 0}, {0, 0, -4λ, 4λ, 0, 0, 0, 0, 0}, {0, 0, 0, -3λ, 3λ, 0, 0, 0, 0}, {0, 0, 0, 0, -2λ - μ, 2λ, μ, 0, 0}, {0, 0, 0, 0, 0, -λ - μ, 0, μ, λ}, {η, 0, 0, 0, 0, 0, -2λ - η, 2λ, 0}, {η, 0, 0, 0, 0, 0, 0, -λ - η, λ}, {ν, 0, 0, 0, 0, 0, 0, 0, -ν}};With[{vert = {"6", "5", "4", "3", "2", "1", "Sleep2", "Sleep1", "Crash"}}, Graph[vert, ContinuousMarkovProcess[1, qm] /. {ν -> 0}, VertexSize -> {"Scaled", 0.08}, VertexStyle -> Thread[vert -> {StandardGreen, StandardGreen, StandardGreen, StandardGreen, StandardOrange, StandardOrange, StandardBlue, StandardBlue, StandardRed}], GraphLayout -> {"SpringElectricalEmbedding", "Rotation" -> Pi}, ImageSize -> Medium]]proc = ContinuousMarkovProcess[1, qm] /. {λ -> 1 / 10, μ -> 100, η -> 5};CDF[FirstPassageTimeDistribution[proc, 9], 10]//N今後10年間にスリープモードに入る(シャトルの飛行任務が必要になる)ことがない確率を求める:
1 - CDF[FirstPassageTimeDistribution[proc, {7, 8}], 10] /. ν -> 1.特性と関係 (4)
proc = DiscreteMarkovProcess[1, {{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}];Graph[proc]Mean[FirstPassageTimeDistribution[proc, 3]]Variance[FirstPassageTimeDistribution[proc, 3]]非巡回で2つの対角線要素がある遷移速度行列を持つ,連続過程の平均と分散:
dist = FirstPassageTimeDistribution[ContinuousMarkovProcess[1, {{-λ1, λ1, 0}, {0, -λ2, λ2}, {0, 0, 0}}], 3];Mean[dist]Variance[dist]proc = DiscreteMarkovProcess[2, {{1, 0, 0, 0}, {0.45, 0, 0.55, 0}, {0, 0.2, 0, 0.8}, {0, 0, 0, 1}}];Graph[proc]過程が目標状態に達し,状態1に留まったままにならないことが仮定される:
Mean[FirstPassageTimeDistribution[proc, 4]]ExponentialDistributionあるいは他の位相タイプの分布への自動簡約:
FirstPassageTimeDistribution[ContinuousMarkovProcess[1, {{-3, 3}, {0, 0}}], 2]qm = With[{k = 3, la = 5}, Join[RotateRight[PadRight[{-la, la}, k + 1], #]& /@ Range[0, k - 1], {ConstantArray[0, k + 1]}]]FirstPassageTimeDistribution[ContinuousMarkovProcess[1, qm], 4]qm = With[{muvec = {7, 4, 5}}, SparseArray[Flatten@MapThread[{{#1, #1} -> -#2, {#1, Length[muvec] + 1} -> #2}&, {Range[Length[muvec]], muvec}], {Length[muvec] + 1, Length[muvec] + 1}]]FirstPassageTimeDistribution[ContinuousMarkovProcess[{1 / 3, 2 / 3, 0, 0}, qm], 4]qm = With[{alvec = {2 / 3, 1 / 3}, muvec = {5, 1, 3}}, Join[Transpose[Join[Transpose[DiagonalMatrix[-muvec] + ArrayFlatten[{{0, DiagonalMatrix[alvec * Most[muvec]]}, {{{0}}, 0}}]], {muvec PadRight[1 - alvec, Length[muvec], 1]}]], {ConstantArray[0, Length[muvec] + 1]}]]FirstPassageTimeDistribution[ContinuousMarkovProcess[1, qm], 4]関連するガイド
-
▪
- 有限マルコフ(Markov)過程 ▪
- 有限数学
テキスト
Wolfram Research (2012), FirstPassageTimeDistribution, Wolfram言語関数, https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html.
CMS
Wolfram Language. 2012. "FirstPassageTimeDistribution." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html.
APA
Wolfram Language. (2012). FirstPassageTimeDistribution. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html
BibTeX
@misc{reference.wolfram_2026_firstpassagetimedistribution, author="Wolfram Research", title="{FirstPassageTimeDistribution}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_firstpassagetimedistribution, organization={Wolfram Research}, title={FirstPassageTimeDistribution}, year={2012}, url={https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html}, note=[Accessed: 04-November-2026]}