パーセントポイントとパーセントの違い:パーセントポイントとは?
パーセントポイントは二つのパーセントの差を測る単位で、変化率とは別のものです。パーセントポイントとは何か、パーセントポイントの変化と差の求め方、ベーシスポイントも扱います。
例の値が入力されています。ご自身の値に置き換えてください。
パーセントポイントの変化
+2
増加
計算過程
- 6 − 4 = 2パーセントポイント
- 2 ÷ 4 × 100 = 50%
- 相対的な変化
- +50%
- ベーシスポイントの変化
- +200
変化率は初期値の絶対値で割るため、−50から−25への変化は+50%で、増加になります。
ある見出しは失業率が50%急増したと伝え、別の見出しは2ポイント上がったと伝えます。どちらも4%から6%への同じ動きを表すことがありますが、測っているものは別で、一方は差、他方は比です。
パーセントポイントは二つのパーセントの差を表す単位なので、6%から4%を引くと2パーセントポイントです。変化率は、その差を最初の率と比べたもので、2 ÷ 4 は50%です。このパーセントポイント計算機に最初の率と最後の率を入力すると、計算の過程つきで両方が求まります。
パーセントポイントとは?
結論: パーセントポイントは、二つのパーセントの差を測る単位で、差の一単位が一パーセントポイントです。40%から44%に動いた割合は、4パーセントポイント上がりました。同じ動きは、4 ÷ 40 = 0.10なので、相対的には10%の増加です。
単位はpp、pts、または単に「ポイント」と書きます。全体に対するパーセントで表されているものなら何にでも使え、失業率、金利、得票率、インフレ率などがあります。0から100の目盛り上の距離を測るので、4ポイントの差は、40%でも4%でも同じ差です。「パーセンテージポイント」と書く人もいますが、標準的な用語は「パーセントポイント」です。
パーセントとパーセントポイントの違い
同じ二つの数に対する別の問いに答えます。パーセントポイントの変化は絶対的な差、つまり最後の率から最初の率を引いたものです。変化率は、その差を最初の率で割ったものです。
相対的な数字は基準に左右されるので、率が小さいと大げさに見えます。4%の率で二ポイントは50%の上昇です。40%の率で二ポイントは5%です。ポイントでの差は、どちらも2です。
4%から6%は+2ポイントで+50%です。6%から4%は−2ポイントですが−33.33%になります。基準が6になるからです。ポイントは対称で、パーセントは対称ではありません。
パーセントポイントの変化の計算方法
- 最初の率と最後の率を、同じ全体に対するパーセントとして書きます。
- 最後の率から最初の率を引きます。結果がパーセントポイントでの変化で、符号が向きを表します。
- 相対的な変化は、その差を最初の率で割り、100をかけます。
パーセントポイントの変化 = 最後の率 - 最初の率相対的な変化 = (最後の率 - 最初の率) / abs(最初の率) × 100%同じ引き算で、二つのグループの間のパーセントポイントの差も求まります。一方のグループの52%と他方の47%は、5ポイント離れています。分かっている変化を当てはめるには、率にポイントを足します。4.5%から0.25ポイント引くと4.25%です。
パーセントポイントの例
例題1:失業率、4%から6%
条件
手順 1
ポイントでは、6 − 4 = 2 です。
答え
例題2:金利、4.25%から4.50%
条件
手順 1
ポイントでは、4.50 − 4.25 = 0.25 で、25ベーシスポイントです。
答え
例題3:世論調査、52%対46%
条件
手順 1
リードは 52 − 46 = 6パーセントポイントであり、6%のリードではありません。
答え
例題4:加えたポイントと加えたパーセント
条件
手順 1
代わりに0.75パーセント上がったとすると、新しい率は 5.5 × 1.0075 = 5.54125 で、5.54%になります。
答え
パーセントポイントとベーシスポイントの違い
ベーシスポイントはパーセントポイントの百分の一なので、1ポイントは100ベーシスポイントです。25ベーシスポイントは0.25ポイント、150ベーシスポイントは1.5ポイントです。変換するには、ベーシスポイントを100で割るとポイント、ポイントに100をかけるとベーシスポイントになります。
パーセントポイントのコード
どちらのバージョンも、上の例の結果(2と50、0.25と5.88、6と13.04、6.25と5.54)を再現し、最初の率が0のときは相対的な変化を返さず、数値以外の入力を拒否します。
JavaScript
function finite(name, v) { if (typeof v !== "number" || !Number.isFinite(v)) throw new TypeError(`${name} must be a finite number`);}function checkDecimals(decimals) { if (!Number.isInteger(decimals) || decimals < 0 || decimals > 10) throw new RangeError("decimals must be a whole number from 0 to 10");}export function percentagePointChange(start, end, decimals = 2) { finite("start", start); finite("end", end); checkDecimals(decimals); const points = Number((end - start).toFixed(decimals)); const relativePercent = start === 0 ? null : Number((((end - start) / Math.abs(start)) * 100).toFixed(decimals)); return { points, relativePercent };}export function addPoints(rate, points, decimals = 2) { finite("rate", rate); finite("points", points); checkDecimals(decimals); return Number((rate + points).toFixed(decimals));}export function addPercent(rate, percent, decimals = 2) { finite("rate", rate); finite("percent", percent); checkDecimals(decimals); return Number((rate * (1 + percent / 100)).toFixed(decimals));}export function parseRate(raw) { const s = String(raw).trim().replace(/%$/, "").replace(",", "."); return /^[+-]?(\d+\.?\d*|\.\d+)$/.test(s) ? Number(s) : NaN;}Python
from decimal import Decimal, ROUND_HALF_UP, InvalidOperationdef _rate(name, v): if isinstance(v, bool) or not isinstance(v, (int, float, str, Decimal)): raise ValueError(f"{name} must be a number") try: d = Decimal(str(v).strip().rstrip("%").replace(",", ".")) except InvalidOperation: raise ValueError(f"{name} must be a number") if not d.is_finite(): raise ValueError(f"{name} must be a finite number") return ddef _round(d, decimals): if not isinstance(decimals, int) or isinstance(decimals, bool) or not 0 <= decimals <= 10: raise ValueError("decimals must be a whole number from 0 to 10") return d.quantize(Decimal(1).scaleb(-decimals), rounding=ROUND_HALF_UP)def percentage_point_change(start, end, decimals=2): s, e = _rate("start", start), _rate("end", end) points = _round(e - s, decimals) relative = None if s == 0 else _round((e - s) / abs(s) * 100, decimals) return points, relativedef add_points(rate, points, decimals=2): return _round(_rate("rate", rate) + _rate("points", points), decimals)def add_percent(rate, percent, decimals=2): return _round(_rate("rate", rate) * (1 + _rate("percent", percent) / 100), decimals)percentagePointChange(4, 6) は { points: 2, relativePercent: 50 } を返します。相対的な変化は、変化率計算機と同じ約束事で、最初の率の絶対値で割ります。Python版は、学校で一般的な四捨五入にあたる「round half up」をDecimalで行い、Decimalを返すので、2は 2.00 と表示されます。
プライバシーと入力の安全性
値はお使いのブラウザ内で計算されます。入力した率がサーバーに送信されたり、保存されたりすることはありません。
入力欄には数値だけを入力でき、末尾の%記号は付けても付けなくても構いません。文字、空欄、NaN、Infinityはメッセージつきで拒否され、入力した内容がコードとして実行されることはありません。
最初の率が0のときは、ゼロで割らずにポイントを返し、変化率は未定義と表示します。カンマ区切りの小数(4,25)は4.25として読み取られ、小数点以下の桁数は0から10の整数に限られます。
パーセントポイントでよくある間違い
| 間違い | 何が起こるか | 計算機の動作 |
|---|---|---|
| ポイントの差をパーセントと呼ぶ | 4%から6%への上昇を2%と報じる | 結果にパーセントポイントというラベルをつけます |
| 基準を示さずに相対的な変化を示す | 「50%上昇」では、率が4%から6%になったことが分からない | 二つの率の横に、両方の数字を示します |
| 最後の率で割る | 2 ÷ 6は50%ではなく33.33%になる | 最初の率で割ります |
| 上昇と下降を対称だと考える | 4%から6%は+50%だが、6%から4%は−33.33% | それぞれの向きで使った最初の率を示します |
| ポイントのつもりでパーセントを足す | 5.5%に0.75%を足すと、6.25%ではなく5.54%になる | ポイントとパーセントを、別々のモードで加えます |
| 0%から始める | 変化率は定義できない | 理由とともに「未定義」と表示します |
パーセントポイント、変化率、ベーシスポイント、差の割合の違い
最初の二行は、混同されやすい組です。ベーシスポイントは単位の換算であり、差の割合は向きのない版で、差の割合の計算機が扱います。率の変化を報告するときは、ポイントと二つの率を示し、相対的な大きさが重要な場合にのみパーセントを添えてください。
よくある質問
パーセントポイントとパーセントの違いは何ですか?
パーセントポイントとは?
パーセントポイントの変化はどう計算しますか?
パーセントポイントをパーセントに変換するには?
Excelでパーセントポイントの変化を計算するには?
=ROUND((B2-A2)*100,2) はポイントを返し、パーセント表示にした =(B2-A2)/A2 は相対的な変化を返します。4%と6%なら、2と50%になります。