• ベストアンサー

最小二乗法?

stomachmanの回答

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.6

Aが経時的にドリフトしてしまう、という事情があったのですね。Bもおそらく動くのでしょう。だとすれば、仰るとおり、実験毎にA,B,Cを求めるのが良さそうです。 一般に、非線形最小二乗法というのは、正規方程式(残差二乗和が極値をとる、ということを表す方程式)がA,B,Cの一次式にならない場合に適用されます。そういう場合には、正規方程式のA,B,CをA+ΔA, B+ΔC,C+ΔCで置き換え、A,B,Cとして適当な「推定値」を(定数として)入れ、ΔA, ΔB, ΔCの2次以上の項を全て無視してしまう。そうするとΔA, ΔB, ΔCを変数とする連立1次方程式が得られます。これを解いて、A+ΔA, B+ΔC,C+ΔCを新しい「推定値」とする。これを繰り返して「推定値」を改良していく訳です。 ご質問の場合には、Cだけについてこの処方が必要になる。ですから、No.5 siegmund先生の >あるいは,A0,B0,C0 の周囲で A,B,C を適当なステップで振って >残差の自乗和を直接計算する手もあります. >いわば,3次元の表にするわけです. >今の範囲に残差の自乗和の極小値があれば,その周囲でステップを細かくしてまた振る. >A,B,C の値を 10個ずつトライしますと, >1つのステップについて 1000 通りの場合の残差の自乗和を計算するわけですが, >今のパソコンならあっという間でしょう. については、必要なのはCを振ることだけです。Cを決めれば、その状態で残差二乗和S(C)を最小にするA,Bは線形最小二乗法(つまり正規方程式が連立1次方程式になって、これを解くこと)で簡単に求められるからです。 Cを有効数字4桁で決めたければ少なくとも数万通りについて調べることになります。これを端から順に試すのでは効率が悪いですね。 小数点以下1桁目について探す 小数点以下2桁目について探す  : という風に絞り込んでいくと速くなります。 これを徹底して行うのが以下の方法です。 (1) Cm=-1, Cc=0, Cp=1 とします。S(Cm), S(Cc), S(Cp)を(線形最小二乗法で)計算します。すると、S(Cm), S(Cc), S(Cp)のうちで一番大きいやつがもしS(Cc)だったら、これはどうも状況がおかしいので、この方法は失敗です。(Cの範囲を大幅に見誤ったとか、モデルが全然データに合っていないと思われます。)まともな状況なら、S(Cm)かS(Cp)が最大になります。 (2) さらにS((Cc+Cm)/2)、S((Cc+Cp)/2)を計算します。そして、Cm, Cc, Cpを変更します。5個の値Cm, (Cc+Cm)/2,Cc, (Cc+Cp)/2, Cpのなかから引き?く3つを選んで新しいCm, Cc, Cpの値とし、そのときS(Cm), S(Cc), S(Cp)(これらはもう既に計算してありますね)のうちのS(Cc)が最小になるように、引き?く3つを選ぶのです。 そして(1)に戻る。  これで、(2進法で)1桁ずつCを絞り込んでいくことができます。stomachmanはこの方式(「四分法」と呼んでいます)を極めて多量のデータ処理を行うような、色々な目的に実際に利用しています。  ついでに、四分法を高速でやるためには、sin(x[i]+C)をテーブルルックアップで計算できるようにしておくと良いです。つまりC=-1~1を2^N分割 たとえば32768の等間隔に分割します。-1, -1+1/32768, -1+2/32768, ..... , 1 という32769個の数値の中から、S(C)を最小にするCを探そうという訳です。一方、x[i]のサンプリング間隔も1/32768の整数倍にしておきます。そして、θ=-16~16の範囲についてθを1/32768刻みで変えて(sin(θ))^2を計算した表を作っておけば、毎回sinの計算をしなくても済む訳です。 >例えば No 2 での補足で,私は数回の測定から信頼限界を求めたと書きましたが, >この時は数回測定した結果から標準偏差,平均誤差をもとめて,Student の t 分布 >を用いて,○○%信頼限界といった値を計算しました。stomachman さんの >おっしゃる方法が具体的にはどういう方法なのか,よく分かりません。 No.4でstomachmanが説明したのは、1回のfittingに於いて求められたCの値に含まれる誤差の評価方法についてでした。yにランダムなノイズがあるために、ノイズが違えばCも違ってくる。そのCのばらつきは(僅かなので)ノイズの標準偏差と比例する標準偏差をもつ正規分布で近似できます。詳しくは教科書をご参照下さい。 さて、ご質問で言う「信頼限界」は、ドリフトを起こす系において繰り返し求めたCの値の分布の話だったんですね。これはまた別の話です。 信頼性限界を云々する以前に、Cの値がどう変化するのか。たとえば、AとCの相関はないか、などを調べて、Cの値が本当にランダムなのかどうかをチェックする所から始めなくてはいけません。(AやBとCに緩やかな相関が認められることはかなりありそうです。)  その上で、一体何を測りたいのかを良く考え直して、たとえばA,Bを使ってCを補正するなど、A,BとCが無相関になるようにしてやりますと、初めてCの信頼性限界について議論が可能になります。

