Rによるやさしい統計学 第1章、第2章

Rによるやさしい統計学

Rによるやさしい統計学

2012年の4月にはAmazonで買っていたみたいなんですが、社内で読書会をやる流れになり、約3年経ってようやくまともに読み始めました。あまりにブログ書いてないので、Evernoteのメモをそのまま貼り付けることにしましたw

前提

  • Mac 10.9.5
  • R 3.1.2

1章

1.3 Rを導入しよう

1.4 Rをさわってみよう

  • Rコンソール
    • 割り算はint同士?でも小数点以下まで計算する
    • tab補完使えた
    • log(2, base=10)
      • 名前付き引数が使える
    • Ctrl+a, Ctrl+eが使える

1.6 Rの使い方のコツ

Rcmdrを起動するまでの軌跡
  • 事前状態はXQuartzをインストールしてない状態。
  • RcmdrパッケージでRcmdrだけインストールして試したら以下のエラーとなった。
> library(Rcmdr)
 要求されたパッケージ splines をロード中です 
 エラー:  パッケージ ‘RcmdrMisc’ が ‘Rcmdr’ によって要求されましたが、見つけられませんでした 
  • [Rパッケージインストーラ]で[依存パッケージも含める]にチェックを入れて再実行したら以下のエラーとなった。
> library(Rcmdr)
 要求されたパッケージ RcmdrMisc をロード中です 
 要求されたパッケージ car をロード中です 
 要求されたパッケージ sandwich をロード中です 
Error :  .onLoad は loadNamespace()'tcltk' に対する)の中で失敗しました、詳細は: 
  call: fun(libname, pkgname) 
  error: X11 library is missing: install XQuartz from xquartz.macosforge.org 
 エラー:  ‘Rcmdr’ に対するパッケージもしくは名前空間のロードが失敗しました 
  • XQuartzが必要なことが判明しインストールした。
  • XQuartz.appを起動してから試すと今度は以下のエラーとなった。
> library(Rcmdr)
Error :  .onAttach は attachNamespace()'Rcmdr' に対する)の中で失敗しました、詳細は: 
  call: structure(.External(.C_dotTclObjv, objv), class = "tclObj") 
  error: [tcl] invalid command name "image".
 
 エラー:  'Rcmdr' に対するパッケージもしくは名前空間のロードが失敗しました 

2章

2.2 本書で用いるデータの説明

> 指導法データ <- read.csv("shidouhou.csv", fileEncoding="CP932")
> 指導法データ
   SID   name sex math stat psych_test stat_test1 stat_test2 method
1    1   大村  男 嫌い 好き         13          6         10      C
2    2   本多  男 嫌い 好き         14         10         13      B
3    3   川崎  男 好き 好き          7          6          8      B
4    4   多村  男 好き 好き         12         10         15      A
5    5   松中  男 嫌い 嫌い         10          5          8      B
6    6 小久保  男 嫌い 嫌い          6          3          6      C
7    7   柴原  男 嫌い 嫌い          8          5          9      A
8    8   井手  男 嫌い 嫌い         15          9         10      D
9    9   田上  男 嫌い 嫌い          4          3          7      D
10  10   松田  男 好き 嫌い         14          3          3      D
11  11   高谷  女 好き 好き          9         11         18      A
12  12   杉内  女 嫌い 好き          6          6         14      A
13  13   和田  女 好き 好き         10         11         18      A
14  14   新垣  女 嫌い 嫌い         12          9         11      C
15  15   大隣  女 嫌い 好き          5          7         12      B
16  16   水田  女 好き 嫌い         12          5          5      D
17  17   斉藤  女 嫌い 嫌い          8          8          7      C
18  18   柳瀬  女 嫌い 嫌い          8          7         12      C
19  19   佐藤  女 嫌い 嫌い         12          7          7      B
20  20   馬原  女 嫌い 嫌い         15          9          7      D

2.4 データの視覚的表現

> 指導法 <- t(指導法データ["method"])
> 指導法
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
method "C"  "B"  "B"  "A"  "B"  "C"  "A"  "D"  "D"  "D"   "A"   "A"   "A"   "C"   "B"   "D"   "C"   "C"   "B"   "D"  
> table(指導法)
指導法
A B C D 
5 5 5 5 
  • hist関数はフォントファミリーを指定しないと日本語が文字化けする。
    • hist(心理学テスト, family="HiraKakuProN-W3")
    • http://www.karada-good.net/analyticsr/r-58/
    • hist関数のヘルプにfamily引数の記述はなかったが[...]の所に[graphical parameters]のリンクがあって、[Set or Query Graphical Parameters]の中にfamilyに関する記述があった

2.10 標準化

  • z得点(z score)というか標準化はscale関数で出来る。
    • t(scale(指導法データ["stat_test1"]))
    • scale関数は列を処理する。書籍では行を処理する例であったため、最初scale(t(指導法データ["stat_test1"]))にしたら全部NaNになったw
    • http://rtutorialseries.blogspot.jp/2012/03/r-tutorial-series-centering-variables.html
    • http://www.statmethods.net/management/functions.html
      • ここでscale関数がz得点に使えるのが分かった。関数が端的にまとまっていてよさげ
    • t(scale(指導法データ["stat_test1"],center = FALSE, scale = FALSE))にすると当然だが値が全く変化しない
      • falseは参照エラーになる。TRUE/FALSEが最初から用意されているグローバル定数らしい
> t(scale(指導法データ["stat_test1"]))
                 [,1]     [,2]       [,3]     [,4]       [,5]      [,6]       [,7]      [,8]      [,9]     [,10]    [,11]      [,12]
stat_test1 -0.3883216 1.164965 -0.3883216 1.164965 -0.7766432 -1.553286 -0.7766432 0.7766432 -1.553286 -1.553286 1.553286 -0.3883216
              [,13]     [,14] [,15]      [,16]     [,17] [,18] [,19]     [,20]
stat_test1 1.553286 0.7766432     0 -0.7766432 0.3883216     0     0 0.7766432
attr(,"scaled:center")
stat_test1 
         7 
attr(,"scaled:scale")
stat_test1 
  2.575185 
> t(scale(指導法データ["stat_test1"],center = FALSE, scale = FALSE))
           [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
stat_test1    6   10    6   10    5    3    5    9    3     3    11     6    11     9     7     5     8     7     7     9
> scale(t(指導法データ["stat_test1"]))
           [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
stat_test1  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
attr(,"scaled:center")
 [1]  6 10  6 10  5  3  5  9  3  3 11  6 11  9  7  5  8  7  7  9
attr(,"scaled:scale")
 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0