-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path09-missing.Rmd
41 lines (27 loc) · 3.05 KB
/
09-missing.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 欠損値 {#missing}
データセット中には、欠損値や外れ値などの不備があることがあります。この章では、欠損値の扱いについて解説します。
欠損値がある場合は、欠損値があるデータを除いて解析する方法と、値を代入して解析する方法があります。
欠損値があるデータを除いて解析する場合、サンプルサイズが小さくなってしまうことと、せっかくあるデータを活用することができないと言う欠点があります。
例えば、以下のようなデータがあったとします。
```{r echo=FALSE}
df <- read.table(text = "PatientID, Height, Weight, Gender
1,150,42, M
2,NA, 46, F
3,162, 82, M
4,164, NA, M
5,158, 56, ", header = TRUE, colClasses=c("factor", "integer", "integer", "factor"), sep=",")
```
```{r echo=FALSE}
library(kableExtra)
kbl(df, booktabs = T) %>%
kable_styling(latex_options = c("striped", "hold_position"))
```
5人の身長、体重、性別です。5人分のデータがあるにも関わらず、PatientID が 2、4、5の3つのデータが一部欠損しているため、2人分しか使うことができません。
ロジスティック回帰の場合には、もっと多くの変数を使うことが多いですが、一つ欠損しているだけで他の変数が使えないのではもったいないです。
値を代入する方法には、多重代入法 (Multiple imputation, MI) や full information maximum likelihood (FIML) などがあります。
## 多重代入法
多重代入法 (Multiple Imputation, MI) とは、欠損値を補完する代表的な方法の一つです。
一部のデータが欠損しているデータセットに対して、存在しているデータからあるいるデータを無作為に代入する方法を単一代入と言います。この単一代入を複数回繰り返すことが多重代入になります。もし10回補完したら、データセットのサイズは10倍になります。代入した部分について平均値を計算し、元のデータセットと同じサイズに戻します。
欠損値については、代入補完するのが良いのか、という疑問を持たれる方も多いと思います。この点に関しては、多重代入法の提唱者の一人である @rubin1996multiple は、欠損値に対して簡単かつ信頼性のある方法だと述べています。
多重代入法を用いている例を一つ紹介しましょう。@abe2020social は、オープンアクセスの PLoS One に掲載されている論文で、島根県におけるフレイルと説明因子のロジスティック回帰を行う際に、データの欠損値を10回代入する多重代入を行いました。そのデータも論文のページからダウンロードすることができます。
多重代入法を実行する際には、何回代入するべきか?という問題があります。これについては @graham2007many は、 γ 値に応じて、20回から100回以上を提唱しています。