xellstorm
JA
アプリを開く

@RISK、ModelRisk、Analytic Solverのモデルを移行する

ガイド · 2026年10月更新

xellstormは、@RISK・ModelRisk・Analytic Solver用に作ったExcelファイルをアドインなしで開き、分布関数164個を読み取ります。該当する数式はそれぞれ入力に変換し、パラメーターはセルにリンクしたままにします。実行前に、変換したものと、変換せずに残した数式をすべて、理由とともに一覧で示します。

164個の関数の内訳は、@RISKが53個、ModelRiskが62個、Analytic Solverが49個です。パーセンタイルで分布を指定する形式が65種類あり、切断、出力マーカー、相関行列、複数シミュレーションの表も読み取ります。

@RISK用のファイルでインポートが見つけるもの

このサンプルは、プロジェクトのコンティンジェンシーの例にある建築工事の見積もりを、@RISKで作ったモデルと同じ書き方にしたものです。各コスト項目は、その行のセルを使った =RiskPert(min, most likely, max, RiskName(label))、各リスクイベントは確率のセルを使った RiskBernoulli です。総コストと超過額には RiskOutput を付け、躯体とMEPは RiskCorrmat で相関させ、3通りの予算は1つの RiskSimtable に入れ、1つのセルには総コストの RiskMean を置いています。2枚目のDemonstrationsシートには、個別の数式が5つあります。変換できる算術式が2つ、変換できない数式が3つです。ファイルはスクリプトで作りました。xellstormが読み取るのに@RISKは要りません。ダウンロードして試すときも同じです。

アプリでは、「Distributions」ステップのImport from workbookを押すと、見つかった数式が一覧に出ます(コマンドラインの xellstorm import も同じ一覧を表示します)。このファイルでは12個の入力に変換されます。内訳は、コスト項目6個、リスクイベント4個、算術デモ2個です。コスト項目とリスクイベントはパラメーターがセルにリンクしたままなので、ファイル側で最小値や確率を書き換えると、次の実行に反映されます。RiskName(A3) は、その行のテキストを各入力の名前にします。変換される算術デモの2つは、正規分布の引きに係数を掛けたものと、平均を別のセルから計算するものです。どちらも、見積もりの出力には使っていません。

Excelファイルでインポートが変換するもの(リンクされたセルは括弧内に、保持している値とともに表示)
セルExcelファイルの数式変換結果
E3=RiskPert(B3,C3,D3,RiskName(A3))敷地工事:最小B3(100)、最頻C3(120)、最大D3(170)のPERT分布
E4=RiskPert(B4,C4,D4,RiskName(A4))基礎:最小B4(300)、最頻C4(340)、最大D4(460)のPERT分布
E5=RiskPert(B5,C5,D5,RiskName(A5),RiskCorrmat(Correlation,1))躯体:最小B5(760)、最頻C5(820)、最大D5(1,010)のPERT分布
E6=RiskPert(B6,C6,D6,RiskName(A6),RiskCorrmat(Correlation,2))MEP:最小B6(540)、最頻C6(610)、最大D6(780)のPERT分布
E7=RiskPert(B7,C7,D7,RiskName(A7))仕上げ:最小B7(400)、最頻C7(450)、最大D7(560)のPERT分布
E8=RiskPert(B8,C8,D8,RiskName(A8))設備機器:最小B8(260)、最頻C8(280)、最大D8(330)のPERT分布
D11=RiskBernoulli(B11,RiskName(A11))地盤条件:確率B11(0.25)のベルヌーイ分布
D12=RiskBernoulli(B12,RiskName(A12))設計変更:確率B12(0.35)のベルヌーイ分布
D13=RiskBernoulli(B13,RiskName(A13))納入遅延:確率B13(0.2)のベルヌーイ分布
D14=RiskBernoulli(B14,RiskName(A14))悪天候:確率B14(0.3)のベルヌーイ分布
Demonstrations!B3=RiskNormal(100,10)*1.1平均100、標準偏差10の正規分布。引いた値を1.1倍します。デモ用で、見積もりでは使いません
Demonstrations!B4=RiskNormal(Estimate!C3*1.1,10)平均Estimate!C3*1.1(132)、標準偏差10の正規分布。デモ用で、見積もりでは使いません

同じインポートで、モデルの残りの部分も読み取ります。

変換できない数式も一覧に出ます。2枚目のシートにある3件にはすべて、インポートが示す理由が付き、それぞれに対処方法があります。

