データの読み込み

右下のPackages からRcmdrを選んでチェックボタンをクリックし,Rコマンダーを起動した。その後、メニューでデータ>データのインポート>エクセルファイルから,を選択し,lesson4.xlsxを選んでデータを読み込んだ。データセット名はDatasetのまま変更せず、Rコマンダー側で作成されたRスクリプト方式の命令文を下のRチャンク内にペーストした。このときファイルの階層構造に相当する情報は削除する必要があるため、削除した。

Dataset <- readXL("C:/Users/hayashikazuki/Downloads/lecture42.xlsx", rownames=FALSE, header=TRUE, na="", sheet="lecture42", stringsAsFactors=TRUE)
  Dataset
##      No sex  bl
## 1     1   f 163
## 2     2   m 169
## 3     3   f 154
## 4     4   m 175
## 5     5   m 167
## 6     6   m 182
## 7     7   m 168
## 8     8   m 172
## 9     9   m 178
## 10   10   m 167
## 11   11   m 177
## 12   12   m 165
## 13   13   m 171
## 14   14   m 173
## 15   15   m 167
## 16   16   m 170
## 17   17   f 152
## 18   18   f 156
## 19   19   f 153
## 20   20   m 174
## 21   21   m 170
## 22   22   f 157
## 23   23   m 162
## 24   24   m 180
## 25   25   m 167
## 26   26   f 157
## 27   27   m 176
## 28   28   m 184
## 29   29   m 159
## 30   30   m 171
## 31   31   f 155
## 32   32   f 165
## 33   33   m 159
## 34   34   m 176
## 35   35   f 165
## 36   36   f 162
## 37   37   m 162
## 38   38   f 165
## 39   39   f 167
## 40   40   m 189
## 41   41   m 168
## 42   42   m 160
## 43   43   f 161
## 44   44   m 164
## 45   45   m 170
## 46   46   m 173
## 47   47   f 152
## 48   48   m 175
## 49   49   f 158
## 50   50   m 180
## 51   51   f 155
## 52   52   f 158
## 53   53   f 152
## 54   54   m 168
## 55   55   f 160
## 56   56   f 162
## 57   57   m 168
## 58   58   f 152
## 59   59   m 174
## 60   60   m 178
## 61   61   m 170
## 62   62   m 183
## 63   63   f 158
## 64   64   m 171
## 65   65   f 165
## 66   66   m 173
## 67   67   m 174
## 68   68   f 160
## 69   69   m 171
## 70   70   f 158
## 71   71   m 166
## 72   72   f 165
## 73   73   m 172
## 74   74   m 175
## 75   75   m 165
## 76   76   m 185
## 77   77   m 162
## 78   78   m 173
## 79   79   f 154
## 80   80   m 171
## 81   81   f 160
## 82   82   f 153
## 83   83   f 150
## 84   84   m 171
## 85   85   m 177
## 86   86   f 155
## 87   87   m 173
## 88   88   m 165
## 89   89   f 157
## 90   90   f 160
## 91   91   f 150
## 92   92   f 151
## 93   93   m 170
## 94   94   m 175
## 95   95   m 170
## 96   96   f 148
## 97   97   f 155
## 98   98   f 160
## 99   99   m 180
## 100 100   f 156
## 101 101   f 161
## 102 102   m 175
## 103 103   m 172
## 104 104   m 172
## 105 105   m 167
## 106 106   f 152
## 107 107   f 162
## 108 108   f 161
## 109 109   f 160
## 110 110   f 152
## 111 111   m 168
## 112 112   m 177
## 113 113   m 166
## 114 114   f 155
## 115 115   m 176
## 116 116   m 178
## 117 117   m 160
## 118 118   f 151
## 119 119   m 175
## 120 120   m 175
## 121 121   f 155
## 122 122   m 160
## 123 123   f 154
## 124 124   m 175
## 125 125   m 174
## 126 126   f 163
## 127 127   m 172
## 128 128   f 160
## 129 129   m 165
## 130 130   m 175
## 131 131   m 179
## 132 132   m 170
## 133 133   m 169
## 134 134   f 163
## 135 135   m 174
## 136 136   m 182
## 137 137   f 150
## 138 138   m 177
## 139 139   m 168
## 140 140   f 154
## 141 141   m 186
## 142 142   f 158
## 143 143   m 171
## 144 144   m 169
## 145 145   f 163
## 146 146   m 163
## 147 147   m 168
## 148 148   m 170
## 149 149   f 159
## 150 150   f 167
## 151 151   f 155
## 152 152   m 175
## 153 153   f 157
## 154 154   m 181
## 155 155   f 152
## 156 156   m 178
## 157 157   m 165
## 158 158   f 152
## 159 159   m 176
## 160 160   f 157
## 161 161   f 158
## 162 162   f 158
## 163 163   f 172
## 164 164   m 181
## 165 165   m 169
## 166 166   m 172
## 167 167   m 176
## 168 168   m 165
## 169 169   m 172
## 170 170   m 170
## 171 171   m 172
## 172 172   m 181
## 173 173   m 171
## 174 174   m 182
## 175 175   m 179
## 176 176   f 160
## 177 177   m 168
## 178 178   m 170
## 179 179   f 171
## 180 180   m 165
## 181 181   m 159
## 182 182   f 155
## 183 183   m 173
## 184 184   f 162
## 185 185   m 171
## 186 186   m 180
## 187 187   f 151
## 188 188   f 154
## 189 189   m 165
## 190 190   f 154
## 191 191   m 175
## 192 192   m 165
## 193 193   f 165
## 194 194   f 159
## 195 195   m 180
## 196 196   m 166
## 197 197   f 154
## 198 198   f 165
## 199 199   f 161
## 200 200   m 171
## 201 201   f 165
## 202 202   f 158
## 203 203   m 168
## 204 204   m 184
## 205 205   m 172
## 206 206   m 170
## 207 207   m 182
## 208 208   f 155
## 209 209   m 177
## 210 210   f 161
## 211 211   m 177
## 212 212   f 160
## 213 213   f 151
## 214 214   f 162
## 215 215   m 176
## 216 216   m 181
## 217 217   m 171
## 218 218   m 175
## 219 219   f 157
## 220 220   m 174
## 221 221   f 154
## 222 222   f 165
## 223 223   f 160
## 224 224   m 173
## 225 225   m 182
## 226 226   f 150
## 227 227   m 175
## 228 228   f 165
## 229 229   m 180
## 230 230   m 168
## 231 231   f 168
## 232 232   m 171
## 233 233   m 162
## 234 234   m 185
## 235 235   m 172
## 236 236   f 154
## 237 237   f 155
## 238 238   f 164
## 239 239   f 153
## 240 240   m 173
## 241 241   m 172
## 242 242   f 166
## 243 243   f 153
## 244 244   f 158
## 245 245   m 177
## 246 246   f 161
## 247 247   m 169
## 248 248   f 152
## 249 249   f 157
## 250 250   m 164

