MENU

R を使った多重代入法で欠損値を補完した後に Cox の Wald 検定のカイ二乗値を統合する方法

多重代入法で欠損値を補完した後に Cox 回帰の Wald 検定を統合する方法

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

↑期間・数量限定で無料プレゼント中!

目次

多重代入法

多重代入法とは、欠損値を、取得されている変数から推測して、いくつかの値で補完して、いくつかのデータセットを作成し、解析したのち、結果を統合する方法

詳しくは、こちらも参照のこと

Cox 回帰の Wald 検定の統合

Cox 回帰の 3 値以上カテゴリを有するカテゴリカルデータのパラメータの検定には、Wald 検定という、カイ二乗値を用いた検定が使われる

この検定の統合方法を紹介する

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

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

サンプルスクリプト

以下のスクリプトの流れを紹介すると、以下のようになる

  1. データを読み込む
  2. 多重代入する
  3. Cox 回帰を行う
  4. Wald のカイ二乗値を取り出す
  5. Wald のカイ二乗値を統合して結果を得る

実際のスクリプトは以下のとおり

読み込んだデータセット名、cph 関数内の変数名、説明変数の数の分だけ anova.values という結果格納オブジェクトを増やして、スクリプトも加筆すると、同じように計算できる

# load sample data データ読み込み
load("C:/Users/touke/OneDrive/R_Datasets/lung_rev.RData")
df <- lung_rev
summary(df)
# imputation 多重代入
library(mice)
df_imputed <- mice(df, seed=0)
df_imputed
# Initialize a list to store the results 結果格納オブジェクトの初期化
anova.values1 <- list()
anova.values2 <- list()
# Cox model using cph in rms; rms パッケージの cph 関数を使った Cox 回帰を実施
# Loop through numbers 1 to 5; 代入データセット 1 から 5 をループ処理
library(rms)
for (i in 1:5) {
# Complete the data with imputation number i
df_imp <- complete(df_imputed, i)
# Fit the Cox proportional hazards model
cph_imp <- with(df_imp, cph(Surv(time, status01) ~ ph.ecog012 + meal.cal))
# Perform ANOVA and store the result in the list
anova_result1 <- anova(cph_imp)[1]
anova_result2 <- anova(cph_imp)[2]
anova.values1[[i]] <- anova_result1
anova.values2[[i]] <- anova_result2
}
# Combine the ANOVA results into a single vector; Wald 検定の結果を結合
anova_values1 <- unlist(anova.values1)
anova_values2 <- unlist(anova.values2)
# Display the combined ANOVA results; Wald 検定の結果を表示
anova_values1
anova_values2
# Pool chi-squares カイ二乗値の統合
library(miceadds)
micombine.chisquare(anova_values1, df=2)
micombine.chisquare(anova_values2, df=1)

結合したカイ二乗値は、以下のとおりになる

統合した結果は、以下のとおり

説明変数 1 番目の ph.ecog012 は、統計学的に有意である

2 番目の meal.cal は統計学的有意ではなかった

まとめ

R において、mice で多重代入したのち、Cox 回帰の Wald 検定を統合したいときのスクリプトを紹介した

rms パッケージの cph 関数と、miceadds パッケージの micobine.chisquare 関数を使うと実行できる

途中、for loop を使って、多重代入セットを効率よく処理する必要がある

何らか参考になれば幸い

参考サイト

https://bookdown.org/mwheymans/bookmi/pooling-methods-for-categorical-variables.html

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

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

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

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

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次