インポートが変換しないもの。理由は、ExcelファイルのDemonstrationsシートに載っています
数式示される理由対処
=RiskBinomial(1,0.3)*RiskTriang(20,40,80)1つの数式に複数の分布があるものは変換されません。分布ごとに専用の入力セルを用意してください分割します。リスクが発生するかどうかを =RiskBernoulli(0.3) のセルに、影響額を =RiskTriang(20,40,80) のセルに入れ、3つ目のセルで掛け合わせます。見積もりのリスクイベントと同じ方法です。
=RISKCOMPOUND(RiskPoisson(3),RiskLognorm(10,3))RISKCOMPOUNDにそのまま対応するxellstormの機能はありませんxellstormには複合分布がありません。件数と規模を別々のセルでモデル化するか、そのセルをモデルから外してください。
=RISKPERTALT(10%,90,"m.likely",100,90%,130)RISKPERTALTにそのまま対応するxellstormの機能はありませんPERTの最小・最頻・最大を入力する(RiskPert)か、変換できる RiskTrigen にパーセンタイルを指定してください。

変換したモデルを実行する

インポートした設定で5,000回の試行を実行すると、総コストの平均は2,784.7(USD千)です。同じ分布から理論上求まる平均は2,784.7で、PERTの平均(最小+4×最頻+最大)/ 6に、各リスクの確率×影響額を足したものです。シミュレーションの平均の標準誤差は1.7。躯体とMEPの順位相関は0.60に達します。RiskSimtableの3通りの予算を、基準と2つのシナリオとして実行した結果です。

インポートしたモデルの実行結果:総コストがRiskSimtableの各予算を超える確率(5,000回の試行、USD千)
実行予算超過する確率
基準の実行(シミュレーション1)2,90017.7%
Simulation 23,0005.2%
Simulation 33,1000.7%

予算が大きいほど、超過する確率は下がります。シナリオは基準の実行と同じ乱数を使うので、行どうしの差はサンプリングではなく、予算の違いだけから来ています。

アドインと同じ結果になりますか?

モデルは同じですが、乱数は同じではありません。インポートの各ルールは、関数を、その関数が表す分布に対応づけます。パラメーターはベンダーの文書どおりに変換し、scipyの同等の分布と照合してテストしています。テストデータを作るスクリプトでも、各対応の平均をベンダーが文書化した式と照らし合わせています。ファイル内のすべての分布が変換できれば、平均とパーセンタイルがアドインとずれるのはサンプリングノイズの分だけで、試行回数を増やすほど小さくなります。平均のずれの目安は、上の標準誤差です。

相関は、@RISKやAnalytic Solverの定義と同じ順位相関で、xellstormは指定した順位相関に到達します。ただし、その順位相関にするための乱数の組み合わせ方はツールごとに違います。相関のあるモデルでは、裾の差がサンプリングノイズだけで説明できる範囲より少し大きくなることがあります。Excelファイル自体は書き換えません。xellstormはファイルを読み取るだけなので、モデルはこれまでどおりアドインで開けます。

変換されるもの

変換されないもの

1つのセルに分布が複数ある場合、分布が別の関数の中や分母にある場合、分布を直接割る場合、演算の順序を入れ替えないと成り立たない連鎖は、変換できません。たとえば (RiskNormal(0,1)+5)*2 と RiskNormal(0,1)*2*3 は、理由を付けて残します。RiskNormal(0,1)*(1/C1) は、C1が有限の正の乗数になるなら変換できます。数式が掛ける前に逆数を明示的に計算しているためです。次のものも未対応のままです。計算結果がゼロ以下になる乗数、関数を呼び出す引数や乱数セルに依存する引数、そのまま対応する分布がない関数(複合分布、時系列関数、RiskPertAlt をはじめ、形状パラメーターを2つ持つパーセンタイル形式)、ModelRiskのU引数とコピュラ、表にないプロパティ。未対応のアドインの数式は、エンジンで計算できません。互換性チェックがそのセルを示します。

対応する関数

表は、インポートのルール一覧からそのまま作っているので、変換できるものと完全に一致します。「パーセンタイル」は、パーセンタイルで分布を指定する形式を示します。†は、数値のみで変換できる関数です。各分布の下に、xellstormの設定での名前を示します。

