重回帰分析のモデルチェック(線形性の確認)の勉強メモ

library(tidyverse)
library(gtsummary)
#wordpressでの出力でgtsummaryがうまく動かなかったため、モデルを並べる自作関数を作成
compare_models <- function(models, labels){
  procamod <- function(amodel, alabel){
    broom::tidy(amodel, conf.int = TRUE) |> 
    mutate(across(c(estimate, conf.low, conf.high), ~{
      scales::number(., accuracy = 0.01)
    })) |> 
    #mutate(p.value = scales::number(p.value, 0.0001)) |> 
    mutate(res = str_glue("{estimate}({conf.low} - {conf.high})")) |> 
    select(term, res) |> 
    rename(!!rlang::sym(alabel) := res)
  }

  map2(models, labels, procamod) |> 
    reduce(~full_join(.x,.y,by="term"))
}
目次

はじめに

仕事関係で、重回帰分析を産業保健職や人事部の興味がある人に教えたいと思い立ち(本業は実は!?産業医です)、改めて重回帰分析をちゃんとやる方法を勉強したなかで、モデルチェックの方法について実はそんなに深く理解できていないということに気づき、勉強したことをまとめてみました。この記事、かなり勉強ノートとかメモに近い形なのをご留意ください。

全体像としては、

  • 仮定の羅列と教科書の説明の抜粋
  • Rでデータとモデルを作成する
  • carパッケージのDiagnosticPlotを調べた内容の記載
  • 調べた内容から、ggplot2でcar::residualPlots, car::avPlots, car::crPlotsの3つのプロットを再現する関数を作成
  • 作成したデータに対してcarパッケージのDiagnostic Plotと自作関数を適応して、モデルを間違えて指定した場合に各プロットがどのようなふるまいをするかを見てみる。

という流れです。

謝辞

この記事は、私がTwiterにつぶやいた疑問に多くの方がお返事いただいたことから、作成しようと考えました。コメントをいただいた全ての方に深い感謝を申し上げます。

参考図書

この記事を書くにあたり、次の教科書を参考にしています。

高橋 将宜(2022)『統計的因果推論の理論と実装―潜在的結果変数と欠測データ―』共立出版

Fox, John, Sanford Weisberg. An R Companion to Applied Regression. Third edition. Los Angeles: SAGE, 2019

Jeffrey M Wooldridge. Introductory EconomEtrIcs A modern Approach 7e

Fox, John, Regression Diagnostics An Introduction Second Edition.

とくに、高橋先生の本、入手していたのに、最初の部分を読み飛ばしていて、反省しています。ものすごく分かりやすい本なので、R Userでなくてもオススメです。

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

この記事を書いた人

コメント

コメントする

目次