Parameter({b0=0.5, b1=0.5},b0*(1-Exp(-b1*X)))
計算式エディタではParameter演算の部分が表示されません。しかし、列にはこの形で保存され、「非線形回帰」起動ダイアログボックスにもこの形で表示されます。「b0」と「b1」という2つのパラメータには初期値が与えられていて、反復計算の初期値として使われます。
「非線形回帰」プラットフォームでは、プラットフォーム用に計算式のコピーが作成され、それが編集されてパラメータが抽出されます。また、パラメータへの参照が、パラメータが推定される個所にマップされます。「非線形回帰」プラットフォームは、予測式をパラメータについて微分した式を内部的に求めます。[微分した式の表示]コマンドを使うと、その微分された式がログに表示されます。
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関数を使って数値的な微分が行われます。その場合はプラットフォームに、関数の変化量を計算するために使用するδが表示されます。適切な数値微分を得られるように、いろいろな値のδを試してみる必要があるかもしれません。
モデルを式で表す方法はたくさんありますが、それらの式の効率は大きく違います。Ratkowsky(1990)は、その著作の中でいろいろな式を比較しています。
If(Y==0, Log(1/(1+Exp (モデル))), Log(1-1/(1+Exp (モデル))));
temp=1/(1+Exp (モデル));
If(Y==0, Log((temp), Log(1-(temp));