インポートが変換する分布関数(分布別。†は数値のみで変換:パラメーターは引数から計算)
分布 (xellstormでの名前)@RISKModelRiskAnalytic Solver
ベルヌーイ
bern
RiskBernoulliVoseBernoulliPsiBernoulli
ベータ
beta
RiskBeta
RiskBetaGeneral
RiskBetaSubj†
VoseBeta
VoseBeta4
VoseBetaSubj†
PsiBeta
PsiBetaGen
PsiBetaSubj†
二項
binom
RiskBinomialVoseBinomialPsiBinomial
Burr XII
burr12
RiskBurr12——
コーシー
cauchy
RiskCauchy
パーセンタイル:
RiskCauchyAlt
RiskCauchyAltD
VoseCauchy—
カイ二乗
chi2
RiskChiSq
パーセンタイル:
RiskChiSqAlt
RiskChiSqAltD
VoseChiSqPsiChiSquare
パーセンタイル:
PsiChiSquareAlt
カイ、マクスウェル
chi
—VoseChi
VoseMaxwell
—
累積
cumul
RiskCumul
RiskCumulD†
VoseCumulA
VoseCumulD†
VoseOgive†
PsiCumul
Dagum(Burr III)
burr
RiskDagumVoseDagumPsiDagum
離散
custom
RiskDiscrete
RiskDUniform
VoseDiscrete
VoseDUniform
PsiDiscrete
PsiDisUniform
指数
expon
RiskExpon
パーセンタイル:
RiskExponAlt
RiskExponAltD
VoseExpon
VoseExponential
PsiExponential
パーセンタイル:
PsiExponentialAlt
極値(最大、ガンベル)
gumbel_r
RiskExtValue
パーセンタイル:
RiskExtValueAlt
RiskExtValueAltD
VoseExtValueMaxPsiMaxExtreme
パーセンタイル:
PsiMaxExtremeAlt
極値(最小)
gumbel_l
RiskExtValueMin
パーセンタイル:
RiskExtValueMinAlt
RiskExtValueMinAltD
—PsiMinExtreme
パーセンタイル:
PsiMinExtremeAlt
F
f
RiskFVoseFPsiFDist
疲労寿命(バーンバウム=サンダース)
fatiguelife
RiskFatigueLife
パーセンタイル:
RiskFatigueLifeAlt
RiskFatigueLifeAltD
VoseFatiguePsiFatigueLife
パーセンタイル:
PsiFatigueLifeAlt
フレシェ
invweibull
RiskFrechet
パーセンタイル:
RiskFrechetAlt
RiskFrechetAltD
—PsiFrechet
パーセンタイル:
PsiFrechetAlt
ガンマ、アーラン
gamma
RiskGamma
RiskErlang
パーセンタイル:
RiskGammaAlt
RiskGammaAltD
VoseGamma
VoseErlang
PsiGamma
PsiErlang
パーセンタイル:
PsiGammaAlt
一般(相対重み)
general
RiskGeneralVoseRelative—
一般化パレート
genpareto
—VoseGPD—
ヒストグラム
histogram
RiskHistogrmVoseHistogramPsiHistogram
双曲線正割
hypsecant
RiskHypSecant
パーセンタイル:
RiskHypSecantAlt
RiskHypSecantAltD
VoseHSPsiHypSecant
超幾何
hypergeom
RiskHypergeoVoseHypergeoPsiHyperGeo
整数一様
randint
RiskIntUniformVoseIntUniform
VoseStepUniform†
PsiIntUniform
逆ガウス
invgauss
RiskInvgauss
パーセンタイル:
RiskInvgaussAlt
RiskInvgaussAltD
VoseInvGaussPsiInvNormal
ジョンソンSB
johnsonsb
RiskJohnsonSBVoseJohnsonBPsiJohnsonSB
ジョンソンSU
johnsonsu
RiskJohnsonSUVoseJohnsonUPsiJohnsonSU
クマラスワミー
kumaraswamy
RiskKumaraswamyVoseKumaraswamy
VoseKumaraswamy4
PsiKumaraswamy
ラプラス
laplace
RiskLaplace
パーセンタイル:
RiskLaplaceAlt
RiskLaplaceAltD
VoseLaplace—
レヴィ
levy
RiskLevy
パーセンタイル:
RiskLevyAlt
RiskLevyAltD
VoseLevyPsiLevy
パーセンタイル:
PsiLevyAlt
対数ロジスティック
fisk
RiskLogLogistic
パーセンタイル:
RiskLogLogisticAlt
RiskLogLogisticAltD
VoseLogLogisticPsiLogLogistic
パーセンタイル:
PsiLogLogisticAlt
ロジスティック
logistic
RiskLogistic
パーセンタイル:
RiskLogisticAlt
RiskLogisticAltD
VoseLogisticPsiLogistic
パーセンタイル:
PsiLogisticAlt
対数正規
lognorm
RiskLognorm
RiskLognorm2
パーセンタイル:
RiskLognormAlt
RiskLognormAltD
VoseLognormal
VoseLognormalE
PsiLogNormal
PsiLognorm
PsiLognorm2
パーセンタイル:
PsiLogNormalAlt
負の二項、幾何
nbinom
RiskGeomet
RiskNegbin
VoseGeometric
VoseNegBin
VoseNegBinom
VosePolya†
PsiGeometric
PsiNegBinomial
正規
norm
RiskNormal
RiskErf†
パーセンタイル:
RiskNormalAlt
RiskNormalAltD
VoseNormal
VoseErf†
PsiNormal
PsiErf†
パーセンタイル:
PsiNormalAlt
パレート
pareto
RiskPareto
パーセンタイル:
RiskParetoAlt
RiskParetoAltD
VoseParetoPsiPareto
パーセンタイル:
PsiParetoAlt
パレートII(ロマックス)
lomax
RiskPareto2
パーセンタイル:
RiskPareto2Alt
RiskPareto2AltD
VosePareto2PsiPareto2
パーセンタイル:
PsiPareto2Alt
ピアソンV(逆ガンマ)
invgamma
RiskPearson5
パーセンタイル:
RiskPearson5Alt
RiskPearson5AltD
VosePearson5PsiPearson5
パーセンタイル:
PsiPearson5Alt
ピアソンVI(ベータプライム)
betaprime
RiskPearson6VosePearson6PsiPearson6
PERT
pert
RiskPertVosePERT
VoseModPERT
PsiPert
ポアソン
poiss
RiskPoissonVosePoissonPsiPoisson
レイリー
rayleigh
RiskRayleigh
パーセンタイル:
RiskRayleighAlt
RiskRayleighAltD
VoseRayleighPsiRayleigh
パーセンタイル:
PsiRayleighAlt
逆数(対数一様)
loguniform
RiskReciprocalVoseReciprocalPsiReciprocal
スチューデントのt
t
RiskStudent
パーセンタイル:
RiskStudentAlt
RiskStudentAltD
VoseStudent
VoseStudent3†
PsiStudent
パーセンタイル:
PsiStudentAlt
三角
triang
RiskTriangVoseTrianglePsiTriangular
パーセンタイルによる三角(Trigen)
trigen
RiskTrigen
パーセンタイル:
RiskTriangAlt
VoseTriangleAltPsiTriangGen
一様
unif
RiskUniform
パーセンタイル:
RiskUniformAlt
RiskUniformAltD
VoseUniformPsiUniform
ワイブル
weibull_min
RiskWeibull
パーセンタイル:
RiskWeibullAlt
RiskWeibullAltD
VoseWeibull
VoseWeibull3
PsiWeibull
パーセンタイル:
PsiWeibullAlt
インポートが変換するExcel標準のサンプリング数式(†は数値のみ)
数式xellstorm
=NORM.INV(RAND(), mean, sd)norm (loc, scale)
=NORMINV(RAND(), mean, sd)norm (loc, scale)
=mean + sd*NORM.S.INV(RAND())norm (loc, scale)
=LOGNORM.INV(RAND(), mu, sigma)lognorm (mu, sigma)
=LOGINV(RAND(), mu, sigma)lognorm (mu, sigma)
=GAMMA.INV(RAND(), alpha, beta)gamma (a, scale)
=GAMMAINV(RAND(), alpha, beta)gamma (a, scale)
=BETA.INV(RAND(), alpha, beta)beta (a, b)
=BETA.INV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BETAINV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BINOM.INV(n, p, RAND())binom (n, p)
=CRITBINOM(n, p, RAND())binom (n, p)
=RANDBETWEEN(a, b)randint (min, max)
=a + (b - a)*RAND()unif (min, max)
=a + s*RAND()unif (loc, scale)
=RAND()unif
=IF(RAND() < p, 1, 0)bern (p)
=IF(RAND() < p, x, y)†custom (x, prob)
インポートが読み取るプロパティ関数、マーカー、統計関数
関数アドインxellstormでの扱い
RiskTruncate@RISK切断:truncate_min、truncate_max(シフトの前)
RiskTruncate2@RISK切断:シフト後の値で指定した truncate_min、truncate_max(シフト分だけ戻して設定)
RiskTruncateP@RISK切断:truncate_pmin、truncate_pmax(分布のパーセンタイル)
RiskShift@RISKシフト:shift
RiskName@RISK名前:入力の名前
RiskLock@RISKロック:固定値(RiskLock(v)、またはRiskStaticの値)
RiskCorrmat@RISK相関:1つの行列にある入力どうしの順位相関
RiskDepC@RISK相関:同じペア名の入力との順位相関
RiskIndepC@RISK相関:同じペア名の入力との順位相関
RiskSimtable@RISKシミュレーションごとの値:基準の実行では固定セル、以降のシミュレーション1つにつきシナリオ1つ
RiskOutput@RISK出力:指定した名前の出力
VoseXBoundsModelRisk切断:truncate_min、truncate_max(シフトの前)
VosePBoundsModelRisk切断:truncate_pmin、truncate_pmax(分布のパーセンタイル)
VoseShiftModelRiskシフト:shift
VoseInputModelRisk名前:入力の名前
VoseSimTableModelRiskシミュレーションごとの値:基準の実行では固定セル、以降のシミュレーション1つにつきシナリオ1つ
VoseOutputModelRisk出力:指定した名前の出力
PsiTruncateAnalytic Solver切断:タイプ1(既定):シフトの前に truncate_min、truncate_max。-1:シフト後の値で指定。3:truncate_pmin、truncate_pmax
PsiTruncatePAnalytic Solver切断:truncate_pmin、truncate_pmax(分布のパーセンタイル)
PsiShiftAnalytic Solverシフト:shift
PsiNameAnalytic Solver名前:入力の名前
PsiCorrMatrixAnalytic Solver相関:1つの行列にある入力どうしの順位相関
PsiCorrDepenAnalytic Solver相関:同じペア名の入力との順位相関
PsiCorrIndepAnalytic Solver相関:同じペア名の入力との順位相関
PsiSimParamAnalytic Solverシミュレーションごとの値:基準の実行では固定セル、以降のシミュレーション1つにつきシナリオ1つ
PsiOutputAnalytic Solver出力:そのセル自体、または参照先のセルが出力になります
PsiSimOutputAnalytic Solver出力:そのセル自体、または参照先のセルが出力になります
PsiMeanAnalytic Solver統計関数:最初の引数のセルが出力になります(出力に使うPsiの統計関数はすべて同様)

