データのお砂場(123) R言語、melanoma、悪性黒色腫の生存データ、{boot}

Joseph Halfmoon

Rのパッケージ「Boot」に含まれるサンプルデータセットをabc順に経めぐってます。前回はアマゾンの水位データでしたが、今回はデンマークの医療系のデータです。melanomaとな。恐ろしや。50年以上前のデータなんだけれども。医療系の「サバイバル」データということもあり、右打ち切りデータの処理が必定。

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

melanoma、サンプルデータセット

サンプルデータセットの解説ページへのリンクが以下に。

Survival from Malignant Melanoma

北欧はデンマーク、オーゼンセというところの国立大学病院で1962年から1977年にとられたデータのようです。オーゼンセというのはバルト海から北海に抜ける海峡に連なる島々の一つ、フェン島にあるらしいです。行ったことないけど。

メラノーマ、悪性黒色腫というと、年寄はつい思い出します『巨人の星』を。だいたい「悪性黒色腫」という病名を知ったのは『巨人の星』だったから。ただ、『うはら皮膚科』様の以下の記事を拝見するに、アニメで描かれた症状はどうも「じゃない」ものみたいっす。

飛雄馬の恋人、日高美奈さんはメラノーマではないかも?

ともあれ、悪性で進行が急という恐ろしい病気であることは遍く当時の少年たちに認識されたのではないかと思います。メラノーマについては、『がん研有明病院』様の以下の記事を拝見させていただきました。

悪性黒色腫(メラノーマ)

恐ろしい病気ですが、流石に50年以上の年月は、対抗するためのお薬の開発などもあり進歩しているみたいデス。

サンプルデータセット自体は「サバイバー」を含むデータであるので、right censored Data(右打ち切りデータ)を含みます。そしてbootパッケージの中では、censboot関数で処理すべきものみたいっす。解説ページからデータ列の説明をひろっておきます。

    • time、手術後の生存日数(日数ですぞ!)
    • status、1はメラノーマ原因で死亡、2は生存、3はそれ以外の理由で死亡
    • sex、1は男性、0が女性
    • age、手術時年齢
    • year、手術実施の年(西暦)
    • thinkness、腫瘍の厚み(mm)
    • ulcer、1が潰瘍あり、 0がなし

上記のデータをみると、「潰瘍化」と「腫瘍の厚み」が問題みたいです。

まずは生データ

以下のように生データをロードしてみました。「通常の」データフレームみたいです。中に含まれる列は上記の説明通り。melanomaRawData

まずは、お亡くなりになったのか、サバイブしているのかstatusフィールドと、潰瘍化の有無(ulcerフィールド)で層別して集計してみます。

melanoma.surv <- aggregate(melanoma$time, by = list(status=melanoma$status, ulcer=melanoma$ulcer), mean)

結果はこんな感じ。黄色のマーカは、メラノーマ起因でお亡くなりになった方の集計部分です。melanomaAggregate

上記をみると、潰瘍化していないケースの方が手術後の余命が長かったように見えます。

その辺をグラフ化するために、パッケージ dplyr を導入してデータを層別した上で箱ひげ図を描いてみました。処理はこんな感じ。

status1_ulcer0 <- melanoma %>% filter(status==1, ulcer==0) %>% select(time)
status1_ulcer1 <- melanoma %>% filter(status==1, ulcer==1) %>% select(time)
boxplot(c(status1_ulcer0, status1_ulcer1), names=c("ulcer0", "ulcer1"), ylab="time[days]", main="Survival from Malignant Melanoma")

作製した箱ひげ図が以下に。

melanomaBoxPlot

これをみて何と言うかは微妙。

censboot処理例

このデータセット自体は、statusが2の生存者を含むデータであります。生存者を含む計算をするためには censboot 関数使えということで、censboot関数のところに処理例としてこのデータを使ったものが挙げられてます。

その通りに処理してみようとして1行入力したら怒られました。Error_coxph

およよ、coxph関数が見つからんと。coxph関数、私は存じ上げませんが

Fits a Cox proportional hazards regression model.

するための関数みたいです。パッケージ survival に含まれておるようです。survivalパッケージは Survival Analysis するためのパッケージらしいです。そういう「そのものズバリ」のパッケージがあったのね。survivalパッケージをロードしておけば、処理例はするすると走ります。

処理例、結構長いです。こんな感じ。melanomaExampleOpr

上記で黄色のマーカを引いた mel.coxを求めた結果が以下に。mel_cox

上記をみると、年齢で層別した上で、medianと95%の信頼区間でLCL(下側信頼限界)とUCL(上側信頼限界)が列挙されております。

上記で緑色のマーカ引いた censboot関数の処理結果をグラフにしたものが以下に。melanomaExamplePlot

ここで使っている「線形なモデル」、素人には良く分からんなあ。でも腫瘍の厚みが1mm以下くらいのときの挙動と2mmを超えるときの挙動が明らかに違うなあ。恐ろしいなあ。。。

データのお砂場(122) R言語、manaus、マナウスにおけるリオ・ネグロ川の水位、{boot} へ戻る

データのお砂場(124) R言語、motor、バイク事故シミュレーションデータ、{boot} へ進む