医療統計学・医療情報学・遠隔医療

医療統計学・医療情報学・遠隔医療 · 17

情報理論とデータベース

Information Theory, Databases

前提:病態
確率と分布ベイズ法

🧠 全体像:情報とは「不確実性が減った量」である。だからありふれた知らせは情報が少なく、思いがけない知らせは情報が多い。この一言を数式にしたのがエントロピーで、臨床に持ち込めば「その検査は何ビット教えてくれるのか」を測るになる。後半のデータベースは、その情報を壊さずに保管し、取り出すための工学である——前者が情報の量、後者が情報の器の話である。

情報とは何か

直観的な定義がいくつもある。

出所 定義
語源 ラテン語 informare=「心を形づくる」。教える、指示する。情報を得たときにだけ、人は考えを変えられる
生理学的 機械または生物に反応を引き起こす信号・入力(パブロフの)
構造的 他のパターンの形成に影響を与えるパターン(配列 → タンパク質の構造)

💡 3つに共通するのは「受け手の状態を変える」という点である。何も変えないものは情報ではない。この直観がそのまま「不確実性の減少」という定量的な定義につながる。

通信のモデル

flowchart TD
  A["情報源<br>(例:コインのどちらの面が上か)"] --> B["<span class='jp-term jp-term-diagram' title='encoding'>符号化</span><br>(表→1、裏→0)"]
  B --> C["<span class='jp-term jp-term-diagram' title='routing'>伝送</span>路<br>(音声・<span class='jp-term jp-term-diagram' title='radio wave'>電波</span>・SMS)"]
  C --> D["復号<br>(1→表、0→裏)"]
  D --> E["受信者<br>(例:勝敗を判定する)"]
  F["雑音"] --> C

⭐ 情報理論の出発点は「メッセージの意味は問わない」という割り切りである。扱うのは「受け手が知らなかった選択肢のうち、どれが実現したかを伝えるのに、最低何個の記号が要るか」だけである。

ビットと符号化

ビット(bit=binary digit) は0か1のいずれかを取る記号である。私たちが10進法に慣れているだけで、底はいくつでもよい。

1012=1×22+0×21+1×20=510101_{2} = 1 \times 2^{2} + 0 \times 2^{1} + 1 \times 2^{0} = 5_{10}

nn 個の事象を固定長の2進符号で区別するには ⌈log⁡2n⌉\lceil \log_2 n \rceil ビットが要る。

事象の数 必要なビット数 そのビット数で表せる最大数
2(コイン) 1 2
6(サイコロ) 3 8
8 3 8

⚠️ サイコロの目6種類に3ビットを使うと、8通り表せるうち2通りが無駄になっている。固定長符号は原理的に無駄を含む。

💡 まとめてすると改善できる。サイコロを3回振った結果は 63=2166^3 = 216 通りで、216<256=28216 < 256 = 2^8 だから8ビットで表せる。1事象あたり 8/3=2.678/3 = 2.67 ビットとなり、3ビットずつ使う場合(9ビット)より1ビット少ない。

⭐ ここで自然な疑問が出る——どこまで縮められるのか。 その下限を与えるのが情報量である。

情報量とエントロピー

まず直観との対応を確かめる。次の知らせのうち、どれが「情報が多い」か。

知らせ 確率 直観
コインを投げた。表か裏か? 1/2 : 1/2 まったく見当がつかない
今朝は道が空いている 1/4 : 3/4 やや予想外
明日は雨が降る 1% : 99% 大いに予想外
宝くじに当たった 1/13,983,816

⭐ 起こりにくい事象ほど、それが起きたと知らされたときの情報が多い。 逆に「ほぼ確実に起こること」が起きても、何も学ばない。

単一事象の情報量

この直観を満たす関数として、確率 pp の事象が実際に起きたときの情報量を次で定義する。

I=log⁡21p=−log⁡2p[bit]I = \log_2 \frac{1}{p} = -\log_2 p \quad [\text{bit}]
pp II 読み方
1 0 bit 確実なこと。学ぶものがない
1/2 1 bit コイン1回分
1/8 3 bit コイン3回分
1/1000 約 10 bit かなり驚く