よくある質問

@RISK、ModelRisk、Analytic Solverのインストールは必要ですか?

いいえ。xellstormは.xlsxファイルから直接数式を読み取り、Excelもアドインも使わず、ブラウザー内の独自エンジンでモデルを計算します。.xlsや.xlsbのファイルは、先に.xlsxとして保存してください。

xellstormはExcelファイルを書き換えますか?

いいえ。インポートは、数式をxellstorm側の設定の入力に変換するだけです。パソコン上のファイルには書き込まないので、モデルはこれまでどおりアドインで開いて実行できます。

相関行列はどうなりますか?

RiskCorrmat または PsiCorrMatrix の同じ範囲を指す入力には、インポート時にセルから読み取った行列の順位相関が設定されます。RiskDepC と PsiCorrDepen は、入力を同じ名前の入力と組にします。読み取れない組(正方でない行列、行列の外の位置、数値のないセル)は、インポートの注記に名前が出ます。変換できなかった入力は理由とともに一覧に載り、組からは外れます。行列が有効な相関行列でない場合、xellstormは最も近い有効な行列に置き換え、アプリが実行前にその行列を表示します。

RiskSimtableはどうなりますか?

最初の値は基準の実行でそのセルに入り、2番目以降の値はそれぞれシナリオになります。名前は Simulation 2、Simulation 3、…です。シナリオは基準の実行と同じ乱数を使うので、シナリオ間の違いは表の値だけから来ています。

@RISK、ModelRisk、Analytic Solverは、それぞれの所有者の商標です。xellstormはこれらと提携関係になく、関数名は、xellstormが読み取る内容を示すためだけに載せています。

関連ページ

xellstormは、Excelモデル向けのブラウザー型モンテカルロシミュレーションツールです。アドインは不要で、Excelファイルがパソコンの外に出ることはありません。