web-dev-qa-db-ja.com

Excelで任意のデータの中間値を補間する方法

この例のようなデータテーブルがあり、この場合A1:B9に9つのエントリがあります。

A    B
--   ---
1    2.9
2    5.06
3    7
4    8.84
5    10.87
6    13.24
7    16.22
8    20.25
9    36.7

上記は、B、電圧などの非線形の増加する物理変数の9つの測定値を表しており、Aは、測定が行われた9分の各1つを正確に表しています。

B列の最大値の「次の整数」である行数を使用して、列EとFの2番目のテーブルを作成します。この場合、B9 = 36.7なので、37行になります。列F1:F37には整数1から37が含まれ、列Eには列AからBと同じ関係でFに対応する数値が必要です。つまり、列Fの値に対応する列Eの値を補間します。

たとえば、A3 = 3およびB3 = 7です。この場合、Bは既に整数7を含み、列Aに一致する値があるため、F7 = 7およびE7 = 3です。ただし、F8 = 8は列Bに含まれない中間値です。したがって、E8は3の間にあります。 4、元のデータに基づいており、補間する必要があります。

アイデアは、グラフをプロットするときに、A1:B9がE1:F37と同じ形状になることです。この例では、元の測定の過程で発生した37の整数結果にデータテーブルを拡張し、それらの値が発生した時間(小数点以下の桁がE列)を確認します。

私が試したこと

これを自分で解決しようとすると、時間のかかる式を見つけることができました(私の試みでは、E列とF列が上記で説明したものと逆になっていることに注意してください)。

  1. B列要素間の差を含む列(K)を作成しました。 K5 = B5-B4。これは、すべてのX増分のY変位です。
  2. 列Eには、Bの最大の要素の次の整数値として、1から始まる連続した整数(37)が含まれます。この場合、B9には36.7、つまり37が含まれます。
  3. F1:F37で次の式を入力します。

セルF1に含まれるもの:

=IF(E1>$B$9,$A$9+(E1-$B$9)/$K$9,IF(E1>$B$8,$A$8+(E1-$B$8)
    /$K$9,IF(E1>$B$7,$A$7+(‌​E1-$B$7)/$K$8,IF(E1>$B$6,$A$6+(E1-$B$6)
    /$K$7,IF(E1>$B$5,$A$5+(E1-$B$5)/$K$6,IF(E1‌​>$B$4,$A$4+
    (E1-$B$4)/$K$5,IF(E1>$B$3,$A$3+(E1-$B$3)/$K$4,IF(E1>$B$2,$A$2+
    (E1-$B$2‌​)/$K$3,IF(E1>$B$1,$A$1+(E1-$B$1)/$K$2,E1/$K$1)))))))))  

それはかなりうまくいきます。しかし、これは自動化された公式ではありません。列A + B(X + Y)の要素と同じ数の「IF」を入力する必要があります。 A1:B9とE1:F37(正しいX/Yシーケンスのために反転)からの線で散布図をテストしましたが、それらはまったく同じ曲線形状を生成したので、機能します。

ただし、データセットごとに面倒なカスタムの手動プロセスが必要になるため、効果的なソリューションではありません。私は、Excelに組み込まれた機能を使用してこれをより自動化された方法で実現する方法、または少なくとも数式を使用したより一般的なアプローチを探しています。

4
Wagner Lip

短い答え

補間は、X値とY値を関連付ける方程式に基づいています。実際の方程式がわかっている場合は、必要な中間値を直接計算できます。そうでない場合は、近似を使用して補間します。近似の品質により、中間値の精度が決まります。限られた数のポイントで曲線を近似する場合、線形補間は粗雑になります。より良い結果をもたらす他のいくつかのアプローチと、ほとんどの作業を行う組み込みの分析ツールがあります。

長い答え

中間値の補間を自動化する「一般式」またはソリューションを探しています。ほぼすべてのデータに線形補間を使用できますが、データポイントの数が限られていて、データの形状に大きな曲率がある場合、結果は粗雑になります。精度が必要な場合は、「1つのサイズですべてに対応できる」ソリューションはありません。特定のデータセットの最適なソリューションは、データの特性によって異なります。

方程式

どのように実行しても、補間はXとYの関係を定義する方程式を使用して実行されます。方程式は実際の方程式または推定値のいずれかになります。見積もりである場合、データの性質と達成する必要のあるものによって駆動されるさまざまなアプローチがいくつかあります。

