付録 A. 練習問題の答えと解説

A.1 1章: テストの点数がクラスの平均点よりも低くても上位に含まれる?

答えと解説を表示

40人のクラスで平均点が48点のとき、点数が45点であっても上位20人の中に含まれることがある。

平均値はデータの真ん中を表わす数値ではないよ。
library(ggplot2)

# クラス中の40人のテストの点数(点数順)
x <- c(16, 24, 27, 31, 32, 32, 33, 33, 36, 36, 37, 38, 39, 40, 40, 
42, 43, 43, 43, 44, 44, 45, 46, 46, 48, 50, 50, 52, 52, 53, 54, 
65, 62, 66, 70, 75, 73, 82, 88, 89)
x
 [1] 16 24 27 31 32 32 33 33 36 36 37 38 39 40 40 42 43 43 43 44 44 45 46 46 48
[26] 50 50 52 52 53 54 65 62 66 70 75 73 82 88 89
mean(x) # クラスの平均点
[1] 47.975
median(x) # クラスの点数の中央値
[1] 44
p <- 
  tibble::tibble(x = x) |> 
  ggplot(aes(x)) +
  geom_density() +
  xlim(0, 100) +
  labs(title = "40名のテスト点数の分布")

p +
  geom_vline(xintercept = median(x), color = course_colors[1]) +
  geom_vline(xintercept = mean(x), color = course_colors[2]) +
  geom_label(aes(mean(x), 0.01), 
             label = "平均値", 
             color = course_colors[2],
             show.legend = FALSE) +
  geom_label(aes(median(x), 0.02), 
             label = "中央値", 
             color = course_colors[1],
             show.legend = FALSE)

x[1:20]
 [1] 16 24 27 31 32 32 33 33 36 36 37 38 39 40 40 42 43 43 43 44
x[21:40]
 [1] 44 45 46 46 48 50 50 52 52 53 54 65 62 66 70 75 73 82 88 89

A.2 3章: 動物データの代表値を計算しよう

ここで紹介する関数は一部の例です。

コード
df_zoo <- 
  readr::read_csv("data-raw/tokushima_zoo_animals22.csv", 
                col_types = "ccdd_")

summary(df_zoo)
    taxon               name           body_length_cm     weight_kg     
 Length:22          Length:22          Min.   :  1.20   Min.   :  0.90  
 Class :character   Class :character   1st Qu.: 63.62   1st Qu.:  5.85  
 Mode  :character   Mode  :character   Median : 82.50   Median : 12.50  
                                       Mean   :102.87   Mean   : 65.81  
                                       3rd Qu.:133.00   3rd Qu.: 69.50  
                                       Max.   :250.00   Max.   :410.00  
                                       NA's   :4        NA's   :2       
コード
# 中央値
quantile(df_zoo$body_length_cm, na.rm = TRUE)[3]
 50% 
82.5 
skimr::skim(df_zoo)
psych::describe(df_zoo)
summarytools::descr(df_zoo)