@RISK · 2022年4月2日

@RISK 如何调整无效的相关矩阵

适用于:   @RISK 4.x–7.x

@RISK 如何确定我的相关矩阵是否有效?如果矩阵无效,@RISK 如何调整它以创建有效矩阵?

如果相关矩阵是自洽的,则相关矩阵是有效的,这意味着指定的系数是相互兼容的。请参阅@RISK 如何测试相关矩阵的有效性。

当您单击Start Simulation时,@RISK 检查所有相关矩阵的有效性。如果矩阵无效,@RISK 会查找调整权重矩阵(见下文),如果存在调整权重矩阵,@RISK 会使用它调整无效的相关矩阵,然后继续进行模拟。但如果没有调整权重矩阵,@RISK 会显示以下消息:

Warning
The correlation matrix at … is not self-consistent. @RISK can generate the closest self-consistent matrix.  OK generates a corrected matrix and continues, Cancel stops the simulation.

如果您想自行调整矩阵或创建调整权重矩阵,请单击取消。这通常是一个好主意,因为在没有调整权重矩阵的情况下,@RISK 可能会使您的相关系数发生相当大的变化。

如何设置和使用调整权重矩阵?

此功能在@RISK 5.5 和更新版本中可用。

您可以创建一个调整权重矩阵来指导@RISK 调整相关性。调整矩阵是一个与相关矩阵大小相同的三角矩阵;方阵也是可以接受的,只要它是对称的。

在您的调整权重矩阵中,在对角线下方的每个单元格中输入 0 到 100 的权重。权重为 100 表示不得更改相应的系数,而权重为 0 表示您不在乎@RISK 更改了相应的系数多少。在 0 到 100 之间,权重越大,原始系数越重要。换言之,较大的权重导致@RISK 对相应相关系数应用较少的调整,而较小的权重让@RISK 更多地调整相应的相关系数。

可以在模拟期间或在模拟前的一次性程序中进行调整。下面解释这两种可能性。

技术细节:您的相关矩阵不是自洽的,这意味着它具有一个或多个负特征值。您希望@RISK 找到一个尽可能接近原始不一致矩阵的一致矩阵,同时考虑您的调整权重矩阵。这是一个非线性优化问题。目标是最小化不一致矩阵和候选一致矩阵之间的平方差的加权和。@RISK 使用标准的有限内存 BFGS 算法来执行此优化。

如上所述,权重在 0 到 100 的范围内。在这些特殊权重之间,其他权重以指数方式处理。确切的细节是专有的,但 50 对 25 或 10 对 5 意味着“更重要”,而不是“两倍重要”。

在模拟期间校正矩阵:

您的调整权重矩阵的名称必须与相关矩阵的范围名称匹配,并带有后缀 _Weights。例如,如果您的相关矩阵命名为 Matrix1,则关联的调整权重矩阵必须命名为 Matrix1_Weights。如果相关矩阵不一致,@RISK 会查找具有正确名称的调整权重矩阵,如果找到,它将调整不一致的矩阵而不显示任何消息。您可以通过突出显示其单元格然后在 Excel 编辑栏左侧的名称框中键入其名称来命名矩阵。或者,单击公式»定义名称。(在 Excel 2003 及更早版本中,单击插入»名称»定义。)

请参阅随附的示例 KB75_AdjustDuringEverySimulation.xlsx。

当@RISK 在模拟期间调整无效矩阵时,它不会将调整后的矩阵存储在您的工作簿或任何永久位置中。@RISK 将调整后的矩阵缓存在您的临时文件夹中,名为 CORRMAT.MTX 的文件中。如果您没有更改原始矩阵,它将在未来的模拟中重用该文件。

在模拟之外校正矩阵:

您可以预先进行调整,而不是让@RISK 在每次模拟中都进行调整。如果您有一个很大的相关矩阵,这可能会影响您的模拟速度。使用 RiskCorrectCorrmat( ) 数组函数将校正后的矩阵放置在工作表中,并使所有相关输入引用校正后的矩阵,而不是原始矩阵。使用这种方法,您可以为调整权重矩阵指定任何名称或不指定名称。

请参阅随附的示例 KB75_RiskCorrectCorrmat.xlsx。

当 RiskCorrectCorrmat( ) 函数对大矩阵执行调整时,可能需要相当长的时间。您将在 Excel 的状态行上看到消息,指的是步数(尝试的候选有效矩阵的数量)和残差(差的平方和)。@RISK 保持优化,直到残差停止充分减少。不幸的是,无法知道需要多少步骤,因此@RISK 无法以完成百分比的形式为您提供进度指示器。

如果我不使用调整权重矩阵怎么办?

如果您正在运行 @RISK 4.x 或 5.0,或者如果您正在运行更高版本但未指定调整权重矩阵,@RISK 将按照以下步骤修改无效的相关矩阵:

找到最小的特征值 (E o )

要移动特征值以使最小特征值等于 0,请从相关矩阵 (C) 中减去 E o 和单位矩阵 (I) 的乘积。

C’ = C – E o I

矩阵的特征向量不会因这种移位而改变。

将新矩阵除以 1 – E o 使对角项等于 1。

C” = (1/(1−E o )) C’

@RISK 通过这种方法计算的矩阵是半正定矩阵,因此是有效的,但绝不是特殊的或最优的。它是许多可能的有效矩阵之一,其中的一些系数可能与您的原始系数完全不同。

@RISK 将新矩阵存储在临时文件夹中的文件 CORRMAT.MTX 中。您可以将其用作修改矩阵的指南,这样@RISK 就无需在每次运行模拟时对其进行调整。请参阅@RISK 如何测试相关矩阵的有效性以确保您编辑的矩阵是自洽的。

附加关键字:   CorrectCorrmat 函数

下载

KB75_AdjustDuringEverySimulation.xlsx

KB75_RiskCorrectCorrmat.xlsx