総和と総乗の記号|関数・指数・対数・総和
このページはプロモーション(広告)を含みます。
関数・指数・対数・総和(初級・読む22分+演習30分)
この授業のゴール
- Σ(総和)の添字・下限・上限・項を読み取り、小さく展開して値を計算できる
- 平均・偏差の平方和を Σ で書き、Σ(x²) と (Σx)² の違いを数値で示せる
- Π(総乗)で複数期間の成長倍率を表し、対数をとると Σ になることを確かめられる
- Python の sum / range と Σ の対応、特に添字の開始と終了のずれを説明できる
仕事でどう使うか
統計量も損失関数も、ほとんどは「たくさんの値を足す」計算です。Σ(シグマ)はそれを短く書く記号で、数式が読めるかどうかの最初の関門になります。
| 路線 | この授業の使いどころ |
|---|---|
| DS(データサイエンティスト) | 平均、分散、売上合計。集計関数(SUM、AVG)が何を足しているかを式で説明する |
| ML(機械学習エンジニア) | 損失関数 $\sum_i (y_i-\hat y_i)^2$(二乗誤差の和)、対数尤度 $\sum_i\ln p_i$。論文の式をコードに写す |
| DX(DX推進・AI企画) | 月次の合計や累計、複数施策の効果の積み上げ(Π)。指標定義書に「何を何件足すか」を式で書く |
| RS(研究者) | 論文の式の読解、推定量の定義。添字の範囲を誤ると結果が変わる |
実務では、「合計の範囲は何件か(上限 $n$)」「二乗してから足すのか、足してから二乗するのか」を確認する場面が頻繁にあります。
前提
次の知識を使います。
- 累乗($i^2$ は $i\times i$)→ 指数と増減率
- 平均(値を足して個数で割る)→ 平均・合計・中央値を手計算
- 文字式と添字($x_1,x_2,\dots$ のように番号を付ける)→ 文字式と代入
- 対数が積を和に変えること → 対数と桁
画面内のPythonで、sum と range を使って同じ計算を確かめます。
身近な状況:3日間の売上を足す
ある店の3日間の売上を $x_1=3$、$x_2=5$、$x_3=10$(万円)とします。添字(そえじ:番号を示す小さな数字)で、$x_i$ は「$i$ 日目の売上」を表します。
| 日 $i$ | 売上 $x_i$(万円) |
|---|---|
| 1 | 3 |
| 2 | 5 |
| 3 | 10 |
3日間の合計は $3+5+10=18$ 万円、平均は $18\div3=6$ 万円です。
3日ではなく365日だったら? $x_1+x_2+\cdots+x_{365}$ と書くのは大変です。この「$i$ を1から $n$ まで動かして足す」を1つの記号にしたものが Σ です。一方、複数の期間の成長倍率を掛け合わせるのが Π(パイ) です。
直感的な説明:Σ は「ループして足す」、Π は「ループして掛ける」
Σ は、プログラムの for ループで合計を貯める処理そのものです。
total = 0
for i in 1..n:
total = total + (i番目の項)
Π も同じで、total = 1 から始めて、各項を掛けていきます。足し算の最初の値は0、掛け算の最初の値は1です(何も足さなければ0、何も掛けなければ1)。
読み方のコツは、小さな値で展開することです。$n=3$ など小さい数で書き下せば、必ず意味が分かります。
正確な定義:Σ と Π の読み方と性質
総和:
$$\sum_{i=1}^{n} a_i = a_1+a_2+\cdots+a_n$$
- $i$:添字(動く番号)。ここでは整数。
- 下の $i=1$:下限(開始値)。上の $n$:上限(終了値、ここも含む)。
- $a_i$:項(足される値)。式でもよい($a_i=i^2$ など)。
例:$\sum_{i=1}^{3} i^2=1^2+2^2+3^2=1+4+9=14$。
総乗:
$$\prod_{i=1}^{n} a_i = a_1\times a_2\times\cdots\times a_n$$
例:$\prod_{i=1}^{3}(1+r_i)$ で $r=(0.1,\,-0.1,\,0.2)$ なら $1.1\times0.9\times1.2=1.188$。3期間の成長倍率は1.188で、18.8%増です。
性質($c$ は定数、$a_i,b_i$ は項):
| 性質 | 式 | 数値例($x=3,5,10$) |
|---|---|---|
| 定数の和 | $\sum_{i=1}^{n}c=nc$ | $\sum_{i=1}^{3}4=12$ |
| 定数倍 | $\sum ca_i=c\sum a_i$ | $\sum 2x_i=2\times18=36$ |
| 和の分解 | $\sum(a_i+b_i)=\sum a_i+\sum b_i$ | $\sum(2x_i+1)=36+3=39$ |
| 平均 | $\bar x=\frac1n\sum x_i$ | $18/3=6$ |
注意:$\sum x_i^2\neq(\sum x_i)^2$。$\sum x_i^2=9+25+100=134$、$(\sum x_i)^2=18^2=324$ です。
偏差の平方和(ばらつきの基礎):$\sum_{i=1}^{n}(x_i-\bar x)^2$。ここで $\bar x$(エックスバー)は平均で、$x_i-\bar x$ は平均からのずれです。$x=(3,5,10)$、$\bar x=6$ では $(3-6)^2+(5-6)^2+(10-6)^2=9+1+16=26$。なお $\sum(x_i-\bar x)=-3-1+4=0$ で、ずれの和は常に0になります。
対数との関係:$\ln\prod p_i=\sum\ln p_i$。積は対数をとると和になります。
x = [3, 5, 10]
n = len(x) # 要素の数 (int)
total = sum(x) # Σ x_i
mean = total / n
print("Σx =", total, "平均 =", mean)
print("Σx² =", sum(v ** 2 for v in x), " (Σx)² =", total ** 2)
print("Σ(x-平均) =", sum(v - mean for v in x))
print("Σ(x-平均)² =", sum((v - mean) ** 2 for v in x))
sum(イテラブル) は要素の合計を返し、v ** 2 for v in x は各要素を二乗して順に渡す書き方です。出力は 18、6.0、134、324、0.0、26.0 です。
段階付き例題:Σ を展開し、コードと照合する
例題:$\sum_{k=2}^{5}(2k-1)$ を求める。
- ステップ1:添字 $k$ は2から5まで(上限5を含む)。
- ステップ2:$k=2$ のとき3、$k=3$ のとき5、$k=4$ のとき7、$k=5$ のとき9。
- ステップ3:合計 $3+5+7+9=24$。項の数は $5-2+1=4$ 個。
- ステップ4:コードに写す。Pythonの
range(2, 6)は2,3,4,5。上限は含まれないので6を指定する。
print(sum(2 * k - 1 for k in range(2, 6))) # 24
print(sum(2 * k - 1 for k in range(2, 5))) # 上限を含め忘れると 15
print(len(range(2, 6))) # 項の数 4
意味:論文の式の「$i=1$ から $n$」は両端を含みます。Pythonの range(1, n+1) と対応します。range(n) は0から $n-1$ で、数式の範囲と1つずれることがあります。
例題2:成長倍率の積。4期間の成長率が $r=(0.10,-0.10,0.20,0)$ のとき、期間全体の倍率は
$\prod(1+r_i)=1.1\times0.9\times1.2\times1.0=1.188$。平均の率 $(0.1-0.1+0.2+0)/4=0.05$ を使って $1.05^4=1.2155$ とすると、実際の1.188とずれます。率の平均で複数期間を代表させるのは、近似でしかありません。
操作して理解する:添字の範囲と、積から和への変換
次のコードで、上限を変えたときの値を比べます。n を書き換えて、展開した式と照合してください。
n = 4
s = sum(i ** 2 for i in range(1, n + 1))
print("n =", n, " Σ i² =", s)
for n in [1, 2, 3, 4, 5]:
print(n, sum(i ** 2 for i in range(1, n + 1)))
次に、積を対数の和に変える例です。確率 $p=(0.5,0.2,0.1)$ のとき、$\prod p_i=0.01$、$\ln\prod p_i=\sum\ln p_i$ です。
import math
p = [0.5, 0.2, 0.1]
prod = 1.0 # 積の初期値は1
for v in p:
prod *= v
print("積", prod, " ln(積)", round(math.log(prod), 5))
print("Σ ln p", round(sum(math.log(v) for v in p), 5))
どちらも約−4.60517で一致します。自分で試す問い:(1) p に 0 を入れると積は? 対数の和は? 答え:積は0。math.log(0) はエラーなので、対数の和は計算できない(確率0は対数と桁の定義域外)。(2) p を1000個の0.5にすると積は? 答え:約9.3×10⁻³⁰²で、さらに増やせば0に潰れる(アンダーフロー)。対数の和は−693.1で安定。
発展:二重和、総和の入れ替え、Σ記法の落とし穴
二重和 $\sum_{i=1}^{m}\sum_{j=1}^{n}a_{ij}$ は、行列(表)の全要素の合計です。有限個の和なら、$i$ と $j$ の順序を入れ替えても結果は同じです。表の行ごとに足してから合計しても、列ごとに足してから合計しても同じ、という意味です。
無限個の和(級数)の場合は、順序を入れ替えると値が変わることがあります。収束の条件は数列と等比級数で扱います。
記法の落とし穴:
- 上限・下限が省略された $\sum_i x_i$ は、「$i$ のすべての範囲」を意味する流儀があります。文脈で範囲を確認します。
- $\sum_{i=1}^{n}$ の中で $n$ を別の意味でも使うと混乱します。論文の式をコードに移すときは、添字名を整理します。
- 0始まり($i=0,\dots,n-1$)の式もあります。個数は $n$ 個ですが、上限が $n-1$ になる点に注意します。
総乗は、すべての項が正のときだけ対数で和にできます。項に0や負があると、定義域の問題で $\ln$ が使えません。
よくある失敗
失敗1:Σx² と (Σx)² を混同する
x = [3, 5, 10]
print(sum(v ** 2 for v in x)) # Σx²
print(sum(x) ** 2) # (Σx)²
134と324で全く違います。「二乗してから足す」と「足してから二乗する」は別物です。分散などの式では、前者が標準です。直し方:式を $n=2$ か $3$ で展開し、括弧の位置を確認する。
失敗2:range の上限の含め忘れ
$\sum_{i=1}^{5}i$ は $1+2+3+4+5=15$ ですが、range(1, 5) では4までしか足しません。
print(sum(range(1, 5))) # 10: 5 が抜ける
print(sum(range(1, 5 + 1))) # 15
直し方:数式の上限 $n$ はコードでは n + 1 を指定する。結果が展開した値と一致するか、必ず小さな $n$ で検算する。
失敗3:定数の和を定数と取り違える
$\sum_{i=1}^{n}c$ の項は $i$ に依存しませんが、項を $n$ 個足すので $nc$ になります。
c, n = 4, 3
print(sum(c for _ in range(n))) # 12 (= n*c)
誤って $c=4$ と答えると、$\sum(x_i-\bar x)$ のような式の展開でも、定数項の数が合わなくなります。直し方:「項の数」を数える。Σ の中に添字が無くても、足す回数は上限と下限で決まる。
まとめ
- Σ は添字を下限から上限まで(両端を含む)動かして足す。Π は同様に掛ける。
- 小さい n で展開し、手計算とコード(range の上限+1)で照合する。
- Σx² と (Σx)² は別物。偏差の和は0で、ばらつきは二乗して足す。
- 複数期間の成長は倍率の積。率の平均では代用できない。積は対数で和になる。
用語
- 総和(Σ)(summation)
指定した範囲の項をすべて足す記号。
- 総乗(Π)(product)
指定した範囲の項をすべて掛ける記号。
- 添字(index)
x_i の i のように、要素の番号を示す小さな文字。
- 偏差(deviation)
値と平均との差 x_i − x̄。
よくある質問
なぜΣ記号を使うのですか?
個数が決まっていない合計を1行で書けるからです。さらに、性質(定数倍や和の分解)を使って式変形ができ、論文やコードで同じ式を共有できます。
$\sum$ の下に $i=1$ と書かれていないときは?
$\sum_i x_i$ のように省略されたら、文脈から「$i$ の取りうる全範囲」と読みます。わからなければ前後の定義を探し、自分の資料では範囲を明記します。
Πは何に使いますか?
複数期間の成長倍率、確率の積(独立な事象の同時確率)、階乗 $n!=\prod_{k=1}^{n}k$ などです。積は桁が極端になりやすいので、対数をとって和にすることが多いです。
平均を $\frac1n\sum x_i$ と書くのはなぜですか?
合計 $\sum x_i$ を個数 $n$ で割るという定義そのものだからです。$n$ は欠損値を除いた件数なのか全件なのかで変わります。0と欠損は別物なので、どちらで割るかを決めておきます。
Pythonのループと何が違いますか?
数式は範囲が両端を含み、1始まりが多い一方、Pythonの range は上限を含まず0始まりです。この差で値が1つずれることが多いので、小さな $n$ で手計算と照合します。
実務でΣの範囲を確認する場面は?
KPIの定義で「全顧客か購入者だけか」「取消を除くか」を決めるときです。SQLの SUM や AVG が式のどの範囲を足しているかを、式に書き戻して合意します。
確認問題
問1 $\sum_{i=1}^{3}i^2$ の値は。
- ① 6
- ② 9
- ③ 14
- ④ 36
解答と解説
正解:③
$1^2+2^2+3^2=1+4+9=14$。6は $\sum i$、36は $(\sum i)^2$ です。
問2 $x=(3,5,10)$ のとき、$\sum x_i^2$ と $(\sum x_i)^2$ の関係として正しいのは。
- ① 両者は常に等しい
- ② $\sum x_i^2=134$、$(\sum x_i)^2=324$ で異なる
- ③ $\sum x_i^2=324$、$(\sum x_i)^2=134$
- ④ どちらも18
解答と解説
正解:②
二乗してから足す場合と、足してから二乗する場合は別の値です。
問3 偏差の和 $\sum(x_i-\bar x)$ はいつも何になるか。
- ① 0
- ② $n$
- ③ $\bar x$
- ④ 分散と等しい
解答と解説
正解:①
平均より大きいずれと小さいずれがちょうど打ち消し合い、和は0になります。ばらつきを見るには二乗して足します。
問4 数式の $\sum_{i=1}^{n}i$ をPythonに写すとき、正しいのは。
- ① sum(range(n))
- ② sum(range(1, n))
- ③ sum(range(1, n + 1))
- ④ sum(range(n + 1)) - 1
解答と解説
正解:③
range(a, b) は b を含みません。上限 n を含めるには n+1 を指定します。
問5 成長率 +10%、−10%、+20% の3期間を通した倍率として正しいのは。
- ① 平均率 6.7% で1.067
- ② 1.1+0.9+1.2
- ③ 1.2(20%増)
- ④ 1.1×0.9×1.2=1.188
解答と解説
正解:④
倍率は期間ごとに掛けます。率を足したり、平均率で代用すると誤差が出ます。
問6 確率の積 $\prod p_i$ を対数の和 $\sum\ln p_i$ に変える利点は。
- ① 値が必ず大きくなる
- ② アンダーフロー(小さすぎる値が0に潰れること)を避けて安定に計算できる
- ③ 確率が0でも使える
- ④ 和は積より必ず小さい
解答と解説
正解:②
小さい確率を何百回も掛けるとコンピュータ上で0になってしまいます。対数の和なら安定です。
次に学ぶこと
次は 数列と等比級数 で、規則的に並ぶ数(数列)とその和を学びます。等比数列の和は、この授業の Σ を使って閉じた式にします。戻るなら 対数と桁(対数)。
この授業の確認問題だけで習得とはしません。MA01 の総合テストと自力課題で判定します。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い