年平均成長率(CAGR)と前年比を年次表から計算

年平均成長率(CAGR)と前年比を年次表から計算

厳密に昇順の年と正の値を貼り付け、各行の前年比と初年度からの年平均成長率(CAGR)を実年差で計算します。

入力

year,valueの固定2列をCSV・TSV・空白区切りで2〜201行入力します。空セルや余分な列は使えません。

使い方

  1. 年平均成長率の入力欄で列名、列順、単位、行数を確認し、既定例または自分のデータを用意します。
  2. CSV、TSV、空白区切りの一形式に統一し、空セル、注釈列、単位文字を除いて入力します。
  3. 計算するを押し、結果表の先頭、中央、末尾と件数を元データまたは手計算に照合します。
  4. 必要ならTSVをコピーし、元入力、単位、期間、仮定、計算日時と一緒に保存します。

計算式・考え方

前年比=(V_i/V_(i−1)−1)×100%。CAGR=(exp((ln V_i−ln V_0)/(year_i−year_0))−1)×100%。先頭行の率は未定義です。

注意事項

  • 前年比は現在行の値を直前入力行の値で割った変化です。年が2015から2017へ飛んでも二年間で年率化せず、2017行の前年比列は直前観測2015との全期間変化を示します。名称上の誤読を避けるため、欠年がある表では直前観測比として読み、毎年値が必要なら元データを確認してください。
  • CAGRは初年度値と各行値の比を実際の年差で年率化します。2014から2018なら指数は1/4です。途中年の経路を平均せず、開始と終了を一定率で滑らかにつないだ等価率なので、途中の急落、回復、変動幅はCAGR一数から分かりません。
  • 先頭行には以前の値も正の経過年数もないため、前年比とCAGRを0%にせず未定義と表示します。0%は変化がなかったという実在する結果であり、定義できないこととは別です。TSVコピーでも未定義という文字を残し、空欄や0へ変換しないでください。
  • 年は1〜9999の整数で厳密な昇順、値は正に限定します。同年重複、逆順、年の小数、0以下の値を拒否します。開始値0では比率を定義できず、負値を跨ぐ成長率には実数CAGRが一意でないためです。赤字から黒字への推移は金額差など別の指標で説明してください。
  • 計算では値の比を直接べき乗せず、ln(現在値)−ln(初年度値)を年差で割り、expm1で率へ戻します。正の極端値でも比の一時overflowを減らすためです。前年比は隣接値の比なので、極端な尺度差で有限上限を超えれば停止します。
  • 既定例の最終2018年は前年比12.5%、2014年からのCAGR約15.8292185288%です。canonical表示の15.83%は丸め値で、内部値そのものではありません。2015年の20%、2016年の前年比約16.6667%とCAGR約18.3216%も行ごとに照合してください。
  • 値が毎年同じなら前年比とCAGRは先頭以外0%です。毎年一定倍率なら両率は同じ一定値になります。値が減少しても正のままなら負の率を表示し、結果をエラーや0へ置き換えません。これらの性質は入力方向と百分率の向きを確認する境界テストになります。
  • Microsoft RRIは現在価値、将来価値、期間数から等価利率を返す関数で、CAGRの端点計算と同じ考え方です。Investor.govのannual return説明も年単位の変化率を読む参考にしています。ただし投資収益、売上、人口など対象ごとの配当、入出金、物価、会計変更はこの単純式へ自動反映しません。
  • 途中に資本注入、追加投資、事業売却、通貨換算、会計基準変更がある時系列では、端点のCAGRを純粋な事業成長と解釈できないことがあります。元値の定義を同じに揃え、必要ならキャッシュフローを考慮するIRRや実質成長率など別指標を使ってください。
  • CAGRは将来予測ではありません。過去の端点を一定率で要約しただけで、次年も同じ率が続く確率や信頼区間を計算しません。意思決定では各年値、変動、外部要因、慎重シナリオを併記し、滑らかな率だけでリスクを隠さないようにします。
  • 入力表はカンマ区切りCSV、タブ区切りTSV、単純な空白区切りのいずれか一つを使います。先頭行には定義済みの英字列名を置けますが、途中の文字行、引用符付きCSV、注釈列、単位列は読み飛ばしません。区切りを混在させた行、列不足、余分な列は推測補正せずエラーにするため、表計算ソフトから貼り付けた後に先頭と末尾を確認してください。
  • 数値は符号、小数点、指数表記を含む厳密な十進表現だけを読みます。NaN、Infinity、空文字、HTMLタグ、JavaScript、数式、通貨記号、単位付き文字は数値へ変換しません。空セルを0とみなす処理やeval、new Functionは使わないため、欠測と実測0を意図せず同一視することを避けられます。欠測を扱う分析は別の前処理で方針を決めてください。
  • 実データは2行以上201行以下、入力全体はJavaScriptのUTF-16長で32000文字以下、各数値は絶対値1e100以下の有限値です。上限を超えた行を末尾から切り捨てたり、Infinityを最大値へ置き換えたりしません。巨大入力による画面停止と、意味を説明できない桁あふれを防ぐ境界であり、任意精度統計や大規模データ基盤の代用ではありません。
  • 入力順、重複値、負値は、そのページの数式が許す範囲で保持します。自動sort、重複排除、外れ値除去、欠測補完、単位換算は行いません。計算が成功したことは元データが正しいことを意味しないため、列の意味、単位、対象期間、収集条件、除外規則を別に記録し、元表の行数と結果に示す行数または件数を照合してください。
  • 内部計算は一般的なIEEE 754 binary64です。和にはPython版とJavaScript版で同じ順序のNeumaier補償和を用いて単純加算の桁落ちを減らしますが、10進小数を2進数へ変換する丸めは残ります。表示桁が増えても入力精度が増えたわけではなく、法定帳票、研究データ、監査値で指定された十進丸めや任意精度計算を置き換えません。
  • 結果表には列見出し、caption、先頭列の行見出し、スクロール領域を設けています。狭い画面では表だけを横へ動かし、ページ全体のレイアウトを崩しません。コピーは見出し付きTSVで、数値は再利用しやすい生の文字列、未定義は文字として出します。表計算ソフトへ貼り付けた後は小数点、指数表記、百分率の解釈を再確認してください。
  • 計算、検証、表生成、コピー文字列の作成は開いているブラウザー内だけで完結し、外部API、CDN、ファイルアップロード、サーバー保存を使いません。ただし共有端末の画面、OSのクリップボード履歴、ブラウザー拡張、画面共有までは制御できません。顧客名や口座情報など計算に不要な機密文字列を貼り付けず、組織の端末規則に従ってください。
  • 再現するときは元の貼り付け文字列、区切り形式、列名、単位、計算日時、採用した行、画面からコピーしたTSVを同じ記録へ残します。通常例だけでなく、最小2行、同値、減少、0など意味のある境界例も試し、結果が予想した方向へ動くかを確認してください。重要な判断では独立した表計算式、手計算、公式資料、担当者レビューと照合します。
  • binary64による汎用計算です。入力定義、単位、標本・会計範囲、正式な丸めは独立に確認してください。

よくある質問

空セルや文字を0として計算できますか?

できません。欠測と実測0を分けるため空セルを拒否し、厳密な十進数だけを受け付けます。注釈、単位、式、HTMLは別列または別記録へ移してください。

201行を超える表は自動で一部だけ計算しますか?

しません。切り捨てによる標本変更を避けるため全体をエラーにします。期間分割や目的に合う集約を別途行い、その方法と元表を保存してください。

画面の結果を正式な統計・会計値として使えますか?

式の検算には使えますが、binary64と汎用表示です。正式な丸め、データ定義、標本設計、会計範囲を確認し、重要な利用では独立計算と担当者レビューを行ってください。

入力内容はサーバーへ送信されますか?

送信しません。解析と表生成はブラウザー内だけで完結します。共有端末、クリップボード、拡張機能の扱いは利用者側の規則に従ってください。

年平均成長率の入力解析、最大201行の計算、表表示、TSV生成はclient-onlyで行い、外部API、CDN、アップロード、サーバー保存を使用しません。