電子書籍の厳選無料作品が豊富!

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]としてやるとうまくいきます。だから平行移動させるために前回のような質問をしたのですが、、、(ちょっと文字数に制限があるので意味不明だったら補足します)

A 回答 (1件)

>y = γ / (1 + exp(α + β * x))という関数において


が、
>γ / y -1 = exp(α - β * x)
となってるのはなぜでしょうか?
γ / y -1 = exp(α + β * x)
では無いのですか?(勘違いだったら申し訳ないです)
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

おっしゃるとおり,γ / y -1 = exp(α - β * x)ではなくγ / y -1 = exp(α + β * x)です。私が間違えていました。

γ / y -1 = exp(α - β * x) ・・・×間違い
γ / y -1 = exp(α + β * x) ・・・○こちらが正しいです

お礼日時:2006/12/12 11:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!