3.1 Logistic regression

本章では回帰分析の中でも2値のデータ(質的データ)を目的変数にとるようなモデルの一つ,ロジスティック回帰モデル(Logistic regression)について紹介していく.これまでは目的変数として量的変数をとることを仮定してきたたが,本章でこれが拡張されることになる.

ロジスティック回帰モデルの実行は後で説明するようにglm関数で実行することができ,特別にパッケージをインストールする必要はない.

3.1.1 パッケージの準備

ここではmclustパッケージに含まれているwdbcというデータセットを利用する. あらかじめinstall.packages("mclust")を実行してパッケージをインストールしておこう.

install.packages("mclust")

3.1.2 データの準備

以下で,mclustの読み込み,wdbcをロードしよう. なお,ここではwdbcについては2-12列のみを利用する.

library(mclust)
data(wdbc)
df <- wdbc[,2:12]

次にdfの先頭5行だけを表示し,データ型も確認しておこう.

head(df)
##   Diagnosis Radius_mean Texture_mean Perimeter_mean Area_mean
## 1         M       17.99        10.38         122.80    1001.0
## 2         M       20.57        17.77         132.90    1326.0
## 3         M       19.69        21.25         130.00    1203.0
## 4         M       11.42        20.38          77.58     386.1
## 5         M       20.29        14.34         135.10    1297.0
## 6         M       12.45        15.70          82.57     477.1
##   Smoothness_mean Compactness_mean Concavity_mean
## 1         0.11840          0.27760         0.3001
## 2         0.08474          0.07864         0.0869
## 3         0.10960          0.15990         0.1974
## 4         0.14250          0.28390         0.2414
## 5         0.10030          0.13280         0.1980
## 6         0.12780          0.17000         0.1578
##   Nconcave_mean Symmetry_mean Fractaldim_mean
## 1       0.14710        0.2419         0.07871
## 2       0.07017        0.1812         0.05667
## 3       0.12790        0.2069         0.05999
## 4       0.10520        0.2597         0.09744
## 5       0.10430        0.1809         0.05883
## 6       0.08089        0.2087         0.07613
str(df)
## 'data.frame':    569 obs. of  11 variables:
##  $ Diagnosis       : Factor w/ 2 levels "B","M": 2 2 2 2 2 2 2 2 2 2 ...
##  $ Radius_mean     : num  18 20.6 19.7 11.4 20.3 ...
##  $ Texture_mean    : num  10.4 17.8 21.2 20.4 14.3 ...
##  $ Perimeter_mean  : num  122.8 132.9 130 77.6 135.1 ...
##  $ Area_mean       : num  1001 1326 1203 386 1297 ...
##  $ Smoothness_mean : num  0.1184 0.0847 0.1096 0.1425 0.1003 ...
##  $ Compactness_mean: num  0.2776 0.0786 0.1599 0.2839 0.1328 ...
##  $ Concavity_mean  : num  0.3001 0.0869 0.1974 0.2414 0.198 ...
##  $ Nconcave_mean   : num  0.1471 0.0702 0.1279 0.1052 0.1043 ...
##  $ Symmetry_mean   : num  0.242 0.181 0.207 0.26 0.181 ...
##  $ Fractaldim_mean : num  0.0787 0.0567 0.06 0.0974 0.0588 ...

ここで使う主な変数を説明しておく.このデータセットは乳がんに関するデータである.

Description The data set provides data for 569 patients on 30 features of the cell nuclei obtained from a digitized image of a fine needle aspirate (FNA) of a breast mass. For each patient the cancer was diagnosed as malignant or benign.

ここでは変数としては以下の3つを考える.

  • Diagnosis: 腫瘍が良性か悪性かを示す変数.良性であればB,悪性であればMとなっている.
  • Radius_mean: 腫瘍の直径の平均値
  • Smoothness_mean: 腫瘍の滑らかさの平均値

まず予めDiagnosisの値をM=1, B=0と変換しておこう(Rでは文字列型でもモデルの実行ができる場合があるが,ここでは分かりやすさのためあらかじめ変換しておく).

df <- wdbc[,2:12] %>% 
  mutate(
    Diagnosis = ifelse(Diagnosis == "M", 1, 0)
  )