-PR-
締切済み

logの入った最小二乗法について

  • 困ってます
  • 質問No.97271
  • 閲覧数248
  • ありがとう数11
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 0% (0/9)

Y=ln(x-b)-ln(x-c)
といったように、xが二つに分かれてしまっていて、さらに式にあるようにbやcが入っているときの最小二乗法のやり方を教えてください。お願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 64% (700/1089)

(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 について 測定値がガウス分布す ...続きを読む
(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 についてガウス分布することとは違うのですが,
通常余り気にしません.
補足コメント
seamonky2

お礼率 0% (0/9)

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

      
投稿日時 - 2001-06-29 21:18:20
関連するQ&A


  • 回答No.2
レベル14

ベストアンサー率 57% (1014/1775)

●正攻法だと非線形最小二乗法を使います。過去の質問から「最小二乗法」を検索すれば、参考資料等いろいろ分かるはず。 ●最小二乗法の一般的注意事項として、何を最小にするかをはっきりさせる必要があります。モデル y=ln(x-b)-ln(x-c) は exp(y) = (x-b)/(x-c) や (x-c) exp(y)=x-b と同じ意味ですけれど、 残差 ε[k] = y[k] - ...続きを読む
●正攻法だと非線形最小二乗法を使います。過去の質問から「最小二乗法」を検索すれば、参考資料等いろいろ分かるはず。

●最小二乗法の一般的注意事項として、何を最小にするかをはっきりさせる必要があります。モデル
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しちゃおうっと。
  • 回答No.3
レベル14

ベストアンサー率 57% (1014/1775)

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箇所 ...続きを読む
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は計算間違い、書き間違いの常習犯です。チェック宜しく。
  • 回答No.4
レベル14

ベストアンサー率 57% (1014/1775)

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)( ...続きを読む
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
の方が多少すっきりしてますね。いや、やってることは同じですけど。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