Repository navigation
08 曲線フィット
データに数式モデルを当てはめ(フィッティング)、パラメータの値と当てはまりの良さを求めます。1つのモデルを当てはめる「曲線フィット」と、重なった複数のピークを分離する「多峰フィット」があります。
- 曲線フィットの手順
- 用意されているモデル
- カスタム数式
- フィットの設定項目
- 結果の見方
- 残差プロット
- フィット結果を後から使う
- 複数のデータセットをまとめてフィットする
- 多峰フィット
- プラグインで追加されるフィット関数
- データセットリストで、フィットしたいデータセットを選びます。
- 画面下部のボタン列にある「曲線フィット」(ツールチップ名)を押します。
- 「曲線フィット」ダイアログでモデルを選び、必要に応じて設定を変えます。
- 「OK」を押します。

計算はバックグラウンドで行われ、その間「曲線フィット」ボタンは押せなくなります。計算が終わると次のことが起こります。
-
Fit (元の名前)という名前の新しいデータセットが、元のデータセットと同じフォルダに追加されます。フィット曲線はデータのX範囲(フィット範囲を指定した場合はその範囲)を200点で結んだ曲線で、元データと同じ色の破線で描かれます。 - 結果ダイアログ(「フィッティング完了」)が開きます。このダイアログはグラフを操作しながら開いたままにできます。
元のデータセットは変更されません。
注意: 追加された
Fit (...)データセットはCtrl+Zでは消えません。不要なら選択して削除してください。

