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]としてやるとうまくいきます。だから平行移動させるために前回のような質問をしたのですが、、、(ちょっと文字数に制限があるので意味不明だったら補足します)
お礼
早速の回答ありがとうございます。 おっしゃるとおり,γ / y -1 = exp(α - β * x)ではなくγ / y -1 = exp(α + β * x)です。私が間違えていました。 γ / y -1 = exp(α - β * x) ・・・×間違い γ / y -1 = exp(α + β * x) ・・・○こちらが正しいです