使い方
対数(logarithm)は、累乗(指数)の逆操作です:log_b(x) は「b を何乗すれば x になるか」の値を返します。実用上は 3 つの底が中心。常用対数(base 10、単に log と書く)は、桁数(オーダー)の比較、デシベル(音響・電力比)、pH、地震マグニチュードなどで使う基本ツール — log₁₀(1000) = 3(10³ = 1000 のため)。自然対数(ln、底 e ≈ 2.71828)は、微分積分、連続成長モデル、純粋数学の標準で、ln(x) の微分が「1/x」と余計な定数なしになる点が決定的に便利。二進対数(base 2、log₂ または lg)は、情報学、情報理論、半減期・倍加時間の問題で頻出 — log₂(1024) = 10(2¹⁰ = 1024 のため)。本ツールはこの 3 つに加えて任意の底にも対応し、列のように並んだ数値を一括対数変換できます。
底の変換は 1 回の割り算で済みます:log_a(x) = log_b(x) / log_b(a)。最もよく使うのは log₁₀(x) = ln(x) / ln(10) ≈ ln(x) × 0.4343 という関係で、頭の中で自然対数を扱い、最後に常用対数が必要なら 0.4343 を掛けて変換、という運用ができます。対数法則 — log(ab) = log(a) + log(b)、log(a/b) = log(a) − log(b)、log(aⁿ) = n × log(a) — はどの底でも成り立ちます。これがゆえに、対数は 17 世紀に「掛け算の高速化トリック」として発明されました(電卓の登場で算術用途では役目を終えましたが)。現代でも法則自体は概念的に重要:「積の対数 = 和」という性質があるからこそ、桁が大きく異なるデータを表示するために対数軸が便利になります。
実用上のポイント 3 つ。(1) log(0) は未定義、負の数の対数も実数の範囲では未定義です — 本ツールは「未定義」と返し、推測しません。0 を含むデータを対数変換したい場合、標準的な対処は「log(x + 1)」(log1p と書くこともあります):0 はそのまま 0、それ以外の値はわずかにシフトするだけ。意図的な選択であるべきなので、本ツールでは自動適用しません。(2)「log」という記法だけだと曖昧です。数学・工学の教科書では通常 base 10、純粋数学・統計・多くのプログラミング言語では自然対数(ln)、情報学では base 2 を意味することがあります。曖昧さを避けたい場合は、log₁₀、ln、log₂ と明示してください。(3) 統計でデータを対数変換するのは、元の分布が右に裾を引いているとき(収入、反応時間、遺伝子発現の reads、粒径など)の常套手段です。対数変換すると、歪んだ分布がほぼ正規分布に近づくことが多く、正規性を仮定する手法(t 検定、線形回帰など)が使えるようになります。デメリットは「単位が変わる」こと。対数変換した群平均を比較して、元の単位に戻したい場合は、「差の antilog(指数化)」を取るのが正解で、「antilog の差」を取ってはいけません。
計算式
b は底(0 より大きく、1 ではない)、x は真数(0 より大きい必要があります — 0 や負の数の対数は実数の範囲では未定義)。log₁₀ は常用対数(pH、デシベル、地震マグニチュードなどで使用)、ln = log_e は自然対数(e ≈ 2.71828)、log₂ は二進対数。底の変換公式は、内部的に計算機を支える基盤式です — スマートフォンは実質 ln しか保持しておらず、log₁₀(x) は ln(x)/ln(10)、log_b(x) は ln(x)/ln(b) として、その都度計算しています。
計算例
- log₁₀(1000) を計算する — 10 を何乗すれば 1000 になるか?
- 10³ = 1000 なので、log₁₀(1000) = 3。
- 念のため確認:ln(1000) ≈ 6.9078、ln(10) ≈ 2.3026 なので、log₁₀(1000) = 6.9078 / 2.3026 = 3.000 ✓
よくある質問
log₁₀、ln、log₂ はどう使い分ける?
測定対象のスケールに合わせて選んでください。log₁₀(常用対数)は対象が 10 進スケールのときに:pH(1 ずれるごとに H⁺ 濃度が 10 倍)、デシベル(10 dB = 電力比 10 倍)、リヒター・マグニチュード、桁の比較。ln(自然対数)は微積分や連続成長プロセスを扱うとき:複利、放射性崩壊、個体群成長など — ln の微分が定数を含まず 1/x になるおかげで、数学的に最も「自然」になります。log₂(二進対数)は「倍化・半減」のスケールに:半減期、細胞分裂の倍加時間、情報量(ビット)、計算機科学の計算量クラスなど。探索的データ解析では、グラフを対数軸にするだけならどの底でも見た目はほぼ同じで結論も変わらないことが多い一方、解釈のしやすさには差が出ます — 読み手が「2 倍」(log₂)や「10 倍」(log₁₀)と直感的に読める底を選ぶのがコツです。
0 を含むデータを対数変換するには?
log(0) は未定義(極限では負の無限大)なので、0 の対数は直接は取れません。標準的な対処を、推奨度順に 3 つ:(1) log(x + 1)(しばしば log1p と表記) — log(1) = 0 のため 0 はそのまま 0 に留まり、それ以外の値は典型的なデータの対数スケール上では「ほぼ無視できる量」だけシフトします。多くの統計パッケージに `log1p(x)` として組み込み済み。(2) log(x + 小さな定数) — 適当な小さい正数(よく使われるのは「データ中の 0 でない最小値の半分」)を加えてから log を取る。log1p より原則性は劣りますが、「0 が真の不在ではなく、検出限界以下を意味する」場合に有効。(3) 0 を NA に置換して除外 — これが妥当なのは、0 が「本当に欠損で、意味のない値」のときだけです。本ツールはこれらを自動適用しません — 選択は意図的であるべきで、0 が何を意味するかによって変わるためです。前処理を済ませてから、整形済みの値をリストモードに貼り付けてください。
log と ln の違いは?
「ln」は曖昧さがなく、常に「自然対数(底 e ≈ 2.71828)」を意味します。一方、添字なしの「log」は曖昧で、文脈によって意味が変わります。高校数学・工学・電卓の表示などでは「log」と書けば常用対数(base 10)。大学レベルの純粋数学・統計学・主要なプログラミング言語(Python、R、MATLAB、C の `log()` 関数など)では「log」は自然対数を指します — そのため「base 10 の結果が返るはず」と思って書いたスクリプトが実際には ln を計算していて結果が違う、ということがよく起こります。情報学では「log」は文脈上 base 2 を含意することもあり、特にアルゴリズムの計算量(O(log n) は底に依存しないので、底を省略する)で顕著です。曖昧さを避けたい場合は、log₁₀、ln、log₂ と底を明示するのが安全。本ツールでは曖昧な「log」表記は使わず、各結果に必ず底を併記しています。
負の数の対数は取れる?
実数の範囲では取れません。log_b(x) は底 b > 0 でも、真数 x > 0 のときにしか定義されません — 「b を何乗すれば x になるか」と問う関数ですが、正の底をどんな実数で累乗しても結果は正のままなので、負の数に到達する実数の指数は存在しないからです。本ツールは、負の数や 0 を入力した場合、推測せず「未定義」と返します。複素数に拡張すると定義はできます — 例:ln(−1) = iπ、ln(−x) = ln(x) + iπ — が、複素解析や信号処理を意図的に扱っているのでなければ、これが欲しい答えであることはほぼありません。データに負の値があり、それを対数スケールで表示したい場合は次のような工夫が標準です:(1) 絶対値の log を取り、符号で色分け、(2) sign(x) × log(1 + |x|) のような「符号付き log」関数を使う、(3) 0 付近は線形・両裾は対数の symmetric log(symlog)軸を使う。何を可視化したいかに合わせて選んでください。