ダイアログのリストに並ぶ組み込みモデルは次の14種類です。式中の x がX、y がYです。
| リストの表示名 | 式 | パラメータ |
|---|---|---|
| 線形 | y = a·x + b | a, b |
| 2次多項式 | y = a·x² + b·x + c | a, b, c |
| 3次多項式 | y = a·x³ + b·x² + c·x + d | a, b, c, d |
| 指数関数 | y = a·exp(b·x) | a, b |
| 対数 | y = a·ln(x) + b | a, b |
| べき乗 | y = a·x^b | a, b |
| ガウシアン | y = a·exp(−(x−b)² / (2c²)) + d | a(高さ), b(中心), c(幅: 標準偏差), d(オフセット) |
| ローレンツ関数 | y = a / (1 + ((x−b)/c)²) + d | a(高さ), b(中心), c(半値半幅), d(オフセット) |
| 擬似フォークト関数 | y = a·(η·L + (1−η)·G) + d L = 1/(1+((x−b)/c)²)、G = exp(−4 ln2·((x−b)/c)²) |
a, b(中心), c(幅), eta(ローレンツ成分の割合 η), d |
| フォークト関数 | y = a·Re[w((x−b+iγ)/(σ√2))] / (σ√(2π)) + d (w はFaddeeva関数。ガウシアンとローレンツの畳み込み) |
a, b(中心), sigma(ガウス幅 σ), gamma(ローレンツ幅 γ), d |
| 2成分指数関数 | y = a1·exp(b1·x) + a2·exp(b2·x) + c | a1, b1, a2, b2, c |
| ボルツマンシグモイド | y = a2 + (a1−a2) / (1 + exp((x−x0)/dx)) | a1, a2(両側の漸近値), x0(中心), dx(遷移の幅) |
| シグモイド | y = a / (1 + exp(−b·(x−c))) | a(上限), b(傾き), c(中心) |
| ヒルの式 | y = vmax·xⁿ / (kⁿ + xⁿ) | vmax, k, n |
使えるデータの条件:
- 対数・べき乗は、Xがすべて正(X > 0)のデータにだけ使えます。
- ヒルの式は、Xが0以上のデータにだけ使えます。
- データ点数がパラメータの数より少ないとフィットできません。
パラメータの初期値は、モデルごとにデータから自動で推定されます。例えばガウシアン・ローレンツ・フォークト系では、Yが最大になる位置を中心、Yの最大と最小の差を高さの初期値にします。
リストの末尾の「カスタム数式...」を選ぶと、自分で式を入力できます。
- 「カスタム数式...」を選びます。
- 現れた入力欄に、
xとパラメータ名を使って式を入力します(例:a*exp(-b*x)+c)。 - 入力すると、下のパラメータ表に、式から見つかったパラメータ名が現れます。
書き方のルール:
- 独立変数は
xです。 -
x以外の名前は、すべてフィットするパラメータとして扱われます。パラメータの並びは式に出てきた順です。 - 使える関数と定数は
exp、log(自然対数)、log10、sqrt、sin、cos、tan、abs、pi、eです。これらの名前はパラメータ名に使えません(例えばeという名前のパラメータは作れません)。 - 四則演算は
+ - * /、累乗は**です。 - カスタム数式の初期値は、すべて 1.0 から始まります。収束しないときは、パラメータ表で初期値を指定してください。
| 項目 | 説明 | 既定値 |
|---|---|---|
| Y誤差列を重みとして使用する(設定されている場合) | 誤差が大きい点ほどフィットへの影響を小さくします。データセットにY誤差列が設定されていないときは効果がありません | オフ |
| 損失関数 | 「通常の最小二乗(既定)」「ロバスト(Soft L1)」「ロバスト(Huber)」 | 通常の最小二乗 |
| フィット範囲を指定する | オンにすると、最小X〜最大Xの範囲(両端を含む)の点だけでフィットします | オフ |
| 最小X / 最大X | フィット範囲 | データのXの最小値 / 最大値 |
| パラメータごとの初期値・固定・範囲拘束 | パラメータごとの表(下記) | 指定なし |
| 信頼帯/予測帯 | 「表示しない」「信頼帯 (95%)」「予測帯 (95%)」 | 表示しない |
少数の外れ値に曲線が引っ張られてしまう場合は、「ロバスト(Soft L1)」または「ロバスト(Huber)」を選びます。どちらも、外れ値の影響を通常の最小二乗より小さくします。Huberの方が、外れ値でない点の付近では通常の最小二乗に近い振る舞いをします。
フィットが収束しない、または明らかにおかしな値になる場合に使います。表の列は次のとおりです。
| 列 | 使い方 |
|---|---|
| パラメータ | パラメータ名(編集不可) |
| 初期値/固定値 | 値を変更すると、その値が初期値として使われます |
| 固定 | チェックすると、「初期値/固定値」の値でパラメータを固定し、最適化しません |
| 範囲拘束 | チェックすると、パラメータを「最小」〜「最大」の範囲に制限します |
| 最小 / 最大 | 範囲拘束の下限と上限 |
- 「初期値/固定値」の欄には最初 1.000000 と表示されますが、値を変更しない限り、自動推定の初期値が使われます。
- 「固定」をチェックした行では、「範囲拘束」は使えなくなります。
- すべてのパラメータを固定することはできません。
- 初期値がちょうど範囲の端や範囲外にある場合は、自動的に範囲の少し内側に置き直されます。
ヒント: ガウシアンでピークの位置がずれてしまうときは、b(中心)に目で見たピーク位置を入れる、d(オフセット)を0に固定する、といった指定が効きます。
- 信頼帯 (95%): 「真の曲線」が入ると考えられる範囲です。パラメータの推定の不確かさだけから計算します。
- 予測帯 (95%): 「次に測った1点」が入ると考えられる範囲です。データのばらつきも加えるため、信頼帯より広くなります。
選んだ帯は、フィット曲線と同じ色の薄い塗りつぶしとして描かれます。データ点数がパラメータ数に比べて少なすぎるなどで帯を計算できない場合、フィット曲線だけが追加され、帯は描かれません。

