関数のパラメータ推定について

このQ&Aのポイント
  • 関数のパラメータ推定について困っています
  • 関数のパラメータ推定には最小二乗法を使うことができます
  • 初期値の設定がうまくいかない場合は、データを平行移動させることで解決することがあります
回答を見る
  • ベストアンサー

関数のパラメータ推定について

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

  • backs
  • お礼率85% (564/660)

質問者が選んだベストアンサー

  • ベストアンサー
  • rtz
  • ベストアンサー率48% (97/201)
回答No.1

>y = γ / (1 + exp(α + β * x))という関数において が、 >γ / y -1 = exp(α - β * x) となってるのはなぜでしょうか? γ / y -1 = exp(α + β * x) では無いのですか?(勘違いだったら申し訳ないです)

backs
質問者

お礼

早速の回答ありがとうございます。 おっしゃるとおり,γ / y -1 = exp(α - β * x)ではなくγ / y -1 = exp(α + β * x)です。私が間違えていました。 γ / y -1 = exp(α - β * x) ・・・×間違い γ / y -1 = exp(α + β * x) ・・・○こちらが正しいです

関連するQ&A

  • 関数 について その2

    前回、関数について質問させて頂きました。 前回の質問内容:http://okwave.jp/qa/q7693762.html 前回の質問内容で、関数の定義に関して教えて頂きました。 今回は、前回の質問内容を整理させて頂いている途中で 気になった点について質問させて頂きます。 質問(1) y=ax^2+bは、「yはxの関数」と言います。 z=x+iyは、「zはx,yの関数」という表現は正しいですか? 有理式についても同様に、 ax+by+zにおいて、a,bを実数、x,y,zを変数とすると ax+by+zは、「実数を係数とするx,y,zの有理式」という表現は正しいですか? 質問(2) 前回頂いた回答の中に、 log(exp( 1 + 1/x )) は有理関数だと教えて頂きました。 有理関数の定義は有理式で表された関数だと認識しています。 有理式の定義は、 (多項式)/(多項式) と表せる式で、 多項式は (定数)×(変数)^(非負整数定数) の0個以上の和 と定義されています。 なぜ、log(exp( 1 + 1/x )) は有理関数になるのでしょうか? 質問(3) 多価関数について質問させて頂きます。 y=±√xは2価関数と呼ばれますが、 この他に3価関数や4価関数などがあるのでしょうか? 以上、ご回答よろしくお願い致します。

  • cosh(x)の逆関数について

    cosh(x)の逆関数について質問です。 証明において y=cosh(x)とおくと exp(x)=y±√(y^2-1) となり exp(x1)=y+√(y^2-1),exp(x2)=y-√(y^2-1) とおくと exp(x1)・exp(x2)=1,exp(x1)≧exp(x2) なので,0<exp(x2)≦1≦exp(x1) ∴ log(exp(x2))≦0≦log(exp(x2)) となりますが exp(x1)・exp(x2)=1,exp(x1)≧exp(x2) なので,0<exp(x2)≦1≦exp(x1) となる理由がわかりません。 なぜ、exp(x1)・exp(x2)=1であるとexp(x2)≦1≦exp(x1)と言えるのですか? 誰か教えて頂けると幸いです。 よろしくお願いします。

  • 対数尤度からのパラメター推定

    式(1)の対数尤度から未知数を推定するためにパラメターxで偏微分すると式(2)になるようなのですが、式(1)から(2)への過程を解説していただけますでしょうか。 logL(x|y,s^2) = Sigma(i=1 to n)logP([y-fx]/s) (1) d log(x|y,s^2) ----------- = Sigma(i=1 to n) (Aij/s)W(v/s) (2) d x Aij はヤコビアン係数W df/dx(偏微分)、vは残差  関数W(z)は W(z) = -dlogP(z)/dz よろしく御願いいたします。

  • CSS、ブラウザの幅が狭まったときの表示

    CSS学習中です。 ブラウザの幅が狭まったときの表示について教えてください。 現在、CSSファイルで以下のように書いています。 【test.css】 #alpha, #beta, #gamma { position: relative;  display: inline;  float: left; } #alpha {  width: 300px;  background: #f00; } #beta {  width: 100px;  background: #0f0; } #gamma {  width: 100px;  background: #00f; } このCSSを使い、 <body>  <div id="alpha"> Alpha </div>  <div id="beta"> Beta </div>  <div id="gamma"> Gamma </div> </body> と表示させています。 ブラウザの表示幅が広いときは同じ行に  Alpha Beta Gamma と並ぶのですが、ブラウザの表示幅を狭めると、入りきらないGammaが下の行に表示されます。 そうではなく、入りきらない部分は表示されない(表示が欠ける)様にしたいのですが、どのようにすればよいのでしょうか? ブラウザはIE6を使用しています。

    • ベストアンサー
    • HTML
  • 対数関数の導関数

    次の問題の導関数をもとめたいのですけど、 絶対値になっているので、どのように求めたらよいのかが分かりません。途中計算が私の考えるものと答えが違ってきます。教えてください宜しくお願いします。 y=log | 1-x / 1+x |  答え 2 / (x^2 - 1) 私のたぶん間違えている途中計算↓ y'=log |(1-x)' {(1+x)^-1} + (1-x){(1+x)^-1}'

  • 関数電卓でexpの使い方

    エクセルで近似曲線を作りましたら、y=40.644e-0.0001xの式が得られました。文字として書くことが難しいですが、eのマイナス0.0001x乗の意味です。 xの値がわかっている場合に、yの値を計算したいです。 これをシャープ関数電卓(EL509F)で計算する場合は、expを使うようですが、キーの押し方がわかりません 。 お教えください。

  • 陰関数の導関数を求める問題を教えて下さい

    以下の式f=0に対して、陰関数y=y(x)の導関数を求めよという問題です。 (1)f=x+y-e^(x*y) (2)log(x^2+y^2)-2*Arctan(y/x) お願いいたします。

  • 2変数関数の計算方法

    1/(√y)=2log_[10](x・√y)-0.8 という関数のyの値が分かっている場合のxの値は、上式を変形して、 log_[10](x)={1/(2√y)}-log_[10](√y)+0.4 x=10^[{1/(2√y)}-log_[10](√y)+0.4] にしてyの値を代入すれば、xの値を求める事ができます。 逆にxの値が分かっていてyの値が分からない時の計算方法ですが、この関数はy=の形に変形できません。 どうやって計算すればよいのでしょうか? Excelを使って計算できないでしょうか。申し訳ありませんが、お分かりになる方教えてください。 よろしくお願いします。

  • ディラックのデルタ関数δ(x)

    ディラックのデルタ関数δ(x)に対する次の式を示せ。 (1/2)π∫[-∞,+∞]exp(ixy)dy=lim[ε→+0](1/2π)∫[-∞,+∞]exp(ixy-ε|y|)dy=lim[ε→+0](1/π){ε/(x^2+ε^2)}=δ(x) ∫[-∞,+∞]δ(x)dx=1からどうやって導くのですか?詳しい解説お願いします。 

  • エクセルで三次関数をつくりたいのですが

    検量線を三次関数で書きたいというヒトから質問を受けたのですが、 y=4E-11x^3-3E-7x^2+0.0007x というような式をエクセルで作成する場合、こんな式の作り方で合っているのでしょうか? y=a(exp(1)+b)x^3+c(exp(1)+d)x^2+ex a=4 b=-11 c=-3 d=-7 e=0.0007 また、基本的なことですが「E」とは自然対数の底(≒2.71828)で合っていますか?