カーブフィットの仕方 ーIgorの使い方ー

理系研究者であるならば、学会発表、論文などのためにグラフを作ることは必須のはずです。エクセルなどの表計算ソフトでもグラフを作成することは可能ですが、やはり専用のグラフソフトの方が見栄えのよいものができます。私はIgorという世界的にもメジャーなグラフソフトを愛用しており、本ブログではその使い方について解説しています。

本記事では、Igorにおけるグラフのフィッティングの仕方を解説します。

スポンサーリンク

簡単なフィッティング

フィッティングにあたって、まずデータを用意します。下図のようなデータを用意しました。

wave0をX軸、wave1をY軸にしてプロットしたデータが下図です。

概ね直線に載っているようなので、直線でフィッティングしましょう。
一番簡単なのはQuick fitという項目で、その中で直線(line)を選ぶと一番手前側に表示されているグラフについて、全体の範囲で直線フィットしてくれます。

lineを選択すると元のグラフに直線が加わった以下のようなグラフに変わるはずです。

このままでは見にくいので、元データと直線の表記を変えましょう。グラフの四角い枠の中でダブルクリックして”Modify Trace Appearance”のWindowを呼び出し、データはMakerにし、フィッティング直線は黒点線に修正したものが下記の図です。

元データがほぼ直線に乗っていることや、その直線からの外れ具合が分かると思います。

科学研究において最も使われるフィッティングはこの直線近似ですが、その他にも指数関数的減衰近似(exp, expXOffset, dblexp, dblexpXOffset)やガウシアン近似(gauss)などはよく使うと思います。

フィッティングする数式が複雑になるほど、どのような式でフィッティングしているのか意識しながら解析した方がよいですし、そもそもフィッティングするだけが目的なのではなく、そこから数字を求めようということであれば、Quick fitよりもきちんとCurve fitting機能を用いた方がよいでしょう。

スポンサーリンク

Curve fittingを用いたフィッティング

同じくAnalysisメニューにCurve fittingがあるので、それを選んでください。

上記のようなWindowが現れます。Functionにフィッティングする関数の種類Y DataとX Dataにそれぞれフィッティングで使うY軸とX軸のWaveを選択します。先程のQuick fitと異なり、グラフを作成している必要はありません。

下にa+bxという関数が表記されていますが、これが今回使うフィッティング関数です。y=ax+bという関数でY DataとX Dataをフィッティングし、aとbの値を求めます。

実行すると上図のように、フィッティング結果が表示されます。

注意点:何を求めるのか注意しましょう

ありそうな間違いとして、フィッティングして***を求めろと言われて、フィッティングパラメータ(上記で言うaまたはb)をそのまま使ってしまうことがあります。

もちろん、それで合っている場合もあるのですが、きちんとフィッティング関数の形式を見ておかないと間違えます。

例えば、ガウシアン(正規分布)でフィッティングする場合、以下のような式を使います。

「ガウスフィットして半値幅を求めよ」と言われた際に上の式のwidthを使うことは間違いです。widthという言葉に騙されるのかもしれませんが、半値幅とは文字通り高さが半分になる幅です。上の式のwidthは高さが1/eになる幅であることは式をよく見ればわかると思います。上式でexp以降が1/2になるようなx-x0の2倍の値が半値幅なので、

となります。

グラフソフトによって異なることも

また、同じガウシアンでも異なるグラフソフトでは異なるフィッティングパラメータを使っていることがあるので注意が必要です。Igorにおけるwidthは、正規分布の式と比較すると標準偏差の√2倍になります。標準偏差をパラメータとする方が合理的という考え方もあるでしょうから、グラフソフトによっては標準偏差をパラメータとして使っているかもしれませんし、別の値をパラメータにしていることもあり得ます。

カーソルを使ったフィッティング

ここまでのフィッティングは全てデータの全範囲でのフィッテングでした。研究内容によっては「高温領域でのみ直線的に変化する」などのようにフィッティングすべき範囲が限られることもあるでしょう。当然、範囲を指定してフィッティングすることも可能です。Curve fittingのData Optionsを選んで、StartとEndに何番目から何番目のデータかを入れればその範囲でフィッティングします。

値入れるのは大変という場合には最も簡単なのがカーソルを使うやり方です。グラフ上にカーソルを配置し、Rangeの下にあるCursorsボタンを押すと下図のように記入され、カーソルの範囲でフィッティングしてくれます。

まとめ

本記事ではIgorにおけるフィッティングの方法について解説しました。基本的な使い方に関する解説でしたが、初めて使う人は戸惑うこともあるでしょう。

また、フィッティングから値を求めようとする際には、フィッティング関数のパラメータと求めたい値の関係に注意してください。ここを間違えることはよく見かけることですし、間違えてしまうと致命的です。

コメント

タイトルとURLをコピーしました