データのお砂場(95) R言語、aml、急性骨髄性白血病の寛解時間、bootパッケージ

Joseph Halfmoon

前回に引き続きbootパッケージの中のサンプルデータセットです。今回はamlとな。「急性骨髄性白血病の寛解時間」に関する約50年前の古い「予備調査」の結果のようです。予備ということもあるのか、調査結果はある時点でスッパリ打ち切られてしまってます。そういう打ち切り(censoring)を勉強するデータなのかもしれません。

※「データのお砂場」投稿順Indexはこちら

bootパッケージのamlサンプルデータセット

このデータセットについているタイトルは以下のようです。

Remission Times for Acute Myelogenous Leukaemia

「急性骨髄性白血病の寛解時間」と訳してよいのかしら?1977年にスタンフォード大学の人が発表した研究のデータのようです。データの取得自体は、1974年10月に打ち切られたものなのだそうな。

bootパッケージのサンプルデータセットについては、以下からPDF化された説明資料を読むことができます。

https://cran.r-project.org/web/packages/boot/boot.pdf

ここで調査されているのは、寛解後の「維持化学療法」の効果についてのようです。想像するに50年も前と現在では「維持化学療法」相当進歩しているのではないかしらん。「維持化学療法」について、慶應義塾大学医学部 血液内科様の以下のページより1か所引用させていただきました。

急性骨髄性白血病

(以下引用)

完全寛解となっても体内に白血病細胞は残存しているので地固め療法や維持療法といった化学療法を繰り返し行い、根治を目指します。

つまり、治ったと思った後も「維持」のための療法は必要で、やらんでおくと再発する危険があるぞ、ということみたいっす。知らんけど。

今回のデータセットは、23例のケースについて「維持化学療法」を実施したグループと、実施しなかったグループの人について、寛解後「寛解でなくなる」までの時間(単位週)を比較するためのデータです。ただし、

    1. 途中でこの研究から離れてしまった人がいる(後は知らん?)
    2. 1974年10月時点で打ち切っているので、その時点で寛解継続している人もいる

という2種の人々も含まれている。集計される側の都合なのか、集計側の都合なのかは別として、ともかく途中で打ち切ったデータが含まれている、ということが問題というか、データセットの真の狙いというかと思われます。知らんけど。

まずは生データ

まずは、bootパッケージを使えるようにした後、生データをロードして素性を調べてみます。形式は通常のdata.frame、23例について、以下の3フィールドのデータっす。

    • time 寛解継続時間。以下のcens=1のカテゴリについては寛解から再発までの時間とみてよいのだろうが、cens=0のカテゴリについては、寛解から実験離脱までの時間かも知れないし、寛解から1974年10月の打ち切りまでの時間かもしれない、と思われる。
    • cens cens=0のときは「右」打ち切り時間。cens=1のときは実際の寛解継続時間
    • group 1は維持化学療法を受けた人、2は受けなかった人。

ロードした生データが以下に。amlRawData

例によって伝統の plyrパッケージを使って、cens/groupで分類した4種のカテゴリで分類した場合の集計が以下に。amlDDPLY

 

ボックス・プロット再び

まずは、censの分類を踏みつぶしてしまて、group別のみで集計したBoxplotを描いてみます。前回同様 ggplot2 利用です。コマンドが以下に。

aml.W <- aml
aml.W$group[aml.W$group==1] <- "MC"
aml.W$group[aml.W$group==2] <- "noMC"
p0 <- ggplot(data=aml.W, mapping=aes(group, y=time, fill=group)) + geom_boxplot()
p1 <- p0 + ylab("time [weeks]") + ggtitle("Remission Times for Acute Myelogenous Leukaemia")
p1

プロット結果が以下に。MCと書いてあるオレンジの方が「維持化学療法」あり、緑の方がなしです。多少オレンジの方が長めだけれども、突出して長い人のお陰で全体が上に伸びている感じもあるし、微妙っす。
amlHistGroup

ただし、上記の中には本当の期間と「打ち切られた見掛けの期間」の両方が混然と含まれてしまっているので、このままでは、なんだかな~。釈然としませぬ。

そこで cens=1の本当の期間がとれているものだけを抜き出してみます。

aml.ON <- aml[aml$cens==1,]
aml.ON$group[aml.ON$group==1] <- "MC"
aml.ON$group[aml.ON$group==2] <- "noMC"
p2 <- ggplot(data=aml.ON, mapping=aes(group, y=time, fill=group)) + geom_boxplot()
p3 <- p2 + ylab("MeanTime [weeks]") + ggtitle("Remission Times for Acute Myelogenous Leukaemia")
p3

プロットはこんな感じ。なんだか差が見えなくなったな~。amlHistGroupCENS_1_ONLY

でもな~、これはこれで寛解継続時間が長くて「〆きり」超えている長い人を集計の都合で切り捨てたグラフだよな~。これはこれで偏っている?

こういう「区間打ち切りデータ」を含むデータセットについて何かカッコイイ推定を行う手法もあるみたい。これまた要勉強だな~。

データのお砂場(94) R言語、aims、スピード違反と警告(交通)標識、bootパッケージ へ戻る

データのお砂場(96) R言語、beaver、デジャヴ?どこかでみた? bootパッケージ へ進む