比較するグループのプロフィールを作る!
研究する内容が決まったら、何と何とで比較するかを考えます。仮説があって、そこから対象を決めて、そこでどういうグループ分けになっているか、そしてグループ間に偏りがないかというところになります。
そうすると、最初に作るべき表は対象をなる人たちをグループ分けした、全体、グループ1(仮)、グループ2(仮)・・・、となります。そしれそれぞれにいろんな背景の項目があります。これは、どんな人に対してあなたのした研究モデルに当てはめられそうかというものを表します。あなたの研究での結果が全体の結果に当てはまるかどうかは現時点では分からない話なので、他の人たちがどんな項目に注意して追試を行えるかという情報になります。年齢、性別、疾患の種類、合併症、入院日数、介入の有無など色々あります。
全体 グループ1 グループ2. p. smd
n. 100. 51. 49.
年齢 yyy. yyy1. yyy2 1.000. 0.01
男(女). 70 34. 36. 0.517. mmmm
中身は適当ですがこんな感じの票ができるわけです。ここでpというのは検定をしていてグループ間に差があるかないかなんてことを調べているわけです。その隣のsmdというのは標準化平均差なんてもので、マッチングを行ったグループの間にどれくらい差(?)があるのかを表しており0.1以下だといいんじゃないかとされています。マッチングをしていないとp値?とかなのですが最近は記載がないことが増えているようです(というか多重検定になるので補正したりが必要になる)。smdはマッチング、たとえばこの場合は年齢でマッチングしたと考えると0.01だから年齢は合わせて比較してるんだな、とか、年齢と性別をマッチングしたらどちらも0.01とかになって調整されているはずです。そうするとp値かsmdを見るとどんな条件の対象を比較したのか、というのがパッと分かることになります。
で、ここちょっと待って!smdとかどうやって計算するの?という問題に行き当たるわけです。そこはRで演算してもらおうというのがこのページの趣旨です(ここまで長かった・・・)。
tableoneというパッケージを使います。
library(tablebone)
data = read.csv("data.csv") # CSVにしたデータを読み込みます
# 次に表示する項目を決めます
vars <- c("項目","項目A","項目B","項目C","項目D","項目E")
# その中で名義変数はどれかを示してあげます
factorVars <- c("項目","項目A","項目E")
# グループ分けに使った項目をstrataに、dataは最初に読み込んだdata.csvを格納した「data]のことです
tableOne <- CreateTableOne(vars = vars, strata = "項目", data = data, factorVars = factorVars)
#出力します
print(tableOne, smd=TRUE)
Stratified by 項目
0 1 p test SMD
n 10 10
項目 = 1 (%) 5 (55.6) 5 ( 55.6) 1.000 <0.001
項目A = 1 (%) 2 (50.0) 1 ( 25.0) 1.000 0.535
項目B (mean (SD)) aaaa (x) AAAA (y) 0.809 0.109
項目C (mean (SD)) bbbb (x1). BBBB (y1) 0.433 0.359
項目D (mean (SD))
項目E = 1 (%).
こんな感じの画面になります。全体もつけるならprint(tableOne,add Overall, smd=TRUE)でいけるはずです。そうするとこの場合は項目があるかないかの群で比較して、smdが十分に調整されていて、項目Aはばらついているかな、項目Bはばらつきが少しあるかな、項目Cはちょっとばらついているかな、項目Dは・・・、項目Eは・・・、と見ていくことができます。ここでマッチングして調整した項目のsmdが大きいようだとマッチングがうまくいっていないのかな?となります。マッチングしていない時はひたすらp値を見ていくことになりますが最終的に欲しい項目の検定でも多重検定の補正が必要となってしまうのでまあまあ面倒です。
この記事が気に入ったらサポートをしてみませんか?