医療統計学・医療情報学・遠隔医療 · 17
情報理論とデータベース
Information Theory, Databases
🧠 全体像:情報とは「不確実性が減った量」である。だからありふれた知らせは情報が少なく、思いがけない知らせは情報が多い。この一言を数式にしたのがエントロピーで、臨床に持ち込めば「その検査は何ビット教えてくれるのか」を測る道具 tool 道具(tool) tool(道具) になる。後半のデータベースは、その情報を壊さずに保管し、取り出すための工学である——前者が情報の量、後者が情報の器の話である。
情報とは何か
直観的な定義がいくつもある。
| 出所 | 定義 |
|---|---|
| 語源 | ラテン語 informare=「心を形づくる」。教える、指示する。情報を得たときにだけ、人は考えを変えられる |
| 生理学的 | 機械または生物に反応を引き起こす信号・入力(パブロフの条件反射 conditioned reflex条件反射(conditioned reflex) conditioned reflex(条件反射)) |
| 構造的 | 他のパターンの形成に影響を与えるパターン(DNA配列 → タンパク質の構造) |
💡 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進法に慣れているだけで、底はいくつでもよい。
個の事象を固定長の2進符号で区別するには ビットが要る。
| 事象の数 | 必要なビット数 | そのビット数で表せる最大数 |
|---|---|---|
| 2(コイン) | 1 | 2 |
| 6(サイコロ) | 3 | 8 |
| 8 | 3 | 8 |
⚠️ サイコロの目6種類に3ビットを使うと、8通り表せるうち2通りが無駄になっている。固定長符号fixed-length code 固定長符号(fixed-length code)fixed-length code(固定長符号) は原理的に無駄を含む。
💡 まとめて符号化 encoding 符号化(encoding) encoding(符号化) すると改善できる。サイコロを3回振った結果は 通りで、 だから8ビットで表せる。1事象あたり ビットとなり、3ビットずつ使う場合(9ビット)より1ビット少ない。
⭐ ここで自然な疑問が出る——どこまで縮められるのか。 その下限を与えるのが情報量である。
情報量とエントロピー
まず直観との対応を確かめる。次の知らせのうち、どれが「情報が多い」か。
| 知らせ | 確率 | 直観 |
|---|---|---|
| コインを投げた。表か裏か? | 1/2 : 1/2 | まったく見当がつかない |
| 今朝は道が空いている | 1/4 : 3/4 | やや予想外 |
| 明日は雨が降る | 1% : 99% | 大いに予想外 |
| 宝くじに当たった | 1/13,983,816 | 驚愕startle (response)驚愕(startle (response))startle (response)(驚愕) |
⭐ 起こりにくい事象ほど、それが起きたと知らされたときの情報が多い。 逆に「ほぼ確実に起こること」が起きても、何も学ばない。
単一事象の情報量
この直観を満たす関数として、確率 の事象が実際に起きたときの情報量を次で定義する。
| 読み方 | ||
|---|---|---|
| 1 | 0 bit | 確実なこと。学ぶものがない |
| 1/2 | 1 bit | コイン1回分 |
| 1/8 | 3 bit | コイン3回分 |
| 1/1000 | 約 10 bit | かなり驚く |
💡 対数が選ばれたのは、独立な事象を並べたときに情報が足し算になるようにするためである。 の情報量は 。これは「2回コインを投げれば情報は2倍」という直観と一致する。
エントロピー
情報量 は「特定の結果が起きたとき」の量である。その情報源から平均してどれだけ学べるかを知るには、確率で重み付けた期待値を取る。これがシャノンエントロピーShannon entropyシャノンエントロピー(Shannon entropy)Shannon entropy(シャノンエントロピー)である1。
⭐ は「平均してどれだけ驚くか」=「事前にどれだけ不確実か」を測る量である。 式より先に、この一言を持っておく。
公平なサイコロと歪んだサイコロ
| 確率分布 | エントロピー | |
|---|---|---|
| 公平なサイコロ | 各面 1/6 | bit |
| 歪んだサイコロ | 1/2, 1/4, 1/8, 1/16, 1/32, 1/32 | bit |
💡 歪んだサイコロでは「1が出るだろう」と予想がつくので、実際に出ても学ぶことが少ない。公平なサイコロでは何も予想できない=不確実性が最大である。
⭐ 等確率のとき は最大になる。 これは熱力学のエントロピーが「取りうる微視的状態 microstate 微視的状態(microstate) microstate(微視的状態) の数が最大のときに最大」になるのと同じ構造である。
⚠️ 「公平なサイコロは1事象あたり3ビット必要」と説明されることがあるが、これは固定長符号fixed-length code 固定長符号(fixed-length code)fixed-length code(固定長符号) を使ったときの数字である。理論的な下限はエントロピー ビットであり、先ほどの「3事象まとめて8ビット」(= 2.67 bit/事象)はこの下限に近づいてはいるが、まだ届いていない。符号化encoding 符号化(encoding)encoding(符号化) の効率の限界を与えるのがエントロピーである——これがシャノンの結果の核心である。
エントロピーはどう導かれたか
シャノンは が満たすべき条件を3つ立て、それを満たす関数が対数形に一意に定まることを示した1。
| 条件 | 内容 |
|---|---|
| 1. 連続性continuous連続性(continuous)continuous(連続性) | が少し変われば も少し変わる |
| 2. 単調monotone 単調(monotone)monotone(単調) 性 | すべて等確率()のとき、 は の増加関数。選択肢が多いほど不確実 |
| 3. 分岐の加法性 additivity加法性(additivity) additivity(加法性) | 選択を2段階に分けても全体の は変わらない。 |
⭐ 式を暗記するより、この3条件のほうを覚えておくとよい。「不確実性」という言葉に人が期待する性質を書き下しただけで、対数の形が強制される——これが情報理論の美しさである。
2値エントロピー
医学で最もよく使うのは、2つの結果しかない場合である。
| 状況 | ||
|---|---|---|
| 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]
⭐ 山は で最大、両端で 0。左右対称なのは、 と のどちらを「起こる」と呼ぶかで不確実性は変わらないからである。
💡 頂上が平らで、両端が切り立っているのが臨床的に重要な性質である。 が 0.3 から 0.5 へ動いても は 0.881 → 1.000 としか増えないが、 が 0.05 から 0.2 へ動くと 0.286 → 0.722 と2.5倍になる。確率が 0 や 1 に近い領域ほど、わずかな確率の変化が不確実性を大きく動かす——検査前確率 pretest probability 検査前確率(pretest probability) pretest probability(検査前確率) が極端に低い(あるいは高い)患者では、検査結果が確信度を大きく変えうるということである。逆に 付近の患者では、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
診断で得られる情報は何ビットか
⭐ ここが本ノートで最も臨床的に有用な部分である。 ベイズ法で、検査は事前確率 pretest probability 事前確率(pretest probability) pretest probability(事前確率) を事後確率 posterior probability 事後確率(posterior probability) posterior probability(事後確率) へ更新すると学んだ。エントロピーを使えば、その更新がどれだけの「学び」だったかをビットで測れる。
感度90%・特異度90%の検査を、有病率prevalence 有病率(prevalence)prevalence(有病率) 3%の集団で使う(尤度比の例と同じ設定)。
| 確率 | エントロピー | |
|---|---|---|
| 検査前 | 3% | bit |
| 陽性だったとき(確率 12.4%) | 21.8% | bit |
| 陰性だったとき(確率 87.6%) | 0.34% | bit |
期待される検査後エントロピーは bit。したがって
⚠️ わずか 0.07 ビット。 感度・特異度がともに90%という悪くない検査でも、有病率prevalence 有病率(prevalence)prevalence(有病率) 3%の集団に使うと、平均してコイン投げ1回の14分の1しか情報が得られない。これが「事前確率pretest probability 事前確率(pretest probability)pretest probability(事前確率) の低い集団に検査をばらまいても得るものが少ない」ことの定量的な表現である。
💡 ここで見逃せない現象がある。陽性だった場合、エントロピーは 0.194 → 0.756 ビットへ「増えて」いる。 検査前は「ほぼ健康だろう」とほぼ確信していたのに、陽性を見た後は21.8%という最も判断に迷う領域に放り込まれた。個々の結果は不確実性を増やしうる。
しかし平均すれば必ず減る( が常に成り立つ)。陰性が返る確率のほうが圧倒的に高く、そのとき不確実性は大きく減るからである。この非対称は臨床の実感——「陰性なら安心できるが、陽性は追加検査を呼ぶ」——と正確に一致する。
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
事前と事後の距離
より一般に、事前分布prior distribution事前分布(prior distribution)prior distribution(事前分布) から事後分布 posterior distribution事後分布(posterior distribution) posterior distribution(事後分布) へどれだけ動いたかはカルバック・ライブラー情報量(相対エントロピーrelative entropy相対エントロピー(relative entropy)relative entropy(相対エントロピー))で測る。
⭐ 式そのものは暗記しなくてよい。統計ソフトや診断支援システムが「この検査の情報価値」を計算するとき、背後で動いているのがこの量であると知っていれば足りる。読み方は「事後分布posterior distribution 事後分布(posterior distribution)posterior distribution(事後分布) が事前分布 prior distribution 事前分布(prior distribution) prior distribution(事前分布) からどれだけ離れたか=どれだけ学んだか」であり、知識が増えるほど不確実性が減るという関係を定量化している。
情報エントロピーと物理エントロピー(発展)
情報のエントロピーと熱力学のエントロピーが同じ名前をもつのは偶然 chance 偶然(chance) chance(偶然) ではない。
マクスウェルMaxwell マクスウェル(Maxwell)Maxwell(マクスウェル) の悪魔:容器を仕切り、速い分子だけを片側へ通す「悪魔」がいれば、片側の温度は下がり反対側は上がる。仕事なしに温度差ができる——熱力学第二法則 second law 第二法則(second law) second law(第二法則) の違反か?
⚠️ 違反ではない。 悪魔は系の外部にいるのではなく、系と相互作用している。悪魔は分子の位置という情報を取得し、それによって自らの状態が変化する。系の収支 net yield 収支(net yield) net yield(収支) に悪魔を含めれば第二法則 second law 第二法則(second law) second law(第二法則) は保たれる。
シラードのエンジンで定量化される。分子1個の位置を測定して1ビットを得ると、等温膨張で の仕事が取り出せる。 より
⭐ 1ビットの情報を消去すると、物理的エントロピーが だけ増える(ランダウアーの原理)2。論理的に不可逆な演算(AND ゲートのように入力が復元 restoration 復元(restoration) restoration(復元) できないもの)は必ず熱を発生させる。💡 情報は抽象的な概念ではなく、物理量である。
データベース
ここから話は「情報をどう量るか」から「情報をどう保管し取り出すか」へ移る。
データベースの役割は3つ——保管・構造化・取り出し。紙のカルテは保管はできるが、取り出しと修正が絶望的に困難である。「50歳以上で降圧薬 antihypertensives 降圧薬(antihypertensives) antihypertensives(降圧薬) を使っている患者を全員挙げよ」に答えるには全部を読み直すしかない。
表計算ソフトの1枚の表
紙の次に来るのが表計算ソフトの1枚の表である。用語を整理する。
| 用語 | 中身 |
|---|---|
| テーブル(表) | 順序づけられたデータの集合 |
| レコード(行) | ひとまとまりの情報。すべての行が同じ構造をもつ |
| フィールド(列) | 1つのデータ型 |
これでも並べ替え・絞り込み・検索はできる。しかし規模が大きくなると崩れる。
| 問題 | 中身 |
|---|---|
| レコードの大きさが揃わない | 該当しない項目が空欄になり、容量が無駄になる |
| 項目の追加が煩雑 | 列を1つ足すと既存の全行に影響する |
| 不整合 | 空欄が「値がない」のか「入力し忘れ」なのか区別できない |
| 冗長 | 同じ事実を何度も入力する(同じ医師 medical doctor 医師(medical doctor) medical doctor(医師) 名、同じ病院名) |
| 入力ミス | 同じ情報を繰り返し打つほど誤字が混入する |
| 修正が事実上不可能 | 1つの事実を直すのに何百箇所も直さねばならず、必ず直し漏れる |
💡 冗長性redundancy 冗長性(redundancy)redundancy(冗長性) こそが不整合の原因である。 同じ事実が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変数 variables変数(variables) variables(変数) | 変数variables 変数(variables)variables(変数) はちょうど1つの列に対応する | 性別が「男か」「女か」の2列に分かれている |
| 1行 = 1観察 | 観察単位unit of observation 観察単位(unit of observation)unit of observation(観察単位) (患者、受診、検体)が行に対応する | 1人の患者の複数回の測定が横に並べられている |
| 1セル = 1値 | セルに複数の値や複数の型を混ぜない | 併存疾患comorbidity 併存疾患(comorbidity)comorbidity(併存疾患) を1つのセルにカンマ区切りで列挙 |
加えて、欠測の表記を全体で1つに統一すること。欠測を 0 で表すのは最悪の選択である——0 は正当な観測値でもありうるので、二度と区別できない。
⭐ 実際に壊れた表を直す具体的な手順と、収集の段階で避ける方法は 調査法survey methodology調査法(survey methodology)survey methodology(調査法)・データ表の作り方・統計家との協働にまとめてある。本ノートはそのなぜ——なぜ列が変数 variables 変数(variables) variables(変数) でなければならないのか、なぜ冗長が危険なのか——を扱っている。
個人情報の分離
⚠️ 氏名・保険番号・連絡先は解析に使われない。IDだけを共有キーにして別テーブルに分離する。 リレーショナルモデルrelational model リレーショナルモデル(relational model)relational model(リレーショナルモデル) の考え方をそのまま個人情報保護に適用した形であり、法的要請であると同時に良い設計でもある。
医学応用と人工知能
| 応用 | 中身 |
|---|---|
| 診断で得られる情報量 | 前述のとおり、検査の価値をビットで定量化できる |
| エキスパートシステム | 知識と規則をデータベース化し、推論に使う |
| 遺伝子・オミクスのデータベース | ゲノム、プロテオミクスproteomicsプロテオミクス(proteomics)proteomics(プロテオミクス)、リピドミクスlipidomicsリピドミクス(lipidomics)lipidomics(リピドミクス)。個別化医療individualized (personalized) medicine 個別化医療(individualized (personalized) medicine)individualized (personalized) medicine(個別化医療) は「巨大なデータベースから個人に該当する情報を取り出す」問題として定式化される |
| ニューラルネットワークneural networkニューラルネットワーク(neural network)neural network(ニューラルネットワーク) | 生物の神経細胞を模した人工ニューロン(入力の重み付き和に活性化関数 activation function 活性化関数(activation function) activation function(活性化関数) をかける)を多層に積む。畳み込み層とプーリング層をもつ構造は医用画像 medical imaging 医用画像(medical imaging) medical imaging(医用画像) のセグメンテーション segmentation セグメンテーション(segmentation) segmentation(セグメンテーション) (多発性硬化症multiple sclerosis 多発性硬化症(multiple sclerosis)multiple sclerosis(多発性硬化症) の病変、頭頸部CThead and neck CT 頭頸部CT(head and neck CT)head and neck CT(頭頸部CT) のリスク臓器 organ at risk, OARリスク臓器(organ at risk, OAR) organ at risk, OAR(リスク臓器))に使われる |
⚠️ 深層学習deep learning 深層学習(deep learning)deep learning(深層学習) の医用画像 medical imaging 医用画像(medical imaging) medical imaging(医用画像) モデルは、学習に使われた集団の外では性能が落ちる(撮像装置、プロトコル、患者背景が変わるため)。AUC が高いことは、他施設で使えることを意味しない——これはROC曲線で述べた「AUC は順位づけの能力にすぎない」の延長線上にある。
まとめ
- 情報とは不確実性の減少である。 起こりにくい事象ほど情報が多い:
- エントロピー は、平均してどれだけ不確実か(=どれだけ驚くか)を測る。 等確率のとき最大になる。式より先に「不確実性の量」という一言を持つ
- は符号化 encoding 符号化(encoding) encoding(符号化) 効率の理論的下限でもある。公平なサイコロに「3ビット必要」は固定長符号 fixed-length code 固定長符号(fixed-length code) fixed-length code(固定長符号) の話で、下限は ビット
- 2値エントロピーbinary entropy 2値エントロピー(binary entropy)binary entropy(2値エントロピー) は で最大の 1 ビット、確定すれば 0 ビット
- 検査の情報価値はビットで測れる。 感度・特異度90%の検査も有病率 prevalence 有病率(prevalence) prevalence(有病率) 3%の集団では平均 0.07 ビットしか与えない。しかも陽性だったときは不確実性が増える(0.19 → 0.76 bit)——平均では必ず減るが、個々の結果ではそうとは限らない
- 事前分布prior distribution 事前分布(prior distribution)prior distribution(事前分布) から事後分布 posterior distribution 事後分布(posterior distribution) posterior distribution(事後分布) への「学び」の大きさは KL 情報量で測る。式は暗記せず、ソフトが背後で計算している量として知っておく
- (発展)1ビットの消去は物理的エントロピーを 増やす(ランダウアーの原理)。情報は物理量である
- データベースの本質は冗長の排除である。同じ事実が2箇所にあれば必ずいつか食い違う。リレーショナルモデルrelational model リレーショナルモデル(relational model)relational model(リレーショナルモデル) は各事実を1度だけ保存し、キーで関係を表す
- 運用のためのデータベース構造と、解析に渡す平坦な表は別物。解析用の表は 1列1変数 variables変数(variables) variables(変数)・1行1観察・1セル1値、欠測は1つの記号に統一し、0 を欠測に使わない
出典
- 1.A Mathematical Theory of Communication(Bell System Technical Journal(著者 Claude E. Shannon)・1948)情報量とエントロピーの定義、それが満たすべき3条件(連続性、等確率のときの単調性、分岐の加法性)から対数形が一意に導かれること閲覧 2026-08-17
- 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.A relational model of data for large shared data banks(Communications of the ACM(著者 Edgar F. Codd)・1970)リレーショナルデータモデル——各事実を一度だけ保存し、関係(テーブル間のキー)で結ぶことで冗長と不整合を排除する設計閲覧 2026-08-17
- 4.Tidy Data(Journal of Statistical Software(著者 Hadley Wickham)・2014)解析可能なデータ表の3条件——1列1変数、1行1観察、1セル1値。運用のためのデータベース構造と解析用の平坦な表は別物であること閲覧 2026-08-17