関連するQ&A

  • 最小二乗法の推定値の誤差

    変数xを変化させたときの測定値yを最小二乗法で二次式y=a*x^2 + b*x +c にフィッティングさせ推定値a, b, cを求めるとき、 測定値yの誤差がδyであるときの推定値a, b, cの誤差を求めたいのです。 具体的には、(x,y)=(-1,2), (0,0), (1,1.5), (2,5) の4つのデータを 二次式にフィッティングさせたときのa,b,cはa=1.375, b=-0.325, c=0.225ですが、 測定値yの測定誤差が0.1のときのa,b,cの誤差を求めたいのです。 よろしくお願いします。

  • 重みつき最小二乗法の誤差

    まず、条件を書かせていただきます。 ln(DZ)=ax+B a=-1/T x:条件(x=1、x=5) Z:xを決めると決まる値。(例:x=1ならZ=20、x=5ならZ=68) B:定数 D:条件xの時に行なった測定の測定値 (x=1のときに行なった測定値をD1、x=5のときに行なった測定値をD5) ln(DZ)=yとすれば、y=ax+Bとなります。 一回の測定すると、x=1とx=5に対するD1とD5を測定できます。 一回の測定操作をηとします。 上記の条件で、下記に示す2種類の方法でTの平均値とTの誤差を求めます。 (1) ηを行なうことにより、aとTを求めることができます。 ηを10回行なうことにより、10個のTを求めるます。 10個のTからTの平均値とTの誤差を求めます。 (2) ηを10回行なうことにより、10個のD1と10個のD5を求めるます。 10個のD1と10個のD5を使い、重みつき最小二乗法によって Tの平均値とTの誤差を求めます。 どちらの方法でも平均値と誤差は出ますが、 どちらの方がより正確にTの平均値と誤差を求めることができるのでしょうか。 根拠を示した上で教えてください。 じっくり考えてみましたが、よくわかりません。 文章がおかしいために 、たぶん質問の内容自体が理解できない可能性が高いので分からないことがあれば教えてください。 もし、参考になるホームページや本などがあればご紹介ください。 よろしくお願いいたします。

  • 最小二乗法

    n組のデータ (xi, yi) を,特定点(X0, Y0) を通る直線 y = ax+b でフィッティングしたい。最小二乗法で係数a,bを求めるため の式を導きなさい。 という問題で 各データの残差を二乗した和が最小になるときのa,bを求めるのですが 特定点(X0,Y0)を通るにはどうすればよいでしょうか? ただ単に、特定点を通らずフィッティングするやりかたはわかるのですが・・・。 よろしくお願いします。

  • 最小二乗法の重みづけについて教えてください。

    簡単のため、説明変数tと、目的変数xが、共に実数(スカラー)とします。 また、フィッティング関数 F=F(t,a,b,c) も、簡単のため3変数または4変数のスカラー値関数とし、フィッティングパラメータa,b,cも実数(スカラー)とします。また、Fがフィッティングパラメータを2つしか持たない場合(Fが3変数の場合)には、 F(t,a,b)と読み替えて考えることにします。 また、データ、即ち説明変数と目的変数の実測値の組 (t_{i},y_{i})がn個あるとする。 また、以下の4種類の評価関数を考えます。 A:所謂2ノルム A(a,b,c)=Σ|{y}_{i}-F({t}_{i},a,b,c)|^2 B:n個の正数w_{i}を用いて、重みづけ B(a,b,c)=Σ(w_{i}|{y}_{i}-F({t}_{i},a,b,c)|^2) C:単調(非退化、つまり任意の点で微分がバニッシュしない)な関数φを用いて変換 C(a,b,c)=Σ|φ({y}_{i})-φ(F({t}_{i},a,b,c))|^2 D:所謂1ノルム D(a,b,c)=Σ|{y}_{i}-F({t}_{i},a,b,c)| (Q1)このとき、以下の命題のうち、同値な命題はどれとどれですか? P「(a,b,c)がAの極値点である」 Q「(a,b,c)がBの極値点ある」 R「(a,b,c)がCの極値点ある」 S「(a,b,c)がDの極値点である」 (Q2)重みづけの意味について: *実際、最急降下法のプログラムを作ってみると、 Dの場合で、直線に近い形状になるように変換した場合(たとえばシクモイドの場合logをφに取る)。 Cの場合で、変化が緩慢なiに重みをつけた場合。 Aの場合。 の順に速度が速く、いずれの場合もだいたいの場合には、まあまあ(10000回ぐらい再起計算すれば) まあ、見た目に近いグラフが出てきます。 だとしたとき、wやφというのは、何を意味しているのでしょうか? ここで、最急降下法は、以下の意味で考えている 最急降下法の初期パラメータを(a_0,b_0,c_0)とし、 k回目の計算値を({a}_{k},{b}_{k},c_{k})と記載する。 このとき、({a}_{k},{b}_{k},c_{k})は、以下の漸化式を再帰的に数値計算することで求める。 (a_{k+1},b_{k+1},{c}_{k+1})=(a_{k},b_{k},{c}_{k})-ε*grad(J(a,b,c)) 但し。Jは、A,B,Cいずれかの評価関数で、εは充分小さい正定数 (Q4)εのテンソル化: というほど大げさなものではありませんが、εを正値の対角行列にした場合 収束が早いことがあります。この場合εの異方性がフィッティングパラメータの収束性 どのように作用しているのでしょうか?また、こんなことをしてもいいのでしょうか?

  • 最小二乗法について

    xは操作条件で、yは実験結果のプロットに対して、 最小二乗法でy=ax+bという回帰直線を引きました。 すると、aとbでは、aのほうが信頼性があるというのですが、 これはどういうことなのでしょうか?

  • 最小自乗法で求められた傾きの誤差

    データ列(x,y)がn個あって、それを最小自乗法でフィッティングして y=ax+bにおける傾きaが得られました。 そこで、yの測定誤差が例えば±10%あったとき、 傾きaの誤差δaはどのように求められるのでしょうか? データ数nが多いほどδaは小さくなるとは思いますが・・・。 よろしくお願いいたしますm(_ _)m

  • 最小二乗法の応用について

    実験により、xに対するyの値をxの値をかえながら、N回測定した。測定したxに対するyの関係をグラフに描くと、次の二次関数で表現するのが適当であることがわかった。 y=ax*x+bx+c この時、最小二乗法によりパラメータa、b、cの値を求める式を導出せよ。という問題なのですが、どのようにしたら最小二乗法で求めることができるのですか? どうか教えてください

  • 次数が未知の最小二乗法について

    最小二乗法により実験データを解析したいと考えています。 n回の測定でyとxを求め、 y=ax^2+bx+c という二次関数でフィッティングする場合、未知パラメータabcを擬似逆行列で求めるというところまでは分かったのですが、 y=ax^d+bx+c というように、未知パラメータがabcに加えて、次数のdも未知の場合にはどのように解いたら良いのでしょうか。 どなたか分かる方、教えてください。

  • 近似曲線の設定方法

    Sma4 for Windows で、あるデーターのプロットを取りました。 このプロットに対して、近似(フィッティング)曲線をつくるため x,yの関数としてy=1-(b/1+(c/x))を入れたいのですが、うまくいきません。 bとcはxの変化によって変化する定数の事です。  Sma4起動中の、どこに式を入れればいいのか教えて下さい。  つまり、プロットに対して近似曲線を作るための式の設定方法を教えて下さい。

  • 東工大 物理問題 教えて 最小二乗法

    y=ax xを変えながら測定を行い、N組の測定値xi,yiを得た 最小二乗法を用いてaの最確値を表す式を求めよ x、yの各測定における測定誤差は等しいとする