結果ダイアログには次の内容が表示されます。
- 選んだモデル名(カスタム数式の場合は式も)
- 各パラメータの値(例:
b = 5.1985e+02は 519.85) -
R^2(決定係数) - 設定に応じた注記: 「(Y誤差列を重みとして使用)」「(フィット範囲: ...)」「(固定: ...)」「(範囲拘束: ...)」「(ロバストフィット: ...)」
- 残差プロット(実測値 − フィット値)
R²(決定係数) は、R² = 1 − Σ(残差²) / Σ(Y − Yの平均)² で計算され、1に近いほど当てはまりが良いことを示します。ただしR²が高くても、残差プロットに波打つような規則的なパターンが見える場合は、モデルが合っていない可能性があります。
ダイアログのボタン:
| ボタン | 動作 |
|---|---|
| コピー | 表示されている結果の文章をクリップボードにコピーします |
| CSVとして保存... | 「パラメータ」「値」の2列(最後の行はR^2)をCSVファイルに保存します |
| 閉じる | ダイアログを閉じます |
フィットに失敗した場合(収束しなかった、データ条件に合わないなど)は、「フィットエラー」のメッセージが表示され、データセットは追加されません。
ヒント: パラメータの標準誤差は、結果ダイアログの文章には表示されません。値 ± 誤差の形で確認したいときは、後述の「フィット結果のエクスポート」でグラフに注釈として書き込んでください。
表示 ▸ 残差プロット にチェックを入れると、残差プロットのドックが表示されます。データセットリストで Fit (...) データセットを選ぶと、そのフィットの残差(実測値 − フィット値)が散布図で表示されます。フィット結果を持たないデータセットを選んでいるときは、案内の文章が表示されます。
残差は、フィットに実際に使った点(フィット範囲内でマスクされていない点)についてのものです。フィット時に計算した値を表示するだけなので、元データを後から編集しても残差プロットは変わりません。
フィット結果はプロジェクトに保存され、後から何度でも利用できます。
Fit (...) データセットを選ぶと、右のプロパティの「配置・情報」区分にある「フィット情報」欄に、結果ダイアログと同じ文章が表示されます。
-
Fit (...)データセットを右クリック ▸ エクスポート ▸ フィット結果のエクスポート... を選びます(フィット結果を持つデータセットでだけ選べます)。 - 結果ダイアログがもう一度表示されます。フィットをやり直すことなく、コピーやCSV保存ができます。
- 続けて「グラフ上のテキスト注釈として焼き込みますか?」と尋ねられます。「Yes」を押すと、モデル名・各パラメータの「値 ± 標準誤差」・R² を書いたテキスト注釈がグラフに追加されます。
焼き込んだ注釈は、フィット曲線の中央付近に置かれます。通常の注釈と同じように移動・編集・削除でき、Ctrl+Z で取り消せます(注釈と図の仕上げ)。
Fit (...) データセットを右クリック ▸ エクスポート ▸ 「方法」文をコピー... を選ぶと、処理の流れ(例: ベースライン補正をしてからガウシアンでフィットした、など)を説明する日本語の文章がクリップボードにコピーされます。論文の「方法」の下書きに使えます。処理の流れは 表示 ▸ 処理履歴 でも確認できます(データ処理)。
Fit (...) データセットを右クリック ▸ 解析・注釈 ▸ 統計値アンカーラベルを追加... で「R²」を選ぶと、グラフの左上にR²の値のラベルが付きます。詳しくは ピーク解析と統計 を参照してください。
同じモデルを複数のデータセットに一度に当てはめられます。
- データセットリストで2件以上を選びます(
Ctrlキーを押しながらクリック)。 - 右クリック ▸ 複数データセット ▸ バッチカーブフィット... を選びます。
- 「曲線フィット」ダイアログで設定して「OK」を押します。設定はすべてのデータセットに共通で使われます。
- 進行状況のダイアログが表示され、「キャンセル」で残りの処理を中止できます(実行中の1件は最後まで計算されます)。
- 成功したデータセットごとに
Fit (元の名前)が追加されます。 - 終わると、成功した件数と、失敗したデータセットとその理由が表示されます。
- 個々の結果ダイアログは開きません。結果は各
Fit (...)データセットの「フィット情報」や「フィット結果のエクスポート...」で確認します。
注意: バッチカーブフィットのダイアログでは、「最小X / 最大X」の初期値がデータの範囲になっていません。フィット範囲を使う場合は値を入力してください。
重なり合った複数のピークを、同じ形の成分(ピーク)の和とベースラインに分離します。すべての成分とベースラインを同時に最適化します。
- データセットリストでデータセットを選びます。
- (任意)グラフ上部のツールバーにある「ピーク配置」ボタンを押し、グラフ上で各ピークの頂点付近をクリックして初期値を置きます。
- 画面下部のボタン列にある「多峰フィット」(ツールチップ名)を押します。
- 「多峰分離フィット」ダイアログで成分タイプ・ベースライン・各ピークの初期値を確認し、「OK」を押します。

