是什么原因导致“雅可比矩阵”在SAS中变得奇异?

时间:2011-11-05 19:44:01

标签: debugging sas singular

我有一个简单的SAS(版本9.2)程序,如下所示,

proc model;
cdf('normal',log(V/100)+1)=0.5;
bounds V>0;
solve V/solveprint;
run;

抛出异常,说jacobian矩阵是单数,

The Newton method Jacobian matrix of partial derivatives of the
equations with respect to the variables to be solved is singular.

出现此错误的可能原因是什么?

更新:我稍微简化了问题。当修改为" cdf('普通',X)= 0.5"时,它无一例外地工作。

Update2:边界更新为V> 0;但仍有例外

2 个答案:

答案 0 :(得分:3)

您传递给proc模型的输入数据集是什么?例如,此代码一致地工作:

data a;
 v=100;
run;

proc model data=a;
  cdf('normal',log(V/100)+1) = 0.5;
  bounds V>0;
  solve V / solveprint;
run;
quit;

并提供V=36.78794

的解决方案

但稍微改变输入数据(见下文)将始终给出奇异的雅可比矩阵误差。

data a;
 v=0.00001;
run;

proc model data=a;
  cdf('normal',log(V/100)+1) = 0.5;
  bounds V>0;
  solve V / solveprint;
run;
quit;

答案 1 :(得分:1)

您要求SAS解决没有解决方案的功能。您要求V>1000的值使该等式成立。但是没有这样的值,因为log(1000/100+1)约为3.3,并且在3.3处评估的均值0和标准差1的正常随机变量的CDF是0.9995。任何较大的V值都会将函数移近1,而不是0.5,因此您的问题没有答案。

通过告诉你偏导数矩阵是奇异的,SAS只是用花哨的数学来代表“你的功能没有解决方案”。 (实际上它的意思是,“我把你的问题变成了一个等价的最大化问题,而且这个问题没有最大限度,所以我无法帮助你。”)