最新閲覧日:

Y=ln(x-b)-ln(x-c)
といったように、xが二つに分かれてしまっていて、さらに式にあるようにbやcが入っているときの最小二乗法のやり方を教えてください。お願いします。

A 回答 (4件)

No.3の補足説明です。


lnY(lnA) = aln(x-b) - dln(x-c)
において
(2) ln(y) = lnY(lnA)
とする代わりに、
(2') y=lnY(lnA)
とした方が易しいですね。こうすれば微分方程式は
(4') (x-b)(x-c)(dy/dx) =((x-c)a + (x-b)d)
となり、
(5') (x^2)(dy/dx) -(b+c)x(dy/dx) + bc(dy/dx) = (a+d)x - (ac+bd)
積分すると
 (x^2)y- 2∫xy dx -(b+c)(xy -∫y dx) + (bc)y = ((a+d)/2)(x^2)- (ac+bd)x + t
より
(6') (x^2)y- 2∫xy dx = (b+c)(xy -∫y dx) +((a+d)/2)(x^2)- (ac+bd)x - (bc)y + t
 p=b+c
 q=(a+d)/2
 r=-(ac+bd)
 s=-(bc)
とおいて、
 P[k] = x[k]y[k] -Σ(y[j]+y[j-1])(x[j]-x[j-1])/2
 Q[k] = x[k]^2
 R[k] = x[k]
 S[k] = y[k]
 T[k] = (x[k]^2)y[k] - Σ(y[j]x[j]+y[j-1]x[j-1])(x[j]-x[j-1])
として
(7) T[k] = pP[k]+qQ[k]+rR[k]+sS[k]+t
の方が多少すっきりしてますね。いや、やってることは同じですけど。
    • good
    • 0

No.1の補足を見ると、どうやらstomachman流「超平面法」の出番のようですね。



(1) lnY(lnA) = aln(x-b) - bln(x-c)
左辺は(ln(Y))×(ln(A))の意味でしょうか、あるいはln(Y×(ln(A)))でしょうか。どちらにせよ、Aは既知らしいですから、まとめて
(2) ln(y) = lnY(lnA)
と書くことにしましょう。
それより、bが2箇所に現れる。分かりにくくなっちゃうので、とりあえず、
(3) ln(y) =aln(x-b) + dln(x-c)、ただしd=-b
ということにしましょう。

こいつの両辺をxで微分します。ここで
(d/dx)ln(y)=(dy/dx)/y
(d/dx)aln(x-b)=a/(x-b)
ですから、微分方程式
(4) (x-b)(x-c)(dy/dx) =((x-c)a + (x-b)d)y
が得られる。x,yの項別に整理すると
(5) (x^2)(dy/dx) -(b+c)x(dy/dx) + bc(dy/dx) = (a+d)xy - (ac+bd)y
この両辺をxで積分するんです。部分積分を使って
∫(x^n)(dy/dx)dx = (x^n)y - n∫(x^(n-1))y dx
ですから、未知の定数項tを入れて
(5) (x^2)y- 2∫xy dx -(b+c)(xy -∫y dx) + (bc)y = (a+d)∫xy dx - (ac+bd)∫y dx + t
となる。これを整理すると
(6) (x^2)y = (b+c)(xy -∫y dx) + (a+d+2)∫xy dx - (ac+bd+b+c)∫y dx - (bc)y + t
です。ここで
 p=(b+c)
 q=(a+d+2)
 r=-(ac+bd+b+c)
 s=-bc
と定義すれば、p,q,r,s,tの5つのパラメータを持つ線形モデルになります。
積分はデータx[k]が得られている範囲について、数値積分でやるんです。つまり、データ(x[k],y[k]) (k=0,1,2,...,K)を、x[k]が小さい順に並ぶようにsortしておきます。
たとえば台形則で積分をやるものとすれば、
 P[k] = x[k]y[k] -R[k]
 Q[k] = Σ(y[j]x[j]+y[j-1]x[j-1])(x[j]-x[j-1])/2
 R[k] = Σ(y[j]+y[j-1])(x[j]-x[j-1])/2
 S[k] = y[k]
 T[k] = (x[k]^2)y[k]
として(Σはいずれもj=1~kについて取ります。)、モデルは
(7) T[k] = pP[k]+qQ[k]+rR[k]+sS[k]+t
です。p,q,r,s,tに関する線形モデルですね。

さて、このモデルをデータ(x[k],y[k])にフィッティングするとp,q,r,s,tの5個のパラメータが出てきてしまう。もともとa,b,cの3個しかパラメータがないはずなのに、これじゃ過剰です。過剰ですが、データがモデルと良く合っている(残差がごく小さくなるa,b,cが存在する)ならば、p,q,r,sのどの組み合わせを使って求めたa,b,cもほぼ同じになる筈です。
 なんでこんな過剰が出たかというと、tは積分定数ですから上記の処方で出てきた余計なモノで、単に無視して良し。そしてp,q,r,sはa,b,c,dの4パラメータを含むモデルなら丁度良い訳です。

 以上のようにして、a,b,cを決めたら、さらに非線形最小二乗法で改良することもできます。a,b,cが既に「正解」にごく近い近似値になっているので、ガウス・ニュートン法など、線形近似法を反復させて簡単に収束させられます。

 なお、stomachmanは計算間違い、書き間違いの常習犯です。チェック宜しく。
    • good
    • 0

●正攻法だと非線形最小二乗法を使います。

過去の質問から「最小二乗法」を検索すれば、参考資料等いろいろ分かるはず。

●最小二乗法の一般的注意事項として、何を最小にするかをはっきりさせる必要があります。モデル
y=ln(x-b)-ln(x-c)

exp(y) = (x-b)/(x-c)

(x-c) exp(y)=x-b
と同じ意味ですけれど、
残差
ε[k] = y[k] - (ln(x[k]-b)-ln(x[k]-c))
の二乗和を最小にするb, cは、残差
δ[k] = exp(y[k]) - (x[k]-b)/(x[k]-c)
の二乗和を最小にするb, cや
γ[k] = (x[k]-c) exp(y[k])-(x[k]-b)
の二乗和を最小にするb, cとは違いますからね。
 しかし、データ(x[k],y[k]) (k=1,2,.....,K) がモデルと良く合っていて残差がごく少なくできる(そのようなb,cが存在する)場合には、どれでやってもほとんど同じb,cが得られます。そういう時は、実用上どれでやっても大差ない訳です。

●以上をふまえた上で、ご質問の例の場合、モデルは
x[k] (exp(y[k])-1)=c exp(y[k])-b
と表すことができます。だから、c,bについて見ると線形最小二乗法になってます。どういうことかというと、
X[k]=exp(y[k])
Y[k]=x[k] (exp(y[k])-1)
とおけば、X[k],Y[k]は共にデータ(x[k],y[k])が与えられれば値が確定する。そしてモデル
Y[k]=c X[k] - b
のb,cを決めろ、という問題です。これなら簡単でしょ?

このやり方は、飽くまでも残差
β[k] = x[k] (exp(y[k])-1) - (c exp(y[k])-b)
の二乗和を最小にするb, cを求めるのであって、ε[k]の二乗和を最小にするb, cとは完全には一致しない。これは頭に入れて置いてくださいね。

と回答しようとしたら、siegmund先生が既に......なはは。せっかく書いたからupしちゃおうっと。
    • good
    • 0

(1)  Y = ln{(x-b)/(x-c)}


として,
(2)  e^Y = (x-b)/(x-c)  ⇒  (x-c)e^Y = x-b
   ⇒  cz - b - xz + x = 0
と変形すれば(z = e^Y) ,定めるべき係数 b,c について線型になりますから
普通のよく本に載っている方法がそのまま適用できます.

細かいことを言えば,Y について 測定値がガウス分布することと,
e^Y についてガウス分布することとは違うのですが,
通常余り気にしません.

この回答への補足

 丁寧に答えていただき、ありがとうございます。
教えていただいた方法で解いてみようと思ったのですが、
問題のタイプが少し違うようでした。
 私がいま直面している問題は
    lnY(lnA) = aln(x-b) - bln(x-c) (Aは定数です。)
という形だたのですが、私が勝手に簡略化してしまっていました。
すいません。
これをどうしてもよい形にもっていくことができません。
もしよい方法をご存知でしたら、お教え頂きたいと思います。
よろしくお願いします。

      

補足日時:2001/06/29 21:18
    • good
    • 0

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

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