母集団についてヒストグラムを作成

 Rコマンダーを使って一番単純なオプション指定で母集団250人分の身長についてヒストグラムを描画した。方法はグラフ>ヒストグラムで、変数はblを選択肢,ほかのオプションは全てデフォルトのままで行った。

with(Dataset, Hist(bl, scale="frequency", breaks="Sturges", col="darkgray"))

男女で層別抽出したヒストグラムを描画

前回同様変数はblを選択し,「層別のプロット」をクリックして,sexを指定した。

with(Dataset, Hist(bl, groups=sex, scale="frequency", breaks="Sturges", col="darkgray"))

ドットプロット

 グラフ>ドットプロットで、変数はblを選択し,層別のプロットでsexを選択した。

with(Dataset, Dotplot(bl, by=sex, bin=FALSE))

箱ひげ図

 グラフ>箱ひげ図の手順で作成した。

Boxplot(bl ~ sex, data=Dataset, id=list(method="y"))

## [1] "40"

第三回で実施した課題をRをつかって解いてみる

ここでは第三回の課題で出題した、「身長データから5,10,30標本の無作為抽出を行ってその平均値を得ることを50回繰り返し、そのヒストグラム」をRを使って作成してみる。

無作為抽出したデータを格納するための「ベクトル」を用意

numeric関数(カッコ内で指定した数の数値を格納する「ベクトル」を作成する)を用いて無作為抽出したデータの平均値を格納するベクトルを3つ作成した。

spl5 <- numeric(50)
spl10 <- numeric(50)
spl30 <- numeric(50)

無作為抽出

sample関数を使用してDatasetのbl列の数値から無作為抽出を指定した回数行い,その値を用いてmean関数で平均値を算出後,spl5, spl10, spl30に代入した。

ここではその操作を50回繰り返すためにfor関数を使っている。下のような書き方をすると右辺にかかれている関数の出力をベクトルspl5, spl10, spl30のi番目に代入するということを1〜50回繰り返すことになる。