他の質問では、式_Y=2^X_に基づくデータを使用しました。実際の方程式があれば、正確に補間できます。 XまたはYのいずれかの新しい値を選択すると、方程式によって他の値が得られます。実際の方程式がわからない場合は、それを近似する方程式を見つける必要があります。この答えを使用して、補間アプローチに焦点を当てます。これらは通常、ほとんどの作業を行う組み込みの分析ツールを使用します。特定のツールまたはより自動化されたアプローチを使用するメカニズムの詳細が必要な場合は、別の回答で詳しく説明します。

実際の方程式を見つけてみてください

最善の解決策は、実際の方程式が何かを判断できるかどうかを確認することです。データを生成したプロセスがわかっている場合は、方程式の性質を知ることができます。多くのプロセスは、制御された条件下でランダムなノイズなしで単一の駆動変数を扱う場合、方程式のタイプがわかっている単純な曲線に従います。したがって、最初のステップは、データの形状を見て、それがそれらのいずれかに類似しているかどうかを確認することです。

これを行う簡単な方法は、データをグラフ化して傾向線を追加することです。 Excelには、近似を試行するために利用できる多くの一般的な曲線があります。

trend menu

他の質問の_2^N_データでこれを試してみましょう。数字のパターンを認識せず、トレンドラインアプローチを試した場合、さまざまな形の曲線のアイコンが表示されます。指数曲線は同じ一般的な形状であり、これはあなたにこれを与えるでしょう:

2^N

Excelは、_2_ではなくeをベースとして使用します。これは単なる翻訳です(e0.693 _2_)です。視覚的には、トレンドラインがデータに正確に従っていることがわかります。 R2 それも教えてくれます。 R2 方程式で説明するデータの変動量の統計的尺度です。値_1_は、方程式が変動の100%、または完全な適合を説明していることを意味します。

この質問の例にも、指数関数的な形があります。同じアプローチを試みると、次の結果が得られます。

exp fit

したがって、このデータは指数関数的ではありません。いくつかの自然なプロセスを説明し、さまざまな曲線を模倣できる多項式を試すことができます(これについては後で詳しく説明します)。

poly 3

データの背後にあるプロセスの概算として、これはあまり適していません。 3次(Xの累乗からX ^ 3までを含む方程式)では、データよりも大きな変曲点があり、まだ一致していません。したがって、基礎となる方程式は単純な一般的な曲線のようには見えません。つまり、方程式を近似する必要があります。

線形補間

これは、コメントで説明する方法です。これは簡単で、単純な式を使用しており、自動化はかなり簡単です。ポイント数が多く、ポイント間の直線が十分近い場合は、これで十分です。多くの曲線では、一部の領域の短いセグメントは直線に近くなります。ただし、これは曲線の近似としては不十分であり、曲率の大きな領域では結果が不正確になります。あなたの例では、7と8のX値の間の領域には、多くの曲率があります。この領域では、実際の曲線と比較した直線は次のようになります。

straight vs curve

あらゆるデータに適用できる一般的なソリューションを探しています。線形補間は、一部のデータには粗雑すぎる場合があります。

回帰

ここや他の投稿で、人々はアプローチとして回帰を提案しています。これは、トレンドラインまたはそれらの基礎となるワークシート関数、または分析ツールを使用して行うことができます(そのオプションはExcelにロードする必要があり、デフォルトではロードされない可能性があるAnalysis Toolkitにあると思います)。

回帰は、データと曲線の間の総誤差を最小化する目的で、データに曲線を適合させようとします。通常の使用法では、これはこのタスクに適したツールではありません(傾向線を当てはめるために使用される方法であり、必要なものと比較してそれを確認しました)。

  • データの背後にあるプロセスをモデル化することが目的である状況を対象としています。データは不正確であると想定されており、回帰はそれが実際にどうあるべきかを示唆しています。回帰によって検出された曲線は、実際のデータポイントを通過しない場合があります。あなたのケースでは、データが与えられ、正確であると想定されています。曲線はすべての点を通過する必要があります。

  • 回帰は、単一の方程式をすべてのデータに当てはめようとします。データを作成したプロセスが、試行可能な方程式のタイプによって記述されていない場合は、効果がありません。多数のデータポイントがある場合、各セグメントの線形補間は、すべてのデータの回帰曲線よりも優れた近似になります。

ただし、回帰を通常の方法で使用するのではなく、回帰を目的の回避策として「乱用」することができ、通常は機能します。プロセスをモデル化しようとするとき、最も単純な公式が通常評価されます(Occamのかみそり)。一方、十分に複雑な方程式があれば、何にでも合わせることができます。あなたはいつでもあらゆる点を通過する落書きを描くことができます。 Nポイントを使用すると、すべてのポイントを通過する_N-1_次多項式を見つけることができます(最悪のシナリオ)。

