第1講 - さまざまな多変量解析とR言語の使い方
(Press ?
for help, n
and p
for next and previous slide)
村田 昇
body | brain | |
---|---|---|
Mountain beaver | 1.35 | 8.1 |
Cow | 465.00 | 423.0 |
Grey wolf | 36.33 | 119.5 |
Goat | 27.66 | 115.0 |
Guinea pig | 1.04 | 5.5 |
Dipliodocus | 11700.00 | 50.0 |
Asian elephant | 2547.00 | 4603.0 |
Donkey | 187.10 | 419.0 |
Horse | 521.00 | 655.0 |
Potar monkey | 10.00 | 115.0 |
Cat | 3.30 | 25.6 |
Giraffe | 529.00 | 680.0 |
Gorilla | 207.00 | 406.0 |
Human | 62.00 | 1320.0 |
Figure 1: 体重と脳の重さの関係
Figure 2: 体重と脳の重さの関係 (対数変換)
Figure 3: 回帰式とその信頼区間
VINT | LPRICE2 | WRAIN | DEGREES | HRAIN | TIME_SV |
---|---|---|---|---|---|
1952 | -0.99868 | 600 | 17.1167 | 160 | 31 |
1953 | -0.45440 | 690 | 16.7333 | 80 | 30 |
1954 | NA | 430 | 15.3833 | 180 | 29 |
1955 | -0.80796 | 502 | 17.1500 | 130 | 28 |
1956 | NA | 440 | 15.6500 | 140 | 27 |
1957 | -1.50926 | 420 | 16.1333 | 110 | 26 |
1958 | -1.71655 | 582 | 16.4167 | 187 | 25 |
1959 | -0.41800 | 485 | 17.4833 | 187 | 24 |
1960 | -1.97491 | 763 | 16.4167 | 290 | 23 |
1961 | 0.00000 | 830 | 17.3333 | 38 | 22 |
1962 | -1.10572 | 697 | 16.3000 | 52 | 21 |
1963 | -1.78098 | 608 | 15.7167 | 155 | 20 |
1964 | -1.18435 | 402 | 17.2667 | 96 | 19 |
1965 | -2.24194 | 602 | 15.3667 | 267 | 18 |
Figure 4: 価格と気候の散布図
Characteristic | Beta | 95% CI | p-value |
---|---|---|---|
WRAIN | 0.0012 | 0.0002, 0.0022 | 0.024 |
DEGREES | 0.6164 | 0.4190, 0.8138 | <0.001 |
HRAIN | -0.0039 | -0.0055, -0.0022 | <0.001 |
TIME_SV | 0.0238 | 0.0090, 0.0387 | 0.003 |
Abbreviation: CI = Confidence Interval | |||
R² = 0.828; Adjusted R² = 0.796; Statistic = 26.4; p-value = <0.001 |
Figure 5: 重回帰による予測値と実際の価格
県名 | 地方名 | 昼夜人口比 | 年少人口比 | 老年人口比 | 人口増減率 | 粗出生率 | 粗死亡率 | 婚姻率 | 離婚率 | 高校数/人 | 高校数/面積 |
---|---|---|---|---|---|---|---|---|---|---|---|
北海道 | 北海道 | 100.0 | 11.7 | 26.0 | -0.47 | 7.09 | 10.63 | 4.86 | 2.12 | 192.6 | 1.34 |
青森県 | 東北 | 100.0 | 12.1 | 27.0 | -0.95 | 6.79 | 12.81 | 4.33 | 1.78 | 194.3 | 2.63 |
岩手県 | 東北 | 99.7 | 12.4 | 27.9 | -0.84 | 7.12 | 12.33 | 4.32 | 1.52 | 195.1 | 2.19 |
宮城県 | 東北 | 100.2 | 13.0 | 22.9 | -0.09 | 8.05 | 9.51 | 5.30 | 1.70 | 146.3 | 3.18 |
秋田県 | 東北 | 99.9 | 11.1 | 30.7 | -1.12 | 6.16 | 13.98 | 3.78 | 1.41 | 186.7 | 1.85 |
山形県 | 東北 | 99.8 | 12.6 | 28.3 | -0.78 | 7.13 | 12.81 | 4.24 | 1.46 | 178.0 | 2.24 |
福島県 | 東北 | 99.6 | 12.9 | 26.1 | -1.41 | 7.02 | 11.94 | 4.73 | 1.64 | 171.3 | 2.65 |
茨城県 | 関東 | 97.2 | 13.2 | 23.8 | -0.51 | 7.78 | 10.20 | 4.92 | 1.79 | 138.3 | 3.09 |
栃木県 | 関東 | 99.1 | 13.2 | 23.2 | -0.40 | 8.02 | 10.43 | 5.13 | 1.85 | 136.7 | 2.68 |
群馬県 | 関東 | 99.9 | 13.4 | 24.9 | -0.45 | 7.49 | 10.63 | 4.64 | 1.77 | 135.4 | 3.56 |
埼玉県 | 関東 | 88.6 | 13.0 | 22.0 | 0.07 | 7.90 | 8.20 | 5.10 | 1.86 | 96.8 | 7.81 |
千葉県 | 関東 | 89.5 | 12.8 | 23.2 | -0.31 | 7.89 | 8.59 | 5.19 | 1.86 | 110.4 | 5.24 |
東京都 | 関東 | 118.4 | 11.3 | 21.3 | 0.26 | 8.12 | 8.25 | 6.75 | 1.91 | 144.6 | 31.03 |
神奈川県 | 関東 | 91.2 | 13.0 | 21.5 | 0.10 | 8.32 | 7.94 | 5.68 | 1.85 | 98.4 | 16.09 |
新潟県 | 中部 | 100.0 | 12.5 | 27.2 | -0.64 | 7.45 | 11.97 | 4.35 | 1.37 | 148.9 | 2.35 |
Figure 6: 都道府県別の人口動態
Figure 7: 都道府県別の教育・労働環境
Figure 8: 都道府県別の貯蓄・余暇
Figure 9: 都道府県別の生活環境の主成分分析
V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 | V9 | class |
---|---|---|---|---|---|---|---|---|---|
5 | 1 | 1 | 1 | 2 | 1 | 3 | 1 | 1 | benign |
5 | 4 | 4 | 5 | 7 | 10 | 3 | 2 | 1 | benign |
3 | 1 | 1 | 1 | 2 | 2 | 3 | 1 | 1 | benign |
6 | 8 | 8 | 1 | 3 | 4 | 3 | 7 | 1 | benign |
4 | 1 | 1 | 3 | 2 | 1 | 3 | 1 | 1 | benign |
8 | 10 | 10 | 8 | 7 | 10 | 9 | 7 | 1 | malignant |
1 | 1 | 1 | 1 | 2 | 10 | 3 | 1 | 1 | benign |
2 | 1 | 2 | 1 | 2 | 1 | 3 | 1 | 1 | benign |
2 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 5 | benign |
4 | 2 | 1 | 1 | 2 | 1 | 2 | 1 | 1 | benign |
1 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | benign |
2 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 1 | benign |
5 | 3 | 3 | 3 | 2 | 3 | 4 | 4 | 1 | malignant |
1 | 1 | 1 | 1 | 2 | 3 | 3 | 1 | 1 | benign |
8 | 7 | 5 | 10 | 7 | 9 | 5 | 5 | 4 | malignant |
Figure 10: 乳癌患者(良性・悪性)の生研検査の散布図
Figure 11: 生研検査の主成分分析
Figure 12: 生研検査による乳癌患者の判別分析
県名 | 梅 | 鮭 | 昆布 | 鰹 | 明太子 | 鱈子 | ツナ | その他 |
---|---|---|---|---|---|---|---|---|
北海道 | 13.86 | 27.94 | 5.58 | 5.26 | 9.26 | 15.06 | 11.61 | 11.39 |
青森県 | 14.93 | 30.79 | 7.01 | 2.43 | 10.36 | 11.58 | 11.58 | 11.28 |
岩手県 | 17.91 | 23.13 | 5.22 | 3.35 | 17.91 | 10.07 | 10.44 | 11.94 |
宮城県 | 15.16 | 29.50 | 10.00 | 1.66 | 14.83 | 8.83 | 12.83 | 7.16 |
秋田県 | 10.63 | 31.38 | 5.31 | 3.19 | 14.89 | 13.29 | 10.63 | 10.63 |
山形県 | 16.58 | 20.27 | 8.29 | 1.38 | 18.89 | 10.13 | 12.90 | 11.52 |
福島県 | 12.37 | 21.99 | 8.93 | 3.43 | 16.49 | 9.62 | 19.24 | 7.90 |
茨城県 | 15.42 | 26.49 | 7.98 | 2.54 | 18.33 | 11.79 | 11.79 | 5.62 |
栃木県 | 16.61 | 27.04 | 10.70 | 1.97 | 16.90 | 9.29 | 12.67 | 4.78 |
群馬県 | 14.24 | 22.53 | 6.21 | 1.81 | 20.20 | 15.28 | 13.73 | 5.95 |
埼玉県 | 13.91 | 27.17 | 8.03 | 3.57 | 19.36 | 10.17 | 13.58 | 4.18 |
千葉県 | 14.96 | 28.49 | 7.10 | 3.67 | 19.07 | 10.53 | 10.97 | 5.17 |
東京都 | 14.07 | 28.03 | 8.28 | 3.28 | 17.80 | 11.74 | 11.20 | 5.56 |
神奈川県 | 15.05 | 28.06 | 9.61 | 3.47 | 16.10 | 10.67 | 11.49 | 5.51 |
新潟県 | 21.06 | 23.03 | 3.37 | 1.12 | 19.66 | 15.16 | 7.02 | 9.55 |
Figure 13: 都道府県別の好きなおむすびの具の集計結果
Figure 14: アンケート結果にもとづく県のクラスタ分析
Monthly Airline Passenger Numbers | ||||||||||||
1949-1960 | ||||||||||||
Year | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | 7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1949 | 112 | 118 | 132 | 129 | 121 | 135 | 148 | 148 | 136 | 119 | 104 | 118 |
1950 | 115 | 126 | 141 | 135 | 125 | 149 | 170 | 170 | 158 | 133 | 114 | 140 |
1951 | 145 | 150 | 178 | 163 | 172 | 178 | 199 | 199 | 184 | 162 | 146 | 166 |
1952 | 171 | 180 | 193 | 181 | 183 | 218 | 230 | 242 | 209 | 191 | 172 | 194 |
1953 | 196 | 196 | 236 | 235 | 229 | 243 | 264 | 272 | 237 | 211 | 180 | 201 |
1954 | 204 | 188 | 235 | 227 | 234 | 264 | 302 | 293 | 259 | 229 | 203 | 229 |
1955 | 242 | 233 | 267 | 269 | 270 | 315 | 364 | 347 | 312 | 274 | 237 | 278 |
1956 | 284 | 277 | 317 | 313 | 318 | 374 | 413 | 405 | 355 | 306 | 271 | 306 |
1957 | 315 | 301 | 356 | 348 | 355 | 422 | 465 | 467 | 404 | 347 | 305 | 336 |
1958 | 340 | 318 | 362 | 348 | 363 | 435 | 491 | 505 | 404 | 359 | 310 | 337 |
1959 | 360 | 342 | 406 | 396 | 420 | 472 | 548 | 559 | 463 | 407 | 362 | 405 |
1960 | 417 | 391 | 419 | 461 | 472 | 535 | 622 | 606 | 508 | 461 | 390 | 432 |
Figure 15: 旅客量の変遷
Figure 16: 階差時系列の自己相関分析
Figure 17: SARIMAモデルによる旅客量の予測
例えば以下のような計算を行うことができる
#' 一般的な数式を入力すれば計算機として使える #' "#" 以降はコメントとして無視される 1 + 2 + 3 + 4 # 空白は無視される sin(pi/3) / cos(pi/3) # tan(pi/3) になるはず
コンソール上で終了を指示する以下のコマンドを入力すれば R を終了させることができる
#' R の終了には q() または quit() を用いる q()
help()
や ?
などを利用終了時にコンソールに以下のメッセージ, または同様の内容のダイアログボックスが表示される場合がある
> q()
Save workspace image? [y/n/c]:
y
を入力: セーブする (yesの略)n
を入力: セーブしない (noの略)c
を入力: Rの終了をキャンセルする (cancelの略)+
ボタン(または“File/New File”)を開く+C
(緑)ボタン(または“Code/Insert Chunk”)をクリック歯車
ボタンで実行時の出力先を設定する
▶
(緑色) : チャンク内を実行▽
(灰色): そのチャンク以前を実行
歯車
ボタンで出力時の挙動を設定する
単一のファイルにするにはYAMLヘッダーで以下を宣言する
--- format: html: self-contained: true ---
加減乗除 | +, -, *, / |
羃乗 | ^ または ** |
三角関数 | sin(), cos(), tan() |
逆三角関数 | asin(), acos(), atan() |
指数関数 | exp() |
対数関数 | log(), log10(), log2() |
双曲線関数 | sinh(), cosh(), tanh() |
平方根 | sqrt() |
絶対値 | abs() |
コンソール上での計算例
#' 与えられた式の計算をコンソール上で実行する #' 1 x 2 + 3^2 の計算 1 * 2 + 3^2 #' sin(2π) の計算 sin(2*pi) #' √2 + |-0.6| の計算 sqrt(2) + abs(-0.6)
[1] 11 [1] -2.449294e-16 [1] 2.014214
関数の呼び出し方 (関数名を f
とする)
f(arg1 = value1, arg2 = value2) # 擬似コード #' arg1, arg2 は引数の名前,value1, value2 は引数に渡す値を表す f(value1, value2) # 上と同値.順序に注意
help(関数名)
または ?関数名
で
ヘルプが表示される正弦関数の計算
#' 正弦関数(引数が1つ)の計算例 sin(x = pi/2) sin(pi/2) # 引数名は省略でき,前の行とこの行は同じ結果になる
対数関数の計算
#' 対数関数(引数が2つ)の計算例 #' 以下は擬似コード.a, b を適当な数値に置き換えて実行しなさい log(a, b) # 底を b とする a の対数 log(x = a, base = b) #上と同値 log(base = b, x = a) #上と同値(引数名があれば順序は自由に変えられる) log(b, a) # = log(x=b,base=a) (引数名がなければ規定の順序で解釈される) log(a) # 自然対数 =log(a,base=exp(1))
help()
(使い方や例の表示)example()
(例を実際に実行してくれる)help.search()
(キーワード検索)ヘルプの使い方
#' 関数 log() に関するヘルプの例 help(log) # Helpタブに結果は表示される ?log # 上と同値 example(log) # ヘルプ内の例を実行 help.search("log") # "log"に関連する項目は? ??"log" # 上と同値
型の名称 | 役割 | 例 |
---|---|---|
numeric |
(広義の)実数を表す | 1, pi, NaN |
complex |
複素数を表す | 1i, 3-4i |
character |
文字列を表す | "foo", "Hello World!" |
logical |
論理値(真偽)を表す | TRUE, FALSE, 3<4, NA |
代入操作の例
#' 数値を変数 foo に代入する (foo <- 3) # foo <- 3; print(foo) と等価 #' 変数 foo を用いて計算し,結果を bar に代入する bar <- sin(2/3*pi) + cos(foo * pi/4) # 計算結果は表示されない #' 変数 bar の内容を表示する print(bar)
[1] 3 [1] 0.1589186
c, q, t, C, D, F, I, T
には注意が必要
関数の定義には関数 function()
を利用する
#' 関数 function() の使い方 (擬似コード) 関数名 <- function(引数){ # 計算ブロックの開始 ## このブロック内に必要な手続きを記述する.複数行に渡って構わない return(返値) # 計算結果を明示的に示す } # ブロックの終了
縦と横の長さを与えて長方形の面積を計算
#' 縦の長さ a, 横の長さ b (既定値は1) の長方形の面積 foo <- function(a, b = 1){ out <- a * b return(out) # 計算結果を外に返却 } #' 実行例 foo(2, 3) # foo(a = 2, b = 3) と同義 foo(2) # foo(a = 2, b = 1) と同義
[1] 6 [1] 2
無名関数 (anonymous function) の作り方
#' 変数や関数を定義して計算する方法 (x <- 1:10/10) foo <- function(x) sin(x)/x # 式の計算結果を返却(returnを省略可) foo(x) #' 変数や関数を定義せずに計算する方法 (function(x) sin(x)/x)(1:10/10) (\(x) sin(x)/x)(1:10/10) # R 4.1 以降の短縮表現
[1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 [1] 0.9983342 0.9933467 0.9850674 0.9735459 0.9588511 0.9410708 0.9203110 0.8966951 [9] 0.8703632 0.8414710 [1] 0.9983342 0.9933467 0.9850674 0.9735459 0.9588511 0.9410708 0.9203110 0.8966951 [9] 0.8703632 0.8414710 [1] 0.9983342 0.9933467 0.9850674 0.9735459 0.9588511 0.9410708 0.9203110 0.8966951 [9] 0.8703632 0.8414710
練習
- R の関数 integrate() についてヘルプを調べなさい.
以下の関数の定積分を求めなさい.
\begin{align} f(x)&=\frac{1}{1+x^{2}},\quad x\in[0,1]\\ g(x)&=\exp\left( -\frac{x^{2}}{2} \right),\quad x\in\mathbb{R} \end{align}
関数 integrate() を利用して定積分を計算
#' 関数 1/(1+x^2) を区間 [0,1] で積分 (関数オブジェクトを渡す書き方) f <- function(x) 1/(1+x^2) # 関数を定義 integrate(f, 0, 1) # pi/4 #' 関数 e^(-x^2/2) を実軸全体で積分(Gauss積分) (関数を定義しない書き方) integrate(\(x)exp(-x^2/2), -Inf, Inf) # sqrt(2*pi)
0.7853982 with absolute error < 8.7e-15 2.506628 with absolute error < 0.00023