💡 対数が選ばれたのは、独立な事象を並べたときに情報が足し算になるようにするためである。p1p2p_1 p_2 の情報量は −log⁡2(p1p2)=−log⁡2p1−log⁡2p2-\log_2(p_1 p_2) = -\log_2 p_1 - \log_2 p_2。これは「2回コインを投げれば情報は2倍」という直観と一致する。

エントロピー

情報量 II は「特定の結果が起きたとき」の量である。その情報源から平均してどれだけ学べるかを知るには、確率で重み付けた期待値を取る。これがシャノンエントロピーである1。

H=∑ipilog⁡21pi=−∑ipilog⁡2pi[bit]H = \sum_i p_i \log_2 \frac{1}{p_i} = -\sum_i p_i \log_2 p_i \quad [\text{bit}]

⭐ HH は「平均してどれだけ驚くか」=「事前にどれだけ不確実か」を測る量である。 式より先に、この一言を持っておく。

公平なサイコロと歪んだサイコロ

確率分布 エントロピー
公平なサイコロ 各面 1/6 H=log⁡26=2.58H = \log_2 6 = 2.58 bit
歪んだサイコロ 1/2, 1/4, 1/8, 1/16, 1/32, 1/32 H=1.94H = 1.94 bit

💡 歪んだサイコロでは「1が出るだろう」と予想がつくので、実際に出ても学ぶことが少ない。公平なサイコロでは何も予想できない=不確実性が最大である。

⭐ 等確率のとき HH は最大になる。 これは熱力学のエントロピーが「取りうるの数が最大のときに最大」になるのと同じ構造である。

⚠️ 「公平なサイコロは1事象あたり3ビット必要」と説明されることがあるが、これは固定長符号を使ったときの数字である。理論的な下限はエントロピー log⁡26=2.58\log_2 6 = 2.58 ビットであり、先ほどの「3事象まとめて8ビット」(= 2.67 bit/事象)はこの下限に近づいてはいるが、まだ届いていない。の効率の限界を与えるのがエントロピーである——これがシャノンの結果の核心である。

エントロピーはどう導かれたか

シャノンは HH が満たすべき条件を3つ立て、それを満たす関数が対数形に一意に定まることを示した1。

条件 内容
1. pp が少し変われば HH も少し変わる
2. 性 すべて等確率(p=1/np = 1/n)のとき、HH は nn の増加関数。選択肢が多いほど不確実
3. 分岐の加法性 選択を2段階に分けても全体の HH は変わらない。H(1/2,1/3,1/6)=H(1/2,1/2)+12H(2/3,1/3)H(1/2, 1/3, 1/6) = H(1/2, 1/2) + \tfrac{1}{2}H(2/3, 1/3)

⭐ 式を暗記するより、この3条件のほうを覚えておくとよい。「不確実性」という言葉に人が期待する性質を書き下しただけで、対数の形が強制される——これが情報理論の美しさである。

2値エントロピー

医学で最もよく使うのは、2つの結果しかない場合である。

H(p)=−plog⁡2p−(1−p)log⁡2(1−p)H(p) = -p \log_2 p - (1-p)\log_2 (1-p)
pp H(p)H(p) 状況
0.50 1.000 bit 最大の不確実性。何も分からない
0.25 0.811 bit
0.10 0.469 bit
0.03 0.194 bit ほぼ「なし」と分かっている
0.01 0.081 bit
0 または 1 0 bit 完全に確定
xychart-beta
    title "二値エントロピー:確率と不確実性の関係"
    x-axis "p(一方の結果が起こる確率)" [0, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 1]
    y-axis "H(p)  bit" 0 --> 1.05
    line [0, 0.286, 0.469, 0.722, 0.881, 0.971, 1.0, 0.971, 0.881, 0.722, 0.469, 0.286, 0]

⭐ 山は p=0.5p = 0.5 で最大、両端で 0。左右対称なのは、pp と 1−p1-p のどちらを「起こる」と呼ぶかで不確実性は変わらないからである。

