我有一个简单的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;但仍有例外
答案 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只是用花哨的数学来代表“你的功能没有解决方案”。 (实际上它的意思是,“我把你的问题变成了一个等价的最大化问题,而且这个问题没有最大限度,所以我无法帮助你。”)