ITパスポート 2015年 春期 問27
問題文
解を求めるのにシミュレーションを適用する例として、最も適したものはどれか。
選択肢
ア:PERTで示されたプロジェクトの全作業における作業ごとの作業時間と作業間の順序関係から、最短のプロジェクト期間を求める。
イ:購入累積金額、直近の購入日、購入頻度から、ダイレクトメールを送付する顧客を抽出する。
ウ:商品ごとの過去10年間の年間販売実績額と今後の商圏人口変化の予測パターンから、向こう3年間の販売予測額を求める。(正解)
エ:複数の機械の平均故障発生時間間隔と平均修理所要時間、修理担当者数を算出式に入力して、平均修理待ち時間を求める。
🔒 解説は解答すると表示されます
解を求めるのにシミュレーションを適用する例【ITパスポート 解説】
正解の理由
商品ごとの過去10年間の年間販売実績と今後の商圏人口変化の予測パターンから、向こう3年間の販売予測額を求める選択肢が最もシミュレーションに適しています。理由は、過去実績や人口変動には不確実性(ばらつき)があり、複数の予測パターンや確率分布を反映して将来の分布(平均だけでなく上下のばらつきや確率)を得たい場面だからです。ここではシナリオを多数回ランダムに発生させて統計的な結果(例:中央値、95%区間)を出す「モンテカルロシミュレーション(Monte Carlo simulation)」が典型的に使われます。したがって ウ が適切です。
解法ステップ
-
「この問題がシミュレーション向きか」を判定する
- 将来の値にランダム性(不確実性)があるか?
- 入力変数が複数あり、相互作用や非線形性で解析が難しいか?
→ 両方当てはまればシミュレーションが有効です。
-
モデル化する
- 過去10年の販売データから季節性やトレンド、ばらつき(分散)を推定する。
- 商圏人口変化を確率的なパターン(例:高成長、中位、低成長の確率)で表す。
-
シミュレーション手法を選ぶ
- モンテカルロ(確率変数を乱数で多数回サンプリング)やエージェントベースなど状況に応じて選択。
-
実行して結果を集計する
- 何千回・何万回と試行して、平均・中央値・分位点(例:95%信頼区間)を求める。
-
判断材料として使う
- 得られた分布を基に在庫計画や販売戦略を立てる。リスク(下振れ)の確率も把握できる。
選択肢別の誤答解説
-
ア: PERTで示されたプロジェクトの全作業における作業ごとの作業時間と作業間の順序関係から、最短のプロジェクト期間を求める。
- PERT(Program Evaluation and Review Technique:プロジェクト評価・審査技法)は活動の順序と時間からクリティカルパス(最短完了時間)を決める手法です。多くは決定論的に計算でき、シミュレーションは必須ではありません(ただし、活動時間に不確実性があり分布を扱う場合は別途モンテカルロで確率的評価することもありますが、問題文の記述は基本的解析向きです)。
-
イ: 購入累積金額、直近の購入日、購入頻度から、ダイレクトメールを送付する顧客を抽出する。
- これはルールベースのスコアリングや顧客セグメンテーション(例:RFM分析)で対応でき、シミュレーションで得られる利点が小さいです。むしろデータ分析/条件判定の問題です。
-
エ: 複数の機械の平均故障発生時間間隔と平均修理所要時間、修理担当者数を算出式に入力して、平均修理待ち時間を求める。
- キューイング理論(待ち行列理論、queuing theory)は平均待ち時間などを解析式で求められるケースが多く、特に単純な到着/サービス分布(例:ポアソン到着、指数分布のサービス:M/M/cモデル)なら閉形式で計算できます。複雑な構成や非指数分布の場合はシミュレーションが役立ちますが、選択肢の記述は解析式適用の方が自然です。
よくある誤解
- シミュレーションは「乱数を入れれば何でも良くなる」わけではない。
- モデル化(入力分布の選定、相関の扱い)が不適切だと誤った結論になる。
- 「解析的に解けない=すぐシミュレーション」ではない。
- 単純な解析式で十分な場合は、解析の方が速くて解釈もしやすい。
- シミュレーション結果の平均だけ見て安心してはいけない。
- 分布の幅(リスク)や極端値の確率も確認する必要があります。
補足コラム:主なシミュレーション手法と使い分け
- モンテカルロシミュレーション(Monte Carlo)
- 変数に確率分布を設定し、乱数で多数回サンプリングして出力の分布を見る。需要予測や投資リスク評価で幅広く使われます。
- 離散事象シミュレーション(Discrete-event simulation)
- 時間の経過とイベント(到着、故障、修理など)を追う。製造ラインや待ち行列の詳細な挙動解析に向きます。
- エージェントベースシミュレーション(Agent-based)
- 多数の主体(顧客や店舗など)それぞれのルールに基づき相互作用をシミュレート。複雑な社会現象やマーケット行動に有効。
簡単な例(イメージ): 商品Aの来年売上 = 過去平均 × (1 + 人口変化率) × ランダム要因
Pythonでモンテカルロの簡単な例を示します(初学者向けのイメージコードです)。
Pythonでモンテカルロの簡単な例を示します(初学者向けのイメージコードです)。
import numpy as np
np.random.seed(0)
years = 3
runs = 10000
past_mean = 1000 # 過去の年間平均売上
pop_change_mean = 0.01 # 年率平均人口変化(+1%)
pop_change_std = 0.02 # ばらつき
results = []
for _ in range(runs):
sales = past_mean
for _ in range(years):
pop_change = np.random.normal(pop_change_mean, pop_change_std)
random_factor = np.random.normal(1.0, 0.05) # 需要のばらつき
sales = sales * (1 + pop_change) * random_factor
results.append(sales)
results = np.array(results)
print("中央値:", np.median(results))
print("95%下限(2.5%):", np.percentile(results, 2.5))
print("95%上限(97.5%):", np.percentile(results, 97.5))
FAQ
Q1: すべての「将来予測」にシミュレーションは必要ですか?
A1: いいえ。単純な線形予測や解析式で十分な場合は不要です。シミュレーションは不確実性が大きく、複数の確率要因や非線形性がある場合に有効です。
A1: いいえ。単純な線形予測や解析式で十分な場合は不要です。シミュレーションは不確実性が大きく、複数の確率要因や非線形性がある場合に有効です。
Q2: キューイング理論(待ち行列)では本当に解析で解けるのですか?
A2: 単純なモデル(ポアソン到着と指数サービスなど)では解析式(例:M/M/1, M/M/c)が存在します。ただし複雑なサービス時間分布やネットワーク構成ではシミュレーションが必要になることがあります。
A2: 単純なモデル(ポアソン到着と指数サービスなど)では解析式(例:M/M/1, M/M/c)が存在します。ただし複雑なサービス時間分布やネットワーク構成ではシミュレーションが必要になることがあります。
Q3: シミュレーション結果の信頼性はどう確認しますか?
A3: 入力分布の妥当性を検証する、乱数試行回数を増やして結果が安定するか確認する、過去データでバックテストする、などで信頼性を評価します。
A3: 入力分布の妥当性を検証する、乱数試行回数を増やして結果が安定するか確認する、過去データでバックテストする、などで信頼性を評価します。
関連キーワード: シミュレーション、モンテカルロ、確率モデル、需要予測、キューイング理論、PERT、意思決定支援

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