💡 頂上が平らで、両端が切り立っているのが臨床的に重要な性質である。pp が 0.3 から 0.5 へ動いても HH は 0.881 → 1.000 としか増えないが、pp が 0.05 から 0.2 へ動くと 0.286 → 0.722 と2.5倍になる。確率が 0 や 1 に近い領域ほど、わずかな確率の変化が不確実性を大きく動かす——が極端に低い(あるいは高い)患者では、検査結果が確信度を大きく変えうるということである。逆に p≈0.5p \approx 0.5 付近の患者では、1回の検査では決着がつきにくい。

import numpy as np
def H(p):                                        # 2値エントロピー(bit)
    p = np.clip(p, 1e-12, 1 - 1e-12)
    return -(p*np.log2(p) + (1-p)*np.log2(1-p))
print(H(0.5), H(0.03))                           # 1.000, 0.194

診断で得られる情報は何ビットか

⭐ ここが本ノートで最も臨床的に有用な部分である。 ベイズ法で、検査はを事後確率へ更新すると学んだ。エントロピーを使えば、その更新がどれだけの「学び」だったかをビットで測れる。

感度90%・特異度90%の検査を、3%の集団で使う(尤度比の例と同じ設定)。

確率 エントロピー
検査前 3% H=0.194H = 0.194 bit
陽性だったとき(確率 12.4%) 21.8% H=0.756H = 0.756 bit
陰性だったとき(確率 87.6%) 0.34% H=0.033H = 0.033 bit

期待される検査後エントロピーは 0.124×0.756+0.876×0.033=0.1230.124 \times 0.756 + 0.876 \times 0.033 = 0.123 bit。したがって

I(disease;test)=H(pre)−H(post∣test)=0.194−0.123=0.072 bitI(\text{disease};\text{test}) = H(\text{pre}) - H(\text{post} \mid \text{test}) = 0.194 - 0.123 = 0.072\ \text{bit}

⚠️ わずか 0.07 ビット。 感度・特異度がともに90%という悪くない検査でも、3%の集団に使うと、平均してコイン投げ1回の14分の1しか情報が得られない。これが「の低い集団に検査をばらまいても得るものが少ない」ことの定量的な表現である。

💡 ここで見逃せない現象がある。陽性だった場合、エントロピーは 0.194 → 0.756 ビットへ「増えて」いる。 検査前は「ほぼ健康だろう」とほぼ確信していたのに、陽性を見た後は21.8%という最も判断に迷う領域に放り込まれた。個々の結果は不確実性を増やしうる。

しかし平均すれば必ず減る(H(X∣Y)≤H(X)H(X \mid Y) \le H(X) が常に成り立つ)。陰性が返る確率のほうが圧倒的に高く、そのとき不確実性は大きく減るからである。この非対称は臨床の実感——「陰性なら安心できるが、陽性は追加検査を呼ぶ」——と正確に一致する。

import numpy as np
se, sp, w = 0.90, 0.90, 0.03
p_pos = w*se + (1-w)*(1-sp)                       # 陽性になる確率 0.124
post_p = w*se / p_pos                             # 陽性のときの事後確率 0.218
post_n = w*(1-se) / (1 - p_pos)                   # 陰性のときの事後確率 0.0034
print(H(w) - (p_pos*H(post_p) + (1-p_pos)*H(post_n)))   # 0.072 bit

事前と事後の距離

より一般に、事前分布 QQ から事後分布 PP へどれだけ動いたかはカルバック・ライブラー情報量(相対エントロピー)で測る。

DKL(P∥Q)=∑ipilog⁡piqiD_{KL}(P \parallel Q) = \sum_i p_i \log \frac{p_i}{q_i}

⭐ 式そのものは暗記しなくてよい。統計ソフトや診断支援システムが「この検査の情報価値」を計算するとき、背後で動いているのがこの量であると知っていれば足りる。読み方は「事後分布が事前分布からどれだけ離れたか=どれだけ学んだか」であり、知識が増えるほど不確実性が減るという関係を定量化している。

情報エントロピーと物理エントロピー(発展)

情報のエントロピーと熱力学のエントロピーが同じ名前をもつのはではない。

の悪魔:容器を仕切り、速い分子だけを片側へ通す「悪魔」がいれば、片側の温度は下がり反対側は上がる。仕事なしに温度差ができる——熱力学の違反か?

