1

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

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

它抛出异常说雅可比矩阵是奇异的,

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

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

更新:我稍微简化了这个问题。修改为“cdf('normal', X)=0.5”时,无异常运行。

Update2:bounds更新为V>0;但异常仍然存在

4

2 回答 2

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;
于 2011-11-07T19:49:41.117 回答
1

您要求 SAS 解决一个没有解决方案的函数。您要求V>1000使该等式成立的值。但是没有这样的值,因为log(1000/100+1)大约是 3.3,平均值为 0,标准差为 1 的正态随机变量的 CDF 为 0.9995。任何较大的值V只会使函数更接近 1,而不是接近 0.5,因此无法回答您的问题。

通过告诉您偏导数的矩阵是奇异的,SAS 只是使用花哨的数学来表达“您的函数没有解决方案”。(实际上它的意思是,“我已经把你的问题变成了一个等价的最大化问题,而那个问题没有最大值,所以我帮不了你。”)

于 2011-11-05T20:36:33.747 回答