web-dev-qa-db-ja.com

Excelでのデータポイントの内挿

これは、他の人が以前に何度も解決した問題の一種であると確信しています。

人々のグループが測定を行います(正確には家庭のエネルギー使用量)。それらはすべて、異なる時間に、異なる間隔でそれを行います。

したがって、各人から取得するのは、{date、value}のペアのセットで、そのセットには日付がありません。

私が必要なのは、{date、value}ペアの完全なセットで、範囲内の各日付について値がわかっている(測定または計算された)ものです。このプロジェクトには単純な線形補間で十分だと思います。

Excelで行う必要があると仮定した場合。そのようなデータセットで補間する最良の方法は何ですか(したがって、毎日の価値があります)?

ありがとう。

注:これらのデータセットが完成したら、勾配(つまり、1日あたりの使用量)を決定し、そこから家と家の比較を開始できます。

追加情報最初のいくつかの提案の後:私は、測定セットの穴がどこにあるかを手動で把握したくありません(不完全な測定セットが多すぎます!!)。私はそれを行うための自動化された(既存の)何かを探しています。だから私の入力が

{2009-06-01,  10}
{2009-06-03,  20}
{2009-06-06, 110}

その後、自動的に取得する予定です

{2009-06-01,  10}
{2009-06-02,  15}
{2009-06-03,  20}
{2009-06-04,  50}
{2009-06-05,  80}
{2009-06-06, 110}

はい、これを行うソフトウェアを作成できます。この(やや一般的な)問題に対して、誰かが既に「実行可能な」ソフトウェア(Excel)機能を持っていることを望んでいます。

20
Niels Basjes

最も簡単な方法は、おそらく次のとおりです。

  1. ここからExcelアドオンをダウンロードします。 Microsoft ExcelのXlXtrFun™追加機能

  2. 関数intepolate()を使用します。 = Interpolate($ A $ 1:$ A $ 3、$ B $ 1:$ B $ 3、D1、FALSE、FALSE)

列AとBには入力が含まれ、列Gにはすべての日付値が含まれている必要があります。数式は列Eに入ります。

5
Deniss

私はこれに出くわし、アドインをインストールしていない人とシートを共有するのが難しくなるため、アドインを使用することに消極的でした。

私のオフィスメイトは、比較的コンパクトなクリーンなフォーミュラを設計しました(少し魔法を使うのは高価です)。

注意事項:

  • 式は次のように機能します。

    • MATCH関数を使用して、検索対象の値の直前のinputs範囲内の行を見つけます(たとえば、3は3.5の直前の値です)
    • OFFSETsを使用して、その行と次の行(明るい紫色)の正方形を選択します
    • FORECASTを使用して、これらの2点のみを使用して線形補間を作成し、結果を取得します
  • この式は外挿できません。検索値がエンドポイント間であることを確認してください(以下の例では、極端な値を使用してこれを行っています)。

これが人々にとって複雑すぎるかどうかはわかりません。しかし、非常に移植性が高いという利点がありました(多くの代替ソリューションよりも簡単です)。

数式をコピーして貼り付ける場合、次のようになります。

=FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1

inputsは名前付き範囲です)

29
YGA

[〜#〜] linest [〜#〜][〜#〜] trend [〜#〜] の2つの関数があります。より良い結果が得られます。どちらも、既知のXとYのセットを新しいX値とともに使用し、新しいY値を計算します。違いは、LINESTは単純な線形回帰を実行するのに対し、TRENDは回帰を実行する前にデータに適合する曲線を最初に見つけようとすることです。

5
Bill the Lizard

YGAによる上記の答えは、目的のX値が参照範囲のX値と同じである範囲終了の場合を処理しません。 YGAが提供する例を使用すると、Excel式は#DIV/0!を返します。 9999の補間値が要求された場合のエラー。これは明らかに、YGAが9999と-9999の極端なエンドポイントを入力データ範囲に追加し、すべての予測値がこれら2つの数値の間にあると仮定する理由の一部です。そのようなパディングが望ましくないか不可能な場合、#DIV/0を回避する別の方法!エラーは、次の式を使用して正確な入力値の一致を確認することです。

=IF(ISNA(MATCH(F3,inputs,0)),FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1)),OFFSET(inputs,MATCH(F3,inputs)-1,1,1,1))

f3は、補間結果が必要な値です。

注:元のYGA投稿へのコメントとしてこれを追加したばかりですが、まだ十分な評判ポイントがありません。

2
DakotaD

補間結果がどの程度適合するかを確認するための素敵なグラフィカルな方法:

日付と値のペアを取得し、ExcelのXYチャート(折れ線グラフではありません)を使用してグラフ化します。グラフ上の結果の線を右クリックし、「トレンドラインを追加」をクリックします。使用する曲線近似のタイプを選択するためのさまざまなオプションがあります。次に、新しく作成されたトレンドラインのプロパティに移動して、方程式とR 2乗値を表示できます。

近似曲線方程式ラベルをフォーマットするときは、数値定数を高精度に設定して、方程式定数のすべての有効数字が表示されるようにしてください。

2
Stewbob

Excelの「トレンドライン」機能を使用して、データに最適な式を見つけることができます。その式を使用して、任意のyに対してxを計算できます

  1. 線形散布(XY)を作成します(挿入=>散布)。
  2. 多項式または移動平均トレンドラインを作成し、「チャートに方程式を表示する」をチェックします(系列を右クリック=>トレンドラインを追加);
  3. 方程式をセルにコピーし、x 'sを目的のx値に置き換えます

以下のスクリーンショットでは、A12:A16はxを保持し、B12:B16はyを保持し、C12にはyxを計算する式が含まれています。

Excel Interpolation

最初に回答を投稿しました ここ ですが、後でこの質問が見つかりました

1
alexkovelsky

代わりに。

=INDEX(yVals,MATCH(J7,xVals,1))+(J7-MATCH(J7,xVals,1))*(INDEX(yVals,MATCH(J7,xVals,1)+1)-INDEX(yVals,MATCH(J7,xVals,1)))/(INDEX(xVals,MATCH(J7,xVals,1)+1)-MATCH(J7,xVals,1))

どこ j7はx値です。

xvalsはx値の範囲yvalsはy値の範囲

これをコードに入れるのが簡単です。

1
darren