⚠️ 違反ではない。 悪魔は系の外部にいるのではなく、系と相互作用している。悪魔は分子の位置という情報を取得し、それによって自らの状態が変化する。系のに悪魔を含めればは保たれる。

シラードのエンジンで定量化される。分子1個の位置を測定して1ビットを得ると、等温膨張で W=kTln⁡2W = kT\ln 2 の仕事が取り出せる。W=TΔSW = T\Delta S より

ΔS=kln⁡2\Delta S = k \ln 2

⭐ 1ビットの情報を消去すると、物理的エントロピーが kln⁡2k\ln 2 だけ増える(ランダウアーの原理)2。論理的に不可逆な演算(AND ゲートのように入力ができないもの)は必ず熱を発生させる。💡 情報は抽象的な概念ではなく、物理量である。

データベース

ここから話は「情報をどう量るか」から「情報をどう保管し取り出すか」へ移る。

データベースの役割は3つ——保管・構造化・取り出し。紙のカルテは保管はできるが、取り出しと修正が絶望的に困難である。「50歳以上でを使っている患者を全員挙げよ」に答えるには全部を読み直すしかない。

表計算ソフトの1枚の表

紙の次に来るのが表計算ソフトの1枚の表である。用語を整理する。

用語 中身
テーブル(表) 順序づけられたデータの集合
レコード(行) ひとまとまりの情報。すべての行が同じ構造をもつ
フィールド(列) 1つのデータ型

これでも並べ替え・絞り込み・検索はできる。しかし規模が大きくなると崩れる。

問題 中身
レコードの大きさが揃わない 該当しない項目が空欄になり、容量が無駄になる
項目の追加が煩雑 列を1つ足すと既存の全行に影響する
不整合 空欄が「値がない」のか「入力し忘れ」なのか区別できない
冗長 同じ事実を何度も入力する(同じ名、同じ病院名)
入力ミス 同じ情報を繰り返し打つほど誤字が混入する
修正が事実上不可能 1つの事実を直すのに何百箇所も直さねばならず、必ず直し漏れる

💡 こそが不整合の原因である。 同じ事実が2箇所にあれば、いつか食い違う。

リレーショナルモデル

解決策は単純である——それぞれの事実を1度だけ保存し、対象どうしの「関係」を保存する3。

flowchart TD
  A["患者テーブル<br>患者ID・生年月日・性別"] --> D["関係は ID(キー)で結ぶ"]
  B["受診テーブル<br>受診ID・患者ID・日付・担当医ID"] --> D
  C["<span class='jp-term jp-term-diagram' title='medical doctor'>医師</span>テーブル<br><span class='jp-term jp-term-diagram' title='medical doctor'>医師</span>ID・氏名・診療科"] --> D
  D --> E["問い合わせのときに<br>必要な列だけを結合して取り出す"]
  F["各事実は1箇所にしかない<br>→ 修正は1箇所で済む<br>→ 不整合が原理的に起きない"] --> D

⭐ データベースはデータ集合の論理をモデル化している。 「1人の患者は複数回受診する」「1回の受診には1人の担当医がいる」といった現実の構造が、そのままテーブルとキーの構造になる。問い合わせには SQL を使う。

解析可能なデータ表の条件

⚠️ リレーショナルデータベースの構造と、統計解析に渡す表は別物である。 前者は運用のため(冗長を排し、更新を安全にする)、後者は解析のため(1つの平坦な表にまとめる)。両方が必要で、解析の前にデータベースから「平たい表」を書き出すという一手間が必ず入る。

その平たい表が満たすべき条件は3つに尽きる4。

条件 内容 破られる典型
1列 = 1 はちょうど1つの列に対応する 性別が「男か」「女か」の2列に分かれている
1行 = 1観察 観察単位(患者、受診、検体)が行に対応する 1人の患者の複数回の測定が横に並べられている
1セル = 1値 セルに複数の値や複数の型を混ぜない を1つのセルにカンマ区切りで列挙

加えて、欠測の表記を全体で1つに統一すること。欠測を 0 で表すのは最悪の選択である——0 は正当な観測値でもありうるので、二度と区別できない。