ツールバーの「ピーク配置」ボタン(ツールチップ: ピーク配置 (クリックで多峰分離フィットの初期値を追加、右クリックで削除))を押すと、ピーク配置モードになります。
- 左クリック: クリックした位置を、ピークの中心(X)と高さ(Y)の初期値として追加します。グラフに縦の点線と × 印が表示されます。幅の初期値は、表示中のX軸の幅の5%になります。
- 右クリック: クリック位置に最も近い印を削除します(近くに印がないときは何もしません)。
置いた初期値は、「多峰フィット」ボタンを押したときにダイアログの表に引き継がれます。ダイアログを閉じると(「OK」でも「Cancel」でも)、グラフ上の印は消え、ピーク配置モードも終了します。
ピーク配置モードは、データカーソルや注釈などの他のマウスモードとは同時に使えません。
| 項目 | 説明 | 既定値 |
|---|---|---|
| 成分タイプ(全ピーク共通) | 「ガウシアン」「ローレンツ」「擬似フォークト」「フォークト」 | ガウシアン |
| ベースライン | 「なし」「定数」「1次」 | 定数 |
| 各ピークの初期値 | 1行が1つのピーク。「中心 (X)」「高さ」「幅 (FWHM)」 | ピーク配置モードで置いた点 |
表の下のボタン:
- 行を追加: 空の行(中心 0、高さ 0、幅 1)を追加します。値を入力してください。
- 選択行を削除: 選択した行を削除します。
- ピーク検出から自動配置...: 「ピーク検出 設定」ダイアログを開き、検出したピークの位置・高さ・半値全幅を行として追加します(既存の行は残ります)。設定の意味は ピーク解析と統計 を参照してください。
行が1つもないと実行できません。幅は半値全幅(FWHM)のおおよその値で構いません。
各成分の式は、単峰のモデルからオフセット(d)を除いたものです。
| 成分タイプ | 1成分の式 | パラメータ |
|---|---|---|
| ガウシアン | a·exp(−(x−b)² / (2c²)) | a(高さ), b(中心), c(標準偏差) |
| ローレンツ | a / (1 + ((x−b)/c)²) | a(高さ), b(中心), c(半値半幅) |
| 擬似フォークト | a·(η·L + (1−η)·G)(L, G は曲線フィットの擬似フォークト関数と同じ) | a, b, c(幅), eta |
| フォークト | a·Re[w((x−b+iγ)/(σ√2))] / (σ√(2π)) | a, b, sigma, gamma |
| ベースライン | 式 | パラメータ |
|---|---|---|
| なし | なし | なし |
| 定数 | c | baseline_c |
| 1次 | m·x + b | baseline_m, baseline_b |
結果では、パラメータ名の後ろに成分の番号(1から始まり、表の行の順)が付きます。例えばガウシアン2成分+定数ベースラインでは、a1, b1, c1, a2, b2, c2, baseline_c となります。
-
MultiPeakFit (元の名前)という新しいデータセットが追加されます。これは全成分とベースラインの合計の曲線です。 - 結果ダイアログ(「多峰分離フィット完了」)に、各成分のパラメータ(a1, b1, ...)と R²、残差プロットが表示されます。「コピー」「CSVとして保存...」は曲線フィットと同じです。
- 各成分の中心は b1, b2, ...、高さは a1, a2, ...(ガウシアン・ローレンツの場合)で読み取れます。
注意: 成分ごとの曲線は、グラフに別々には描かれません。個々のピークを重ねて見せたい場合は、読み取ったパラメータから列計算などで曲線を作ってください。
注意: 多峰フィットでは、曲線フィットにある「フィット範囲」「重み付け」「損失関数」「パラメータの固定・範囲拘束」「信頼帯/予測帯」は使えません。範囲を絞りたい場合は、先にツールバーの「範囲選択」モードや行フィルタで不要な範囲をマスクしてからフィットしてください。
プラグインは、新しいフィット関数を追加できます。追加された関数は、「曲線フィット」ダイアログのリストで、組み込みモデルと「カスタム数式...」の間に表示され、組み込みモデルと同じように使えます。プラグインの導入方法は プラグイン を参照してください。
Graphica v1.4.2 時点の内容です。画面や項目名が異なる場合は Issues でお知らせください。