• 締切済み

xとyの両方に誤差がある場合のフィッティングソフト

実験データで,x方向にもy方向にも既知の誤差がある場合のフィッティングができる解析ソフトを探しています. 現在はOriginを使用しているのですが,y方向にしか重み付けができないらしく,ちょっと困っています. xとyに同時に重み付けができるソフトをご存知ありませんか? フリー・商用は問いません.(オープンソースの方が望ましいです) プラットフォームはWindows,またはLinuxでお願いします. ※一応,ROOT,R,gnuplotはこれまでに使ったことがあるのですが,CLIが少し苦手で・・・ もし,上記のソフトでx,yの誤差を同時に付けてフィッティングできるのであれば教えていただけると幸いです.

みんなの回答

  • f272
  • ベストアンサー率46% (8053/17219)
回答No.2

実は質問文を読めば読むほど,疑問がわいてくるんだよね。 「x方向にもy方向にも既知の誤差がある場合」と言ってるが,誤差が既知なのであればそれを取り除くことが出来るでしょ。普通は誤差が未知で,せいぜい分かるのは誤差が正規分布に従う確率変数になっているとか... 「y方向にしか重み付けができない」というのもよくわからない。普通はこういう文脈で重みと言えば,測定点の重みのことです。 直線回帰を例にすると(x(i),y(i))の点にw(i)の重みを付けてw(i)Σ((y(i)-a*x(i)-b))^2を最小化するときのw(i)が重みですね。 ところが「xとyに同時に重み付けができる」や「x,yの誤差を同時に付けてフィッティングできる」というのを,どうやら同じ意味で使っているようで,普通の意味ではないように思えます。 それで,結局「近似する直線をあてはめればいいのかな?」と書いたら,「ある物理法則の近似曲線でフィッティングしたいのです」ということですから,今の私の理解では (x(i),y(i))という点列がn個あったとき,ベクトルaをパラメータとする曲線f(x,y;a)=0上の点と点(x(i),y(i))の距離の最小値L(i),言いかえると曲線と点の距離L(i)について,すべてのiについての二乗和Σ(L(i))^2を最小化するaを求めたい ということになります。これでいいのでしょうか? (なお,実は#1で書いたのはf(x,y;a)=0が直線である特殊な場合です。) それで良いのなら,反復的に最小化問題を解けばよいので,面倒ですけど素直に計算すれば近似解にはたどりつけるでしょう。

noname#146601
質問者

補足

回答ありがとうございます. 物理では測定誤差を重みとして扱うことは常套手段なんですが,書き方が紛らわしかったようで申し訳ありません. どちらにしても私の書き方は普通の用法ではなかったですね. 計算方法については分かっているつもりです. ただ,近似曲線の式が複雑なのと,自分の得た解が正しいか分からないのでソフトを利用したかったのです.

全文を見る
すると、全ての回答が全文表示されます。
  • f272
  • ベストアンサー率46% (8053/17219)
回答No.1

(x(i),y(i))という点列がn個あったとき,それを近似する直線をあてはめればいいのかな? それなら,そんなものはソフトなど使わずに自分で計算すればよい。 S1=(1/n)Σx(i) S2=(1/n)Σy(i) S3=(1/n)Σ(x(i))^2 S4=(1/n)Σ(x(i)*y(i)) S5=(1/n)Σ(y(i))^2 を計算する。 T=(S3-S5+SQRT((S3-S5)^2+4*S4^2))/2 を計算する。 T*X+S4*Y=T*S1+S4*S2 という直線,または,それに直交する S4*X-T*Y=S4*S1+T*S2 という直線があてはめた直線になります。

noname#146601
質問者

お礼

ひとまず参考になりました.ありがとうございます.

noname#146601
質問者

補足

ご回答ありがとうございます. 質問の意図としては,(x(i) ± δx,y(i) ± δy)の点列(δx,δyは測定誤差)があって,それをある物理法則の近似曲線でフィッティングしたいのです.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • x,y両方に誤差がある場合のフィッティング

    ※「数学」カテゴリで同様の質問をしましたが,解決できなかったので再度質問いたします. 測定データで,x方向にもy方向にも既知の誤差がある場合のフィッティングができる解析ソフトを探しています. つまり (x(i) ± δx,y(i) ± δy) の測定点があって,このデータをある物理法則に従った曲線でフィッティングしたいと考えています. 現在はOriginとIgorを使用しているのですが,y方向にしか重み付けができないらしく,ちょっと困っています.(つまり(x(i),y(i) ± δy)の場合しかフィッティングできない) xとyに同時に重み付けができるソフトをご存知ありませんか? フリー・商用は問いません.(オープンソースの方が望ましいです) プラットフォームはWindows,またはLinuxでお願いします. ※一応,ROOT,R,gnuplotはこれまでに使ったことがあるのですが,CLIが少し苦手で・・・ もし,上記のソフトでもx,yの誤差を同時に付けてフィッティングできるのであれば教えていただけると幸いです.

  • 誤差 統計

    誤差の伝播で分からないものがあります。 xの誤差は既知としてそれを関数とするyの誤差を求める場合、例えば y=x~10 ならばyの相対誤差はxの相対誤差の指数倍で与えられることは分かるのですが。 もし y=10^x というような場合はyの誤差を評価するにはどのような計算を行ったらいいでしょうか?

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

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

  • 実験値につける誤差の計算方法

    実験で得た数値の誤差の計算方法に悩んでいます。 実験値xとyがあったときに、それぞれの誤差が x±dx、y±dyとかではなくて xに対しては x+dx1, x-dx2 yに対しては y+dy1, y-dy2 というふうにプラスの場合とマイナスの場合で 異なる大きさの誤差を持っていたときに xとyの比、x/yにつけるべき誤差の計算方法がわかりません。 例えば、高さ6 mという値に対する誤差がプラス方向には3 m、 マイナス方向には1 m で、幅4 mに対する誤差がプラス方向には 2 m、マイナス方向には0.2 mのときに、[高さ]/[幅]の比を 計算したいのですが、これにつくプラス・マイナスの誤差を どうやって計算すればよいのでしょうか。。 x±dx、y±dyのときは x/y に √((dx/x)^2 + (dy/y)^2) とすればよいのは知っているのですが・・・ どなたか教えていただけますでしょうか。 簡単な微分計算なら理解できますが、もともと文系なので できるだけやさしく解説していただけたらありがたいです。 よろしくおねがいします。

  • エクセルで、x軸とy軸を選んで等高線プロットする方法

    あるソフトの2次元プロットファイルをエクセルに貼り付けると、以下のようになります。 下記x,yが1,2,3のいずれかで、f(x,y)が6.1等の小数点下一桁までの数です。 3×3の領域にf(x,y)のプロットをしたい、という話です。 以下のデータ並びを、(なるべく)エクセルで、f(x,y)(下記)の等高線表示 (高さ方向を押し潰した2次元、高さ方向を押し潰さない3次元、どちらでも可) する方法はありますでしょうか? x y f(x,y) 1 1 6.1 1 2 7.5 1 3 8.2 空行が1行 2 1 7.1 2 2 6.4 2 3 8.3 空行が1行 3 1 6.3 3 2 6.1 3 3 8.5 実際は3×3でなくもっと巨大なデータ数ですが 上記3×3の場合でも満足に図が書けません。 よろしくお願いいたします。

  • matlabとgunplotがうまくリンクしてくれません(泣)

    今日の昼過ぎからフリーでダウンロードしたmatlabを今(もう23時!?)までいじくりまわしています!筋金入りの初心者です。ある初心者向けサイトの解説を頼りに簡単なグラフを書く作業を行いました。 ↓具体的にはこういうレッスンです。ここから・・・↓  例)y=x^2のグラフをx=0~20の範囲(2刻み)でプロットさせたい。  コマンドはたった3行でOKです。 >>x=[0:2:20]; >>y=x^2; >>mgplot(1,x,y); 実行すると…(※実際にはgnuplotで描かれたグラフが載ってます) ちなみにこのグラフを表示させているソフトはgnuplotといってMaTXとは別のソフトです。 MaTXからgnuplotを呼び出してグラフを描かせているわけですね。 ↑レッスンここまで↑ いそいそとgnuplot(Version.4)をフリーダウンロードし、上記の手順で MaTXからgnuplotを呼び出そうとするのですが上手くいきません。 mgplot(1,x,y);syntax errorとなります。 3行目を>>gnuplot(1,x,y);にしてみると、 gnuplot(),Undeclared function or underfined variable と表示されます。 どなたか解決策をお願い致します!

  • グラフを描くソフトで・・・

    グラフが描けるソフトで、例えば x^2+xy+y^2+10=0 の様な、つまり、xとyの混在する式のグラフを描くことができるソフトって ありますか? できればフリーのものがよいのですが・・・ gnuplotは持っているのでいろいろ試してみたのですが、できませんでした・・・ よろしくお願いします。

  • 最小二乗法?

    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] の含まれている誤差は試料によってまちまちなので,一概には言えません。目視ではほとんど誤差が分からない綺麗なカーブの場合,逆に目視で辛うじて下に凸の曲線が分かる程度の場合,どちらもあり得ます。 考え方だけでも構いませんので,どうかご教授下さい。よろしくお願いいたします。

  • グラフを描きたい

    y+x+sin(x+y)=0といった、y=...にできない形の曲線を2次平面に描きたいのですが、どのようにしたらよいでしょうか? フリーソフトではgnuplotというのを知っていますが、それで描けるでしょうか?(3次元ではなく2次元で)