⭐ 実際に壊れた表を直す具体的な手順と、収集の段階で避ける方法は 調査法・データ表の作り方・統計家との協働にまとめてある。本ノートはそのなぜ——なぜ列がでなければならないのか、なぜ冗長が危険なのか——を扱っている。

個人情報の分離

⚠️ 氏名・保険番号・連絡先は解析に使われない。IDだけを共有キーにして別テーブルに分離する。 リレーショナルモデルの考え方をそのまま個人情報保護に適用した形であり、法的要請であると同時に良い設計でもある。

医学応用と人工知能

応用 中身
診断で得られる情報量 前述のとおり、検査の価値をビットで定量化できる
エキスパートシステム 知識と規則をデータベース化し、推論に使う
遺伝子・オミクスのデータベース ゲノム、、。は「巨大なデータベースから個人に該当する情報を取り出す」問題として定式化される
ニューラルネットワーク 生物の神経細胞を模した人工ニューロン(入力の重み付き和に活性化関数をかける)を多層に積む。畳み込み層とプーリング層をもつ構造は医用画像のセグメンテーション(の病変、の)に使われる

⚠️ 学習の医用画像モデルは、学習に使われた集団の外では性能が落ちる(撮像装置、プロトコル、患者背景が変わるため)。 が高いことは、他施設で使えることを意味しない——これは曲線で述べた「 は順位づけの能力にすぎない」の延長線上にある。

まとめ

  • 情報とは不確実性の減少である。 起こりにくい事象ほど情報が多い:I=−log⁡2pI = -\log_2 p
  • エントロピー H=−∑ipilog⁡2piH = -\sum_i p_i \log_2 p_i は、平均してどれだけ不確実か(=どれだけ驚くか)を測る。 等確率のとき最大になる。式より先に「不確実性の量」という一言を持つ
  • HH は効率の理論的下限でもある。公平なサイコロに「3ビット必要」は固定長符号の話で、下限は log⁡26=2.58\log_2 6 = 2.58 ビット
  • 2値エントロピーは p=0.5p = 0.5 で最大の 1 ビット、確定すれば 0 ビット
  • 検査の情報価値はビットで測れる。 感度・特異度90%の検査も3%の集団では平均 0.07 ビットしか与えない。しかも陽性だったときは不確実性が増える(0.19 → 0.76 bit)——平均では必ず減るが、個々の結果ではそうとは限らない
  • 事前分布から事後分布への「学び」の大きさは KL 情報量で測る。式は暗記せず、ソフトが背後で計算している量として知っておく
  • (発展)1ビットの消去は物理的エントロピーを kln⁡2k\ln 2 増やす(ランダウアーの原理)。情報は物理量である
  • データベースの本質は冗長の排除である。同じ事実が2箇所にあれば必ずいつか食い違う。リレーショナルモデルは各事実を1度だけ保存し、キーで関係を表す
  • 運用のためのデータベース構造と、解析に渡す平坦な表は別物。解析用の表は 1列1・1行1観察・1セル1値、欠測は1つの記号に統一し、0 を欠測に使わない

出典

  1. 1.A Mathematical Theory of Communication(Bell System Technical Journal(著者 Claude E. Shannon)・1948)情報量とエントロピーの定義、それが満たすべき3条件(連続性、等確率のときの単調性、分岐の加法性)から対数形が一意に導かれること閲覧 2026-08-17
  2. 2.Irreversibility and Heat Generation in the Computing Process(IBM Journal of Research and Development(著者 Rolf Landauer)・1961)情報を1ビット消去すると物理的エントロピーが k·ln2 だけ増加すること(論理的に不可逆な演算が熱を生むこと)閲覧 2026-08-17
  3. 3.A relational model of data for large shared data banks(Communications of the ACM(著者 Edgar F. Codd)・1970)リレーショナルデータモデル——各事実を一度だけ保存し、関係(テーブル間のキー)で結ぶことで冗長と不整合を排除する設計閲覧 2026-08-17
  4. 4.Tidy Data(Journal of Statistical Software(著者 Hadley Wickham)・2014)解析可能なデータ表の3条件——1列1変数、1行1観察、1セル1値。運用のためのデータベース構造と解析用の平坦な表は別物であること閲覧 2026-08-17