Chapter 9 記述統計表の作成

分析に入る前に、使用する変数の代表値や散布度を示すのは論文では必須です。

ここでは、summarytoolsパッケージを用いた方法を紹介します。まずはパッケージを準備しておきましょう。

install.packages("summarytools")
library(summarytools)

なお、このChapterでは表の作成方法を紹介します。 表をWordに貼り付ける方法については、Chapter (Word)を確認してください。

9.1 数値の記述統計表の作成

数値の記述統計表を作成するには、summarytoolsdescr()を用います。 早速savingで使ってみましょう。

saving %>% 
  descr()
## Descriptive Statistics  
## saving  
## N: 100  
## 
##                        age    black        cons     educ        inc        sav     size
## ----------------- -------- -------- ----------- -------- ---------- ---------- --------
##              Mean    38.77     0.07     8358.73    11.58    9941.24    1582.51     4.35
##           Std.Dev     7.40     0.26     5729.53     3.44    5584.00    3284.90     1.49
##               Min    26.00     0.00   -13055.00     2.00     750.00   -5577.00     2.00
##                Q1    33.00     0.00     5726.00     9.00    6508.00     189.00     3.00
##            Median    38.50     0.00     7561.50    12.00    8776.50     982.00     4.00
##                Q3    44.00     0.00     9987.00    13.00   11965.00    1838.50     5.00
##               Max    54.00     1.00    30280.00    20.00   32080.00   25405.00    10.00
##               MAD     8.15     0.00     3092.70     2.97    3463.35    1235.75     1.48
##               IQR    11.00     0.00     4131.50     4.00    5393.00    1640.25     2.00
##                CV     0.19     3.66        0.69     0.30       0.56       2.08     0.34
##          Skewness     0.24     3.32        0.91     0.05       1.98       4.15     0.84
##       SE.Skewness     0.24     0.24        0.24     0.24       0.24       0.24     0.24
##          Kurtosis    -0.96     9.11        4.31     0.05       4.96      26.31     1.57
##           N.Valid   100.00   100.00      100.00   100.00     100.00     100.00   100.00
##         Pct.Valid   100.00   100.00      100.00   100.00     100.00     100.00   100.00

簡単に記述統計表が作成できました。しかし、この表は情報量が多く見づらいので、オプションを加えて編集していきましょう。

  • statsオプションで表示する値を選択
    • ここでは平均mean・標準偏差sd・最小値min・最大値max・観測値n.validを表示させます
  • transposeオプションをTRUEにして行列を入れ替える
  • headingオプションをFALSEにしてヘッダーを消す
saving %>% 
  descr(stats = c("mean", "sd", "min", "max", "n.valid"), transpose = TRUE, headings = FALSE)
## 
##                  Mean   Std.Dev         Min        Max   N.Valid
## ----------- --------- --------- ----------- ---------- ---------
##         age     38.77      7.40       26.00      54.00    100.00
##       black      0.07      0.26        0.00       1.00    100.00
##        cons   8358.73   5729.53   -13055.00   30280.00    100.00
##        educ     11.58      3.44        2.00      20.00    100.00
##         inc   9941.24   5584.00      750.00   32080.00    100.00
##         sav   1582.51   3284.90    -5577.00   25405.00    100.00
##        size      4.35      1.49        2.00      10.00    100.00

9.2 カテゴリ変数の記述統計表の作成

カテゴリ変数の記述統計については、以下の2つの方法が考えられます。

  • ダミー変数を作成し、前節で説明したdescr()をそのまま用いる
    • 黒人ダミーblackがそのように処理されています
  • summarytoolsfreq()を用いて度数分布表を作成する

ここでは後者の方法を説明します。

例として、Chapter (DataHandling)で説明した年齢のカテゴリ変数age_categoryを作成し、オブジェクトとして保存しておきます。

age_category <-
  saving %>%
    mutate(age_category = case_when(age < 30 ~ "20s",
                                    age >= 30 & age < 40 ~ "30s",
                                    age >= 40 & age < 50 ~ "40s",
                                    age >= 50 ~ "50s"
                                    )
          ) %>%
    select(age_category)

作成した年齢のカテゴリ変数age_categoryfreq()に入れます。

age_category %>%
  freq()
## Frequencies  
## age_category$age_category  
## Type: Character  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##         20s     12     12.00          12.00     12.00          12.00
##         30s     44     44.00          56.00     44.00          56.00
##         40s     31     31.00          87.00     31.00          87.00
##         50s     13     13.00         100.00     13.00         100.00
##        <NA>      0                               0.00         100.00
##       Total    100    100.00         100.00    100.00         100.00

度数分布表が作成できました。しかし、情報量が多いので、不要な情報をオプションで消しておきます。

age_category %>%
  freq(report.nas = FALSE, totals = FALSE, cumul = FALSE, headings = FALSE)
## 
##             Freq       %
## --------- ------ -------
##       20s     12   12.00
##       30s     44   44.00
##       40s     31   31.00
##       50s     13   13.00

シンプルな表ができました。オプションの説明は以下のとおりです。

  • report.nas = FALSE: 欠損値(NA)を表示しないようにする
  • totals = FALSE: 合計を表示しないようにする
  • cumul = FALSE: 累積値を表示しないようにする
  • headings = FALSE: ヘッダーを表示しないようにする