for (i in 1:50) spl5[i] <- round(mean (sample (Dataset$bl, 5)), digits =1) 
for (i in 1:50) spl10[i] <- round(mean (sample (Dataset$bl, 10)), digits =1) 
for (i in 1:50) spl30[i] <- round(mean (sample (Dataset$bl, 30)), digits =1) 

ベクトルをデータフレームに変換

ベクトルのままだと後でグラフを描画するときに扱いづらいので、まず個々のベクトルをdata.frame関数を使ってデータフレームと呼ばれる形式に変換した(samples列にはサンプル数を、bl列には個々の身長データが格納される)。その後,作成した4つのデータフレームDF5,DF10,DF30,DFLをrbind関数をつかって行方向で結合して単一データフレームDFにした。途中操作で使用したが後は不要なデータフレーム(DF5,DF10,DF30,DFL)をrf関数をつかって削除した。

DF5 <- data.frame(samples="5", bl=spl5)
DF10 <- data.frame(samples="10", bl=spl10)
DF30 <- data.frame(samples="30", bl=spl30)
DFL <- data.frame(samples="population", bl=Dataset$bl)
DF <- data.frame(rbind(DFL,DF5,DF10,DF30))
rm(DF5,DF10, DF30, DFL)
DF
##        samples    bl
## 1   population 163.0
## 2   population 169.0
## 3   population 154.0
## 4   population 175.0
## 5   population 167.0
## 6   population 182.0
## 7   population 168.0
## 8   population 172.0
## 9   population 178.0
## 10  population 167.0
## 11  population 177.0
## 12  population 165.0
## 13  population 171.0
## 14  population 173.0
## 15  population 167.0
## 16  population 170.0
## 17  population 152.0
## 18  population 156.0
## 19  population 153.0
## 20  population 174.0
## 21  population 170.0
## 22  population 157.0
## 23  population 162.0
## 24  population 180.0
## 25  population 167.0
## 26  population 157.0
## 27  population 176.0
## 28  population 184.0
## 29  population 159.0
## 30  population 171.0
## 31  population 155.0
## 32  population 165.0
## 33  population 159.0
## 34  population 176.0
## 35  population 165.0
## 36  population 162.0
## 37  population 162.0
## 38  population 165.0
## 39  population 167.0
## 40  population 189.0
## 41  population 168.0
## 42  population 160.0
## 43  population 161.0
## 44  population 164.0
## 45  population 170.0
## 46  population 173.0
## 47  population 152.0
## 48  population 175.0
## 49  population 158.0
## 50  population 180.0
## 51  population 155.0
## 52  population 158.0
## 53  population 152.0
## 54  population 168.0
## 55  population 160.0
## 56  population 162.0
## 57  population 168.0
## 58  population 152.0
## 59  population 174.0
## 60  population 178.0
## 61  population 170.0
## 62  population 183.0
## 63  population 158.0
## 64  population 171.0
## 65  population 165.0
## 66  population 173.0
## 67  population 174.0
## 68  population 160.0
## 69  population 171.0
## 70  population 158.0
## 71  population 166.0
## 72  population 165.0
## 73  population 172.0
## 74  population 175.0
## 75  population 165.0
## 76  population 185.0
## 77  population 162.0
## 78  population 173.0
## 79  population 154.0
## 80  population 171.0
## 81  population 160.0
## 82  population 153.0
## 83  population 150.0
## 84  population 171.0
## 85  population 177.0
## 86  population 155.0
## 87  population 173.0
## 88  population 165.0
## 89  population 157.0
## 90  population 160.0
## 91  population 150.0
## 92  population 151.0
## 93  population 170.0
## 94  population 175.0
## 95  population 170.0
## 96  population 148.0
## 97  population 155.0
## 98  population 160.0
## 99  population 180.0
## 100 population 156.0
## 101 population 161.0
## 102 population 175.0
## 103 population 172.0
## 104 population 172.0
## 105 population 167.0
## 106 population 152.0
## 107 population 162.0
## 108 population 161.0
## 109 population 160.0
## 110 population 152.0
## 111 population 168.0
## 112 population 177.0
## 113 population 166.0
## 114 population 155.0
## 115 population 176.0
## 116 population 178.0
## 117 population 160.0
## 118 population 151.0
## 119 population 175.0
## 120 population 175.0
## 121 population 155.0
## 122 population 160.0
## 123 population 154.0
## 124 population 175.0
## 125 population 174.0
## 126 population 163.0
## 127 population 172.0
## 128 population 160.0
## 129 population 165.0
## 130 population 175.0
## 131 population 179.0
## 132 population 170.0
## 133 population 169.0
## 134 population 163.0
## 135 population 174.0
## 136 population 182.0
## 137 population 150.0
## 138 population 177.0
## 139 population 168.0
## 140 population 154.0
## 141 population 186.0
## 142 population 158.0
## 143 population 171.0
## 144 population 169.0
## 145 population 163.0
## 146 population 163.0
## 147 population 168.0
## 148 population 170.0
## 149 population 159.0
## 150 population 167.0
## 151 population 155.0
## 152 population 175.0
## 153 population 157.0
## 154 population 181.0
## 155 population 152.0
## 156 population 178.0
## 157 population 165.0
## 158 population 152.0
## 159 population 176.0
## 160 population 157.0
## 161 population 158.0
## 162 population 158.0
## 163 population 172.0
## 164 population 181.0
## 165 population 169.0
## 166 population 172.0
## 167 population 176.0
## 168 population 165.0
## 169 population 172.0
## 170 population 170.0
## 171 population 172.0
## 172 population 181.0
## 173 population 171.0
## 174 population 182.0
## 175 population 179.0
## 176 population 160.0
## 177 population 168.0
## 178 population 170.0
## 179 population 171.0
## 180 population 165.0
## 181 population 159.0
## 182 population 155.0
## 183 population 173.0
## 184 population 162.0
## 185 population 171.0
## 186 population 180.0
## 187 population 151.0
## 188 population 154.0
## 189 population 165.0
## 190 population 154.0
## 191 population 175.0
## 192 population 165.0
## 193 population 165.0
## 194 population 159.0
## 195 population 180.0
## 196 population 166.0
## 197 population 154.0
## 198 population 165.0
## 199 population 161.0
## 200 population 171.0
## 201 population 165.0
## 202 population 158.0
## 203 population 168.0
## 204 population 184.0
## 205 population 172.0
## 206 population 170.0
## 207 population 182.0
## 208 population 155.0
## 209 population 177.0
## 210 population 161.0
## 211 population 177.0
## 212 population 160.0
## 213 population 151.0
## 214 population 162.0
## 215 population 176.0
## 216 population 181.0
## 217 population 171.0
## 218 population 175.0
## 219 population 157.0
## 220 population 174.0
## 221 population 154.0
## 222 population 165.0
## 223 population 160.0
## 224 population 173.0
## 225 population 182.0
## 226 population 150.0
## 227 population 175.0
## 228 population 165.0
## 229 population 180.0
## 230 population 168.0
## 231 population 168.0
## 232 population 171.0
## 233 population 162.0
## 234 population 185.0
## 235 population 172.0
## 236 population 154.0
## 237 population 155.0
## 238 population 164.0
## 239 population 153.0
## 240 population 173.0
## 241 population 172.0
## 242 population 166.0
## 243 population 153.0
## 244 population 158.0
## 245 population 177.0
## 246 population 161.0
## 247 population 169.0
## 248 population 152.0
## 249 population 157.0
## 250 population 164.0
## 251          5 167.0
## 252          5 166.0
## 253          5 166.4
## 254          5 165.8
## 255          5 171.2
## 256          5 170.4
## 257          5 159.4
## 258          5 176.0
## 259          5 166.2
## 260          5 170.6
## 261          5 162.4
## 262          5 165.6
## 263          5 163.6
## 264          5 168.8
## 265          5 165.4
## 266          5 165.2
## 267          5 168.4
## 268          5 166.2
## 269          5 165.6
## 270          5 166.4
## 271          5 166.0
## 272          5 164.8
## 273          5 169.4
## 274          5 174.8
## 275          5 162.0
## 276          5 166.8
## 277          5 163.0
## 278          5 165.2
## 279          5 163.2
## 280          5 170.6
## 281          5 166.6
## 282          5 171.0
## 283          5 168.0
## 284          5 166.8
## 285          5 158.6
## 286          5 163.0
## 287          5 163.4
## 288          5 169.2
## 289          5 164.4
## 290          5 165.4
## 291          5 166.8
## 292          5 163.4
## 293          5 170.6
## 294          5 168.8
## 295          5 171.4
## 296          5 164.6
## 297          5 160.6
## 298          5 175.4
## 299          5 153.6
## 300          5 166.0
## 301         10 163.3
## 302         10 161.8
## 303         10 168.7
## 304         10 168.0
## 305         10 167.5
## 306         10 170.0
## 307         10 165.6
## 308         10 169.3
## 309         10 166.9
## 310         10 164.6
## 311         10 163.3
## 312         10 166.7
## 313         10 170.6
## 314         10 163.9
## 315         10 162.3
## 316         10 166.4
## 317         10 167.2
## 318         10 168.1
## 319         10 160.8
## 320         10 169.6
## 321         10 162.7
## 322         10 169.6
## 323         10 168.2
## 324         10 165.3
## 325         10 165.7
## 326         10 160.9
## 327         10 166.3
## 328         10 167.6
## 329         10 164.9
## 330         10 166.8
## 331         10 163.4
## 332         10 167.2
## 333         10 170.6
## 334         10 165.7
## 335         10 166.0
## 336         10 169.2
## 337         10 162.9
## 338         10 168.6
## 339         10 165.7
## 340         10 160.4
## 341         10 161.0
## 342         10 160.5
## 343         10 170.1
## 344         10 163.9
## 345         10 163.0
## 346         10 162.0
## 347         10 167.8
## 348         10 166.2
## 349         10 169.2
## 350         10 169.2
## 351         30 166.8
## 352         30 163.5
## 353         30 162.9
## 354         30 165.3
## 355         30 165.4
## 356         30 165.1
## 357         30 166.9
## 358         30 168.3
## 359         30 166.6
## 360         30 166.6
## 361         30 164.7
## 362         30 164.0
## 363         30 164.5
## 364         30 166.6
## 365         30 166.3
## 366         30 167.7
## 367         30 165.6
## 368         30 165.4
## 369         30 164.7
## 370         30 168.3
## 371         30 166.7
## 372         30 165.1
## 373         30 166.4
## 374         30 164.2
## 375         30 165.9
## 376         30 164.0
## 377         30 164.1
## 378         30 165.5
## 379         30 166.9
## 380         30 164.7
## 381         30 164.2
## 382         30 166.4
## 383         30 166.5
## 384         30 167.4
## 385         30 167.1
## 386         30 166.0
## 387         30 166.3
## 388         30 168.9
## 389         30 165.4
## 390         30 166.0
## 391         30 162.4
## 392         30 167.3
## 393         30 166.0
## 394         30 166.5
## 395         30 165.1
## 396         30 165.8
## 397         30 165.7
## 398         30 167.7
## 399         30 163.5
## 400         30 169.3

