MENU

【無料プレゼント付き】学会発表・論文投稿に必要な統計を最短で学ぶことができる無料メルマガ

R でサブグループ解析の結果をフォレストプロットで書く方法

サブグループ解析の結果をフォレストプロットで書く方法はいくつかあるが、ここでは、R スクリプト中心に書く方法を解説する

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

目次

EZR の機能を使う方法

R のスクリプトの方法の前に、EZR のメニューをいろいろ駆使して書く方法の記事をご紹介

EZR になれている場合、こちらのほうがよいかもしれない

R スクリプトでサブグループ解析結果をフォレストプロットで書く方法

R スクリプトで書く場合は、以下のように実行する

3 ステップに分けて説明する

ここでは、EZR 公式マニュアル付属のデータセットを活用して、Cox 回帰のサブグループ解析を行う

サブグループ解析結果の前に全体解析結果をデータフレームに格納する

サブグループ解析の結果をデータフレームに格納していくのだが、その前に、全体解析の結果の対数ハザード比 logHR と標準誤差 SE をデータフレームに格納する

# Forest plot of subgroup analysis
# サブグループごとの解析を行い結果を df に格納する
load("ElderlyAML_rev.RData")
library(survival)
df <- data.frame()
res <- coxph(Surv(Days,Survival)~Anthracyclines, data=ElderlyAML)
logHR <- summary(res)$coef[1]
SE <- summary(res)$coef[3]
GR <- 'ALL'
res1 <- data.frame(GR, logHR, SE)
df <- rbind(df,res1)
df

データフレーム df の先頭行に ALL の結果を格納した

> df
   GR      logHR        SE
1 ALL -0.9215332 0.3455331

サブグループ解析の結果をデータフレームに格納する

次に、サブグループ解析の結果をデータフレームに格納する

variables にサブグループ解析を行うカテゴリカルデータの変数名ベクトルを格納して、使用する

variables <- c('Sex.Dummy.F', 'PS2', 'LDH250', 'Cre15', 'CRP1', 'WBC30000', 'Age70', 'Plt2')
for (variable in variables){
  res <- coxph(Surv(Days,Survival) ~ Anthracyclines, data = ElderlyAML, subset = get(variable) == 0)
  logHR <- summary(res)$coef[1]
  SE <- summary(res)$coef[3]
  GR <- paste(variable, "=0", sep="")
  res1 <- data.frame(GR, logHR, SE)
  df <- rbind(df, res1)
  res <- coxph(Surv(Days,Survival) ~ Anthracyclines, data = ElderlyAML, subset = get(variable) == 1)
  logHR <- summary(res)$coef[1]
  SE <- summary(res)$coef[3]
  GR <- paste(variable, "=1", sep="")
  res1 <- data.frame(GR, logHR, SE)
  df <- rbind(df, res1)
}
df

variables の一つ一つのカテゴリカルデータの 0 のときの結果と、1 のときの結果を順番にデータフレームに格納している

できあがりは、以下のとおりである

> df
              GR      logHR        SE
1            ALL -0.9215332 0.3455331
2  Sex.Dummy.F=0 -0.8433599 0.4774421
3  Sex.Dummy.F=1 -1.0185934 0.5133041
4          PS2=0 -0.9211330 0.3780901
5          PS2=1 -0.5377643 0.8248212
6       LDH250=0 -1.7529075 0.8527541
7       LDH250=1 -0.7791516 0.3971939
8        Cre15=0 -0.8331148 0.3816948
9        Cre15=1 -1.3697384 1.1391895
10        CRP1=0 -1.0266389 0.5534791
11        CRP1=1 -0.8795466 0.4542963
12    WBC30000=0 -1.0448020 0.4100158
13    WBC30000=1 -0.6614039 0.6758000
14       Age70=0 -1.4822192 0.5713317
15       Age70=1 -0.2119710 0.4554232
16        Plt2=0 -1.0395092 0.3858093
17        Plt2=1 -0.7244348 0.9243423

メタアナリシスパッケージの関数を借りてフォレストプロットを書く

メタアナリシスパッケージの meta にある、metagen 関数と forest 関数を借りて、フォレストプロットを書く

# メタアナリシスの関数を借りて、フォレストプロットを書く
library(meta)
metagen.res <- metagen(TE=logHR, seTE=SE, studlab=GR, data=df, sm='HR', common=FALSE, random=FALSE)
forest(metagen.res)

以下のように、メタアナリシスのフォレストプロットと同様のグラフが、サブグループ解析結果として並んで書かれる

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

まとめ

R でサブグループ解析結果をフォレストプロットで書く方法を紹介した

R スクリプトで、二値のカテゴリカルデータによる複数のサブグループを、for 文で一気に計算して、最後に metagen と forest で書くという流れである

参考になれば

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

コメント

コメントする

目次