• ベストアンサー

最小二乗法を用いたデータ解析(三角関数を含む)

データ解析に関して f(x)=(a1cosk1x+a2cosk2x-(b1sink1x+b2sink2x))/√x g(x)=-(a1sink1x+a2sink2x+b1cosk1x+b2cosk2x)/√x を最小二乗法でフィッティングするにはどうしたらよいのでしょうか? k1,k2は既知ですが整数ではありません。データの数は多数あります。 a1,a2,b1,b2の値を求めたいのですが、方法がわかりません。 プログラム等ご存じでしたら、重ねてお願いいたします。 どうか助言を頂きたく投稿しました。よろしくお願いいたします。

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

  • ベストアンサー
  • age_momo
  • ベストアンサー率52% (327/622)
回答No.1

k1,k2が決まっていてx,f(x)のデータがあるなら X1=(1/√x)*cos(k1*x) X2=(1/√x)*cos(k2*x) X3=(1/√x)*sin(k1*x) X4=(1/√x)*sin(k2*x) を計算しておいて、 f(x)=a1X1+a2X2-b1X3-b2X4 に重回帰するだけだと思います。g(x)も同様ですね。 プログラムや方法は多数ありますよ。例えばExcelなら (1)アドイン『分析ツール』で重回帰を行う。 (2)行列計算する。 ΣX1^2 ΣX1X2 ΣX1X3 ΣX1X4 ΣX1X2 ΣX2^2 ΣX2X3 ΣX2X4 ΣX1X3 ΣX2X3 ΣX3^2 ΣX3X4 ΣX1X4 ΣX2X4 ΣX3X4 ΣX4^2 の逆行列に行列 Σf(x)X1 Σf(x)X2 Σf(x)X3 Σf(x)X4 をかければa1,a2,b1,b2が出てきます。 (3)アドイン『ソルバー』を使う。つまり、 どこかのセル4つに適当な数字を入れておいて(例えばG1-G4に入っているとすると) G5に  Σ{f(x)-G1*X1-G2*X2+G3*X3+G4*X4}^2 の計算式をつくり、ソルバーで 目的セル G5 目標値 最小にチェック 変化させるセル G1:G4 として実行すれば最小になるようにExcelが自動で探してくれます。

kuro5884d
質問者

お礼

丁寧なご解説誠に感謝いたします。 早速試してみたところ良い結果が得られました。 重回帰を検討していなかったため、質問して本当に良かったと思います。 ありがとうございました。