ヒストグラムの描画

R Commanderを使ってメニュー操作でヒストグラムを描画後,Rチャンクの内容をコピペした。

with(DF, Hist(bl, groups=samples, scale = "frequency", xlab="Body Length (cm)",breaks="Sturges", col = "darkgray"))

同じ内容をRコマンダーを使わずに書くと,以下の様になる。 Rコマンダーの関数を使用した場合との違いは、書くヒストグラムのタイトル部分で現れてくる。

Hist(DF$bl, groups=DF$samples, scale = "frequency", xlab="Body Length (cm)", breaks="Sturges", col = "darkgray")

グラフ描画パッケージggplot2を使用した場合

一番お勧めなのがこの方法ですが,ggplot2というパッケージの使い方に別途慣れないといけない。興味がある人は自分でググって以下の書き方でどこをどのように指定しているのか読んで比較してみて下さい。 https://stats.biopapyrus.jp/r/ggplot/

library("ggplot2")
ggplot(DF, aes(x=bl, fill=samples))+
  geom_histogram() +
  labs(x="Body length (cm)", y="Frequency") +
  ylim(0,25) +
  facet_wrap(~samples, ncol=2)+
  theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

任意の階級幅でヒストグラムを描画(各自作業課題)

Hist関数のオプションを変更すると、階級幅を”Sturges”の式によって自動設定するのではなく、手動で最小・最大・階級幅を設定することができる。上の「ヒストグラムの描画」で書いたヒストグラムについて,各自で設定方法を調べて140〜200cmの範囲で2cmの階級幅でヒストグラムを描画した。

Hist(DF$bl, groups=DF$samples, scale = "frequency", xlab="Body Length (cm)", breaks=seq(140,190,by=2), col = "darkgray")

参考資料

  “こんてんつこうかい”.Hatena Blog. https://contents-open.hatenablog.com/entry/2021/06/12/222910. 参照日(2022.11/1)

課題の提出方法

ここまでの内容に関して感想や質問があったら

授業の時は、命令をする際に#をつけて作業していたのですが、自分のパソコンでは#をつけると命令が実行されませんでした。ggplot2はインストールされ、チェックもついています。このままでも作業に支障はありませんでしょうか。