« 読了:「東京タラレバ娘」 | メイン | 読了:Li & Anderson (2009) 生命力モデルによる生存分析 »
2016年2月22日 (月)
Carsternsen, B. (2007) Age-period-cohort models for the Lexis diagram. Statistics in Medicine, 26, 2048-3045.
age-period-cohortモデル(いわゆるコウホート分析のこと)について、レキシス図(人口統計の文脈でみかけるわけのわからない図)の観点から解説するという、私にとっては悪夢のような論文。こんなの勉強してる場合じゃないんだけど、仕事の都合でコウホート分析が必要になり、観念して手に取った。
本文では自明視されているけれど、頭の整理をしておくと...
この論文が想定しているのは、「西暦xxxx年(period)、xx歳(age)の、西暦xxxx年生まれの人々(cohort)が、 これこれの率で死にました」というような表の分析である。本文では一貫してtabulationと呼んでいるが、コウホート表と訳す。モデリングもコウホート表から出発する状況を想定している。
レキシス図とは、横軸にperiod、縦軸にageをとった図のこと。本来period=cohort+ageだから、 ある人の生命は右上に向かう傾き1の線分として表現される。
コウホート表の個々の値はレキシス図のある領域に対応している。その領域は正方形だったりそうでなかったりする。たとえば「西暦xxxx年(period)、xx歳(age)の、西暦xxxx年生まれの人々(cohort)」という領域は、左辺が垂直(年始)、上辺ないし下辺が水平(誕生日)である直角二等辺三角形になる。この論文は一般性を重んじているので、領域の形は定めていない(おかげでかなり回りくどい)。なお、本文ではこの領域を一貫してsubsetと呼んでいるので、サブセットと訳す。
いわく。age-period-cohortモデル(以下、APCモデル)を、レキシス図からの観察を記述する一般的モデルとして示そう。
話を先取りすると、本稿のポイントは3つ。(1)表をつくるときにに情報を捨てるな。(2)age, period, cohortは連続変数として捉えろ。(3)率の絶対値を示せ。
まずは、視覚化しましょう。古典的な図は次の4つ。
- 横軸にage, 縦軸に率, periodで層別した折れ線
- 横軸にage, 縦軸に率, cohortで層別した折れ線
- 横軸にperiod, 縦軸に率, ageで層別した折れ線
- 横軸にcohort, 縦軸に率, ageで層別した折れ線
注目点は、率が比例的に動くかどうか。すなわち、縦軸を対数にしたとして、図1,3が直線か (ageごとの率はperiodと比例するか), 図2,4が直線か (cohortと比例するか)。
データをどのように表にすべきか。
レキシス図からみると、あるサブセットが1行のレコード、イベント数とリスク時間[←観察人年のことであろう]がアウトカム、age, period, cohortのサブセット内平均が説明変数である[←ここでいう平均とは、サブセットに属する観察対象者たちの平均ではなく、領域の平均だと思う]。行はできるだけ多くすること。イベント数がゼロの行があってもかまわない。
サブセットのリスク時間はこうやって求める。ageとperiodは年刻みだとしよう。age $a$ のperiod $p$ 初頭での人口サイズを$L_{a,p}$とする。period $p$初頭においてageが$a-1$であった人(=カレンダー年 $p-a$に生まれた人)における、period $p$を通じたリスク時間は、次の2式の和になる。
- age $a-1$において、$y_{a-1, p, p-a} = (1/3) L_{a-1, p} + (1/6) L_{a, p+1}$
- age $a$において、$y_{a, p, p-a} = (1/6) L_{a-1, p} + (1/3) L_{a, p+1}$
[いやー、このくだりで時間がかかった。。。
直感的にはだいたい上の式のような感じだろうなと思ったのだが、こんなにきれいな式になる理由が、考えれば考えるほどわからない。だって、「誕生日に射殺される患者」の年始からの平均余命でしょう? 病死のハザードを定数とし(累積ハザードは時間の指数関数になる)、誕生日の分布を一様として(累積ハザードは時間の一次関数になる)、このふたつの競合リスクの下での平均余命を考えるとなると、それってもっと複雑にならないか?
電車での移動中に宙を眺めてあれこれ考えたが(おかげで傘をどこかに忘れた)、どうにも埒が明かないので付録の証明を読んでみたところ、「年始に$a$歳であり、かつ年内に死んだ人の死亡日の分布」を一様分布と仮定している。この仮定の下では、なるほど、ごく簡単な積分で上式が導出できる。ここにトリックがあるわけだ。本文中には「constant mortalityを仮定する」とあるので、そんなら死亡日の分布は指数分布にすべきだろうと思うのだが、ハザードが低い状況で、1年間くらいならまあ一様分布でいいや、ってことなのだろう。私としてはマーケティング・データへの応用を考えていて、消費者行動のハザードは死亡のハザードよりもはるかに高いから、ここは気を付けないといけない...]
あるサブセットにおけるage, period, cohortの平均について。[←くどいけど、そのサブセットに属する人の平均じゃなくて、領域自体の平均の話。いまなんでこんな話をしているかというと、モデリングにおいてコウホート表から出発するからだ]
ダイアグラム上で、age vs. periodの表は長方形、period vs. cohort の図は左右の辺が垂直な平行四辺形、age vs. cohortの図は上下の辺が水平な並行四辺形になる。いずれにせよ、その範囲のage, period, cohortの平均は、単にその辺の平均である。
しかし、たとえば「1980年の年内に61歳になった人のその誕生日から年末まで」は直角二等辺三角形になる。年齢の平均は61+(1/3)である。こういう風に、平均は辺の1/3とか2/3とかになる。
以下では、任意の形状の領域におけるケース数を$D$、リスク時間の合計を$Y$と呼ぶ。その共変量は、a, p, c(=p-a)のその領域における平均である。
さあ、いよいよモデリングだ。
age $a$, period $p$ における率を$\lambda(a, p)$として、乗算APCモデルは
$\log[\lambda(a, p)] = f(a) + g(p) + h(c)$
入力される$a, p, c$は観察単位における平均である[←たとえばageを年齢で切っていたらaは満年齢+0.5、ということだろう]。率はサブセット内で一定と仮定する(そうせざるを得ない)。
あるサブセットで$(D, Y)$だとして、対数尤度に対する寄与は
$l(\lambda|D,Y) = D \log(\lambda) - \lambda Y$
率が定数だと仮定する場合を別にすれば、これは平均$\lambda Y$のポワソン分布に従う確率変数$D$の、ある観察の対数尤度と同じである。だから独立な観察に対するポワソン回帰のプログラムを使って推定できる。ただし、ケース数がポワソン分布に従っているわけではないことに注意。[...このあたり、ちょっと理解が追い付かない記述があるが省略]
モデル右辺の項を減らし、デビアンス統計量で尤度比検定することも多い(これは記述モデルなんだから検定してもしょうがない、という見方もできるけれど)。a,p,cの間隔を細かくすれば有意になりやすいことに注意。
a,p,cの効果は非線形かもしれないので、factorとして扱い水準ごとにパラメータを推定するのが古典的方法。がんの疫学的研究では5年で区切ることが多かった。パラメトリックなスムージングをかける方法もある。スプライン、自然スプライン、分数多項式など。[パラメータ数の選び方についていろいろ書いている。省略]
線形トレンドを抽出するために、factorモデルで推定した各水準のパラメータを実際のageなりperiodなりcohortなりに回帰することがある。報告の時には傾き、切片、残差も載せる。[←このくだりはこのあとの話への伏線で、いろいろ説明が書いてあるけど大幅省略]
より一般的には、
$\log[\lambda(a, p)] = f(a) + g(p) + h(c)$
の関数f, g, hをどうにかうまく決めて推定する。上の古典的方法はf,g,hをピースワイズ一定とみなしているわけだ。
関数を選ぶ際に目指すのは、(1)意味があること、(2)わかりやすいこと、(3)普通のソフトで推定できること、(4)報告された値から率を再現できること。
まずはage-cohortモデルについて考えてみよう:
$\log[\lambda(a, c)] = f(a) + h(c)$
伝統的には、コホートの参照点$c_0$を決めて$h(c_0)=0$と制約する。$f(a)$はコホート$c_0$における年齢のログレート、$h(c)$はコホート$c_0$と比べたログレート比になる。つまり
$\log[\lambda(a, c)] = \tilde f(a) + \tilde h(c) = (f(a)+\mu) + h(c)-\mu)$
と考え、$\mu=h(c_0)$と定義して、$\tilde h(c)=f(a)-h(c_0)$、$\tilde h(c)= h(c)-h(c_0)$と解するわけだ。
これをage-period-cohortモデルに拡張しよう。
$\log[\lambda(a, p)] = \tilde f(a) + \tilde g(p) + \tilde h(c)$
についてどうにかうまく制約したいわけである。どこか2つの水準と、どれかひとつの傾きを制約する必要がある[←その理由が縷々説明されていたのだけど、よくわかんなかったので今回は断念]。
ひとつの方法は: $h(c_0)$を0に制約。$f(a)$はコホート$c_0$における年齢のperiod調整済ログレートとして、$h(c)$は$c_0$に対する対数RRと解釈できる。さらに、$g(p)$を平均0に制約。$g(p)$はage-cohort予測に対する対数RRと解釈できる(ないし、基準日$p_0$において$g(p_0)=0$と制約。その場合は$a_0=p_0-c_0$における年齢効果が$p_0$の率と等しくなり、periodの効果が$p_0$に対する残差の対数RRになる)[←ぐわー、ややこしくてわかんないー]。
あとは、age-cohortでまず推定してそこにperiodを突っ込む話とか、実例とか。疲れたのでパス。
。。。途中で力尽きて、いい加減な読み方になってしまった。ま、背景知識が足りないので、仕方ない。
想像していたのと全然ちがう内容であった。文脈がよくわかっていないんだけど、 要するに、疫学では間隔を広めにとったfactorモデルで良しとすることが多いので、もっと細かくやるべしという主旨の啓蒙論文だったのではないかと思う。
読んでいてわかったのは、手法の細かいところにdomain-specificな事情が意外に効いているという点。たとえば、レキシス図上で三角形になる領域の集計値の話が多かったのは、生年x死亡時暦年x死亡時満年齢の集計表を分析することが多いという事情からきているんじゃないかなあ。こういう集計、マーケティング・データではちょっと想像しにくい(生年と満年齢のどっちかしか使わないだろう)。うーん、やっぱり社会科学系の解説を読むべきだったかも。
最後まで読んでようやく気が付いたんだけど、著者はRのEpiパッケージの開発者。なるほど、それでEpiパッケージのドキュメントはこの論文を引用しまくってるのか... (気が付くのが遅いぞ!!)
論文:データ解析(2015-) - 読了:Carsternsen(2007) レキシス図で学ぶコウホート分析