関連するQ&A

  • 重回帰のデータ解析(連立方程式)

    データ解析に関して f(x)=(a1cosk1x+a2cosk2x-(b1sink1x+b2sink2x))/√x g(x)=-(a1sink1x+a2sink2x+b1cosk1x+b2cosk2x)/√x を最小二乗法でフィッティングするにはどうしたらよいのでしょうか? k1,k2は既知ですが整数ではありません。データの数は多数あります。 a1,a2,b1,b2の値を求めたいのですが、方法がわかりません。 と質問をさせていただき、重回帰の方法を教えていただきました。 けれどf(x)とg(x)の連成がとれません。f(x)、g(x)のa1,a2,b1,b2は同値でなければなりません。 度々申し訳ございませんが、力をお貸しください。

  • 最小二乗法

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

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

    変数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の誤差を求めたいのです。 よろしくお願いします。

  • 最小二乗法

    粉末X線回折で得たデータをローレンツ関数を使ってピークフィッティングを試みています。 最小二乗法でやろうと思っているのですが、やり方がわかりません。 どなたか教えてくれないでしょうか。

  • 最小二乗法の解き方

    こんにちは。 最小二乗法で解くらしいんですが、解き方がわかりません。 問題は、 ||(Axーb)||=0 (Aはm×n行列)(m>n)            (xはn×1) のとき、b=0で ||x||=(x^T)x=1の条件でxを最小二乗法 でどうやって求めたらよいのでしょうか。 よろしくお願いします

  • 多変数の最小二乗法

    Y=AX+Bという形で(Y,X)の組から係数A,Bを推定する方法が最小二乗法かと思います。(そのような整理が妥当であるか、意味があるか、についてはデータの分布形状や変動係数などで別途検証する必要がありますがここでは不問として) さて、その次ですが、YY=AX+BY+CZという関数で表示しようと考えたとします。(YY,X,Y,Z)というデータ系列があり、係数(A,B,C)を求めるというような解析です。(前述のようにそれが妥当かどうかは不問として。)係数A,B,Cを最小二乗法のようにできるだけ妥当に求める方法を教えていただきたいのですが。 1)たとえば、YY=AX+CCとして最小二乗法でAを求めたあと、残差CCについてCC=BY+CZとおいて再度最小二乗法でBを求めるというような手法を何度も行うとか? これだと解く順番に依存するようなので全部の順番でやって平均値を取るとか? 下手な考え休むに似たりのようですが。 2)カルマンフィルタ、ニューラルネットワークの手法で解析するということもあるでしょうか。その場合、YY=AX+BY+CZという枠組みではなくなりますが、それでもよいと言えばよいです。 このような問題を解く方法について解説されている本とか分野の名称(数理統計学とか?)などを教えて頂けると探索する手がかりとなります。今は手がかりすらはっきりしていないのです。 最小二乗法についてはその程度だったら専門分野ではなく、各分野で個別に解説されているようで込み入った問題になったときにどこを捜索したらよいかわからないもので質問しました。よろしくお願いします。

  • 非負最小2乗法のコーディング

    非負条件の最小2乗法のプログラムを作成 したいのですが,参考文献やプログラムが あれば,教えて下さい。考え方のヒントでも よいです。 具体的には,関数f[{x}]=|[A]{x}-{b}|^2・・・(1) がxi>=0(i=1,2,..,n)・・・(2)の条件で, 最小となる{x}を求めるという問題を解くプログラムを 作りたいと考えています。 ここで,{x}=(x1,x2,...,xn)    {b}=(b1,b2,...,bm)    [a]は サイズm x nのマトリクス(m>n) であり,[A]および{b}は既知です。 条件(2)が無い場合の最小二乗のプログラムは 作成できますが,条件(2)を満足させるという条件がある 場合には,その条件を具体的にどのようにプログラム化 するのか不明であり質問した次第です。 宜しくお願いします。

  • 最小二乗法でa、bを求める公式を教えてください

    最小二乗法について良くわからないのですが、教えてください! y=a/(x+b)の場合で、n個のx、yのデータがあります。 最小二乗法で、aとbを求める。 という問題なのですが、aとbを求める公式を教えてください!

  • 最小二乗法?

    i 個の測定点 (x[i],y[i]) を,最小二乗法などを用いて下記の式にフィッティングさせようと考えています。Visual Basic で作成した測定プログラムの中で使用したいのですが,具体的にどのようなアルゴリズムでフィッティングを行えばいいのか分かりません。 Y = A * sin(X - C)^2 + B 実測する x[i] の範囲は狭く,例えば -15°~ +15°まで 0.2°毎の計 151 プロット,といった感じです。そして定数 A,B,C の内,最も高い精度で求めたい定数は C です。測定の段階で x の範囲を狭めているのは,正確な C (通常 1°未満)を求めるためです。 この測定は x[i] にはほとんど誤差が含まれませんが y[i] には誤差があります。y[i] の含まれている誤差は試料によってまちまちなので,一概には言えません。目視ではほとんど誤差が分からない綺麗なカーブの場合,逆に目視で辛うじて下に凸の曲線が分かる程度の場合,どちらもあり得ます。 考え方だけでも構いませんので,どうかご教授下さい。よろしくお願いいたします。

  • 最小二乗法の問題

    (x、y)についてのん組のデータ(x1、y1).......(xn、yn)が直線y=ax+bの近似できるとき、aとbを最小二乗法により求めよ。