「通常」と言うのは、場合によっては、それが目的に役に立たないかなり拷問された行であるためです。また、このアプローチは、結果の方程式がデータの範囲外の動作を予測するという意味で、実際には何も「モデル化」しないことに注意してください。

これは、連続的に高次の方程式を使用した多項式回帰を使用したデータの分析です(最初のスクリーンショットには次数3〜5が含まれています)。

poly 3-5

(判読可能なサイズについては、画像をクリックしてください。)分析ツールには、実行したい種類の補間が含まれています。中間値を生成しました。各分析のa(n)値は、検出された方程式の係数です。 a(0)は定数、a(1)はX ^ 1項の係数などです。これはR2 フィットの値。目的に十分に近づけるには、実質的に_1_である必要があります。

最大の違いがある元のデータ値を強調表示しました。この次数の範囲では、連続する各次数でフィットが少し良くなりますが、どの点がより正確に記述されるかは変わる可能性があります。これら3つのグラフを次に示します。

poly 3-5 chart

6次と7次の多項式に到達すると、次のようになります。

poly 6-7

poly 6-7 chart

9つの値を8次の多項式に適用した場合、それは完璧ですが、7次はおそらく十分近いです。見方については、7次方程式にR2 .99999であり、まだ完全ではありません。

回帰分析ツールを使用して適切な近似(この場合は7次または8次の方程式)を見つけると、必要な中間値が生成されます。ただし、結果をグラフ化し、曲線を目視して、落書きではないことを確認することをお勧めします。

スプライン

データをグラフ化し、滑らかな線のオプションを選択した場合、Excelがそれを生成するために使用するのはスプラインです。実際、コンピュータグラフィックスのほとんどすべてのアプリケーション(フォント定義を含む)は、滑らかな曲線と曲線の遷移のためのスプラインに基づいています。これは、ドラフトマンがかつて任意のポイントを曲線に接続するために使用した柔軟なルールにちなんで名付けられました。

スプラインは、隣接する点を考慮して、一度に1つのセクションである各セクションの曲線を作成します。曲線は各ポイントを通過し、ポイントを直線で接続するときのように、ポイントの両側に急激な変化はありません。

スプラインに使用される方程式は、データを生成したプロセスをモデル化しようとするものではありません。きれいに見えるようにすることです。ただし、ほとんどのプロセスは、ある種の連続した滑らかな曲線に従います。単一の曲線セグメントを扱う場合、一般的に類似した形状の曲線を生成する多くの異なる方程式は、セグメント内で非常に類似した値を生成します。したがって、ほとんどの場合、スプラインは必要なものに対して適切な近似を生成します(そして、各ポイントを強制的に通過させる必要がある回帰とは異なり、スプラインは自然にすべてのポイントを通過します)。

繰り返しますが、「ほとんどの場合」と言います。スプラインは、非常に均一で規則的なデータに最適で、曲線の「ルール」に従います。異常なデータを使用して、予期しないことを行う可能性があります。たとえば、 前のSUの質問 は、Excelで作成されたデータのグラフにおけるこの奇妙な負の「落ち込み」についてでした。

dip

スプラインはジェロに少し似ています。ゼリーの大きな塊を想像してみてください。そして、あなたはそれらを望む場所に特定の場所を制限します。 Jelloの残りの部分は、必要な場所で膨らみます。方程式は、特定の種類の曲線を定義できます。特定のポイントを介してカーブを強制すると、同じことが起こります。スプラインでは、効果は奇妙なふくらみや不自然な曲線セグメントに制限されます。高次回帰方程式はワイルドパスをたどることができます。

これは、スプラインがデータの曲線を表す方法です。

spline

spline chart

これを高次回帰曲線と比較すると、スプラインは局所的な変動に対して「応答性」が高くなります。

この分析は、スプラインを含む分析アドインが含まれているLibreOffice Calcを使用して行いました。ご覧のとおり、これはスプライン、つまり求めている補間結果も生成します。 Excelの分析ツールキットにアクセスする準備ができていないため、Excelにスプラインが含まれているかどうかわかりません。そうでない場合、LO CalcはWindowsで実行され、無料です。

ボトムライン

これは、中間値を補間するために使用できるアプローチをカバーしています。異なるアプローチが異なるデータでよりうまく機能する可能性があります。または、要件は、概算、高速、および簡単なものにすることができます。必要な補間の種類を決定します。それを達成する方法の詳細が必要な場合は、別の答えでメカニズムに対処できます。

7
fixer1234