関数のパラメータ推定について
http://bekkoame.okwave.jp/qa2595561.htmlで質問させて頂いた者です。
y = γ / (1 + exp(α + β * x))という関数において,パラメータγ,α,βを推定したいのですが,初期値の設定がうまくいかなくて困っております。要するに初期値の探し方を教えて欲しいのです。
この関数からγ / y -1 = exp(α - β * x)という式が導けます。ここで両辺の自然対数をとると,
log(γ / y - 1) = α - β * x
となります。ここでY = log(γ / y - 1)とするとY = α - β * xとなって,これは線形モデルなので最小二乗法によって簡単にαとβの値が求められます。今回の場合だと得られているデータは,
x=[54,57,60,63,66,69,72]
y=[0,1,2,5,8,9,10]
なので,とりあえずγ=11と仮定して計算すると結局は
Y = [*, 2.30, 1.50, 0.18, -0.98, -1.50, -2.30]
となります(*はうまく計算できないので無視)。最終的にYのデータからY(ハット) = -0.949 * x + 3.1883という式が得られます。以前の質問でも補足しましたが,Rというデータ解析用のソフトウェアを使うと,
nls(y ~ gamma / ( 1 + exp(alpha + beta * x)),start = c(gamma = 11,alpha = 3.1883,beta = -0.949))
とするのですが,これは要するにy ~ gamma / ( 1 + exp(alpha + beta * x))の部分がモデル式,start = c(gamma = 11,alpha = 3.1883,beta = -0.949)の部分が初期値を設定する部分です。yとxという変数には上に記したように得られたデータがベクトルとして格納されています。
以上,説明が長くなってしまいましたが,今回のようにx=[54,57,60,63,66,69,72]となっていると,初期値が悪いとのエラーが出て計算ができません。これをx=[1,2,3,4,5,6,7]としてやるとうまくいきます。だから平行移動させるために前回のような質問をしたのですが、、、(ちょっと文字数に制限があるので意味不明だったら補足します)
お礼
ありがとうございます。 rなら式変形せずにできる方法があるかなと思いましたがありませんよね。 いくつかモデルありましたが、面倒臭がらず変形することにしました。 お手数をおかけいたしました。