「Nonlinear Example」フォルダにある「Negative Exponential.jmp」サンプルデータでは、「非線形」列の実際の計算式は次のようになっています。
Parameter({b0=0.5, b1=0.5},b0*(1-Exp(-b1*X)))
b0 * First(T#1=1-(T#2=Exp(-b1*X)), T#3=-(-1*T#2*X))
{T#1, T#3*b0}
予測モデルで追加の補助式を計算する必要が生じると、最初の引数式の値を戻す「First」関数が使用され、その他の引数も計算されます。この場合、微分のために追加の割り当てが必要になります。
微分表自体は、あてはめられるパラメータごとに式をまとめたリストです。先ほどの例では、b0についてのモデルの微分はT#1です。予測モデル内でのそのスレッドは1-(Exp(-b1*X))です。b1について微分した式はT#3*b0で、先ほど示した割り当てに代入すると-(1*Exp(-b1*X)*X)*b0となります。いろいろな最適化処理が行われるものの、演算の組み合わせは常に最適とは限りません。たとえば、T#3の式では、二重の負の符号が使われています。
関数の解析的な微分ができないときは、NumDeriv関数を使って数値的な微分が行われます。その場合はプラットフォームに、関数の変化量を計算するために使用するδが表示されます。適切な数値微分を得られるように、いろいろな値のδを試してみる必要があるかもしれません。
If(Y==0, Log(1/(1+Exp (モデル))), Log(1-1/(1+Exp (モデル))));
temp=1/(1+Exp (モデル));
If(Y==0, Log((temp), Log(1-(temp));