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:境界が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 であるため、そのような値はありません。3.3 で評価された平均 0、標準偏差 1 の正規確率変数の CDF は 0.9995 です。の値を大きくVすると、関数は 0.5 ではなく 1 に近づくだけなので、質問に対する答えはありません。

偏導関数の行列が特異であると伝えることで、SASは「あなたの関数には解がありません」という派手な数学を使用しているだけです。(実際には、「あなたの質問を同等の最大化問題に変えましたが、その問題には最大値がないため、あなたを助けることはできません.」ということです。)

于 2011-11-05T20:36:33.747 に答える