統計データ解析I

第1講 練習問題 解答例

Published

May 2, 2025

基本的な操作

問題

以下の計算を行う R Script/Quarto を作成し保存しなさい.

  • 123\times456-789
  • (2^{2^5}+1)\div641
  • \sin^2(\pi/3)+\cos^2(\pi/3)
  • 適当な数学関数を用いた計算

解答例

新規ファイルを作成し,以下をエディタで実行する. Quarto の場合は chunk を作成して,その中に記述する必要がある.

123 * 456 - 789
[1] 55299
(2^2^5 + 1) / 641         # 羃乗の優先順位に注意
[1] 6700417
sin(pi/3)^2 + cos(pi/3)^2
[1] 1
log(exp(2)+1)             # 適当な数学関数の例.好きな計算を実行する
[1] 2.126928
Tip

コンソールで実行した場合は History タブから実行したコマンドを選択し, ファイルにコピーすることができる.

パッケージの操作

問題

パッケージを導入して,含まれている関数について調べなさい.

  • e1071 をインストールする
  • 関数 kurtosis() (尖度) を調べる
  • 関数 kurtosis() を呼び出す

パッケージ群の導入を行いなさい.

  • tidyverse をインストールする

解答例

パッケージのインストールはRStudioのUIを用いることを推奨する.

  • Package タブから e1071/tidyverse をインストール

コンソールからインストールする場合は以下を実行すれば良い.

  • install.packages("e1071")
  • install.packages("tidyverse")

利用するには関数 library() を用いて読み込む.

library(e1071) # パッケージの読み込み
help(kurtosis) # 関数を調べる
kurtosis(Nile) # 関数を用いる
[1] -0.3585392
Note

datasets::Nile は起動時に自動的に読み込まれるデータセットの一つ. help(Nile) でデータの概要を知ることができる. また plot(Nile) で簡単な視覚化ができる.

データフレームの操作

問題

以下に指定する操作を行いなさい.

  • 次の表に対応するデータフレームを作成しなさい

    name math phys chem bio
    Alice 90 25 65 70
    Bob 80 50 100 50
    Carol 70 75 70 30
    Dave 60 100 40 80
    Eve 50 80 75 100
  • データフレームの要素の選択を試みなさい

解答例

各項目が同じ長さのベクトルを並べて作成すればよい.

library(tidyverse) # 関数 tibble() を利用するためにパッケージを読み込む
foo <- tibble( # 変数名は自由に決めてよい
    name = c("Alice", "Bob", "Carol", "Dave", "Eve"),
    math = c(90, 80, 70, 60, 50),
    phys = c(25, 50, 75,100, 80),
    chem = c(65,100, 70, 40, 75),
    bio  = c(70, 50, 30, 80,100))
print(foo) # 中身を表示
# A tibble: 5 × 5
  name   math  phys  chem   bio
  <chr> <dbl> <dbl> <dbl> <dbl>
1 Alice    90    25    65    70
2 Bob      80    50   100    50
3 Carol    70    75    70    30
4 Dave     60   100    40    80
5 Eve      50    80    75   100

例えば以下のような操作を行うことができる.

foo[2,3]      # 特定の要素を数値で参照する
# A tibble: 1 × 1
   phys
  <dbl>
1    50
foo[2,"phys"] # 列を名前で参照する (上記と同じ結果)
# A tibble: 1 × 1
   phys
  <dbl>
1    50
foo[3,]       # 特定の行を表示 (データフレームになる)
# A tibble: 1 × 5
  name   math  phys  chem   bio
  <chr> <dbl> <dbl> <dbl> <dbl>
1 Carol    70    75    70    30
foo["bio"]    # 特定の列を表示 (データフレームになる)
# A tibble: 5 × 1
    bio
  <dbl>
1    70
2    50
3    30
4    80
5   100
foo[,"bio"]   # 上記と同じ結果
# A tibble: 5 × 1
    bio
  <dbl>
1    70
2    50
3    30
4    80
5   100
foo[["bio"]]  # ベクトルとして取り出す (リストとしての処理)
[1]  70  50  30  80 100
foo$bio       # 上記と同じ結果
[1]  70  50  30  80 100
Warning

上記のように同じ要素を選択してもデータ構造が異なる場合があるので注意する.