トップ 履歴 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

R.intro2015

*disclaimer
613945

 リサーチデザインと言語統計処理(2015年度前期木曜5時限目)



R による統計処理入門・統計分析例(担当:杉浦)

  1. 7月 9日 R による統計処理入門(R の基本的な使い方の説明)
  2. 7月16日 R による統計分析例(分散分析と具体的な分析事例の紹介)前半
  3. 7月23日 R による統計分析例(分散分析と具体的な分析事例の紹介)後半




1. Rによる統計処理入門

WikiPedia

R言語(アールげんご)は、オープンソースでフリーソフトウェアの
統計解析向けプログラミング言語、及びその開発実行環境である。

 1.1 はじめに

インストール

 

起動と終了

 起動:「スタート」から選ぶ
 終了:「メニュー」の「ファイル」から「終了」を選ぶか、コマンド q()
    (作業スペースの保存 => パソコン室での作業の場合、自分のUSBメモリーに)

コンソールでコマンド

 「R Console」という窓
 プロンプト > の右にコマンド(命令)を書く

コマンドを組み合わせて、ひとまとめにしてプログラムにする(「関数」とよぶ)

データを「処理」する

 統計処理
 テキスト処理

処理する前に、データを整形する
 データは、文字か数字
 数字のデータを整形する
  エクセルなどで、プログラムの「想定している」形式に合わせる。
 文字のデータを整形する
  コーパス・データのフォーマット
   CHILDESCHATフォーマットなど

習得しないといけないこと

 自分に必要なコマンド・プログラムは何か
 それに合わせたデータの整形


 1.2 作業ディレクトリー、作業スペース(.RData)、そして、履歴(.Rhistory


作業ディレクトリー


  • パソコンの「ファイルシステム」の中のどこで作業をするか
  • どのフォルダー内にあるデータを処理するか
  • 処理するデータのあるフォルダーへ移動しておく
  • メニュー「ファイル」=>「ディレクトリーの変更
    • USBメモリー内に授業用のフォルダーを作っておくとよい
  • 移動して、今どこにいるか、確認するには getwd() と打ってみる。
> getwd()
[1] "C:/Users/sugiura/Documents"

作業スペース(.RData)(「ワークスペース」と呼ばれることもある)


  • Rで作業した「内容」(読み込んだり処理して「変数」に入れたデータ等)のすべて
  • 作業ディレクトリー内に自動的に保存される。
  • 終了するときに「作業スペースを保存しますか?」と聞かれる。「はい」と答えると、今いる作業ディレクトリー内に保存される。
  • ファイル名は「.RData」(拡張子を表示しないようにしていると、表面上は「見えない」)
  • 作業履歴も自動的に同じ場所に.Rhistoryというファイル名で保存される。

作業を再開するとき


  • 作業ディレクトリーへ移動する。
    • メニューの「ファイル」=>「ディレクトリーの変更」
  • ls()してみて、以前の作業スペースが復元されていることを確認する。
  • 自動的に復元されていない場合は、メニューの「ファイル」から明示的に「作業スペースの読み込み」をする。
  • 「履歴」も同様。矢印キー「↑」を押してみて、以前打ち込んだコマンドが出てくるか確認する。
    • 出てこない場合は、メニューから読み込む。

 1.3 Rでのデータの取り扱い


変数と代入


  • 変数という「入れ物」に「値」を代入する
  • 変数は、半角英数文字でつける(数字で始めてはいけない。大文字小文字は区別する。)
  • 変数への「代入」は、<- 記号であらわす。
seiseki <- 50
  • 「seiseki」という変数に数字「50」が入った。
namae <- "Hanako"
  • 「namae」という変数に文字「Hanako」が入った。(文字はダブルクオートの記号「"」で囲む)

> abc <- 3 # abcという変数を作り、3を代入。

> abc # abcの中身を表示させる。
[1] 3 # 3が入っている。

> abc <- 300 # abcの値に300が上書きされる。

> abc # abcの中身を表示。
[1] 300 #中身が300に変わった。

> efj <- 6

> jke <- 2987

> ls() # これまでに作った変数一覧を表示。
[1] "abc" "efj" "jke"

> rm(jke) #変数jkeを削除。

> ls() [1] "abc" "efj"



  • 文字と数字を区別する

> namae <- "sugiura" # namaeにはsugiuraという文字列が入る。

> class(abc) # class(変数名)で、変数に入っているものが数字ならnumericを、

# 文字ならcharacterを返す。

[1] "numeric"

> class(namae)

[1] "character"



配列(Rでは「ベクトル」と呼ぶ)



  • 配列=入れ物が複数ならんでいる変数

<- c( , , , ) で入れる


> kazu <- c(2,4,6,8)


> kazu # kazuの中身を表示

[1] 2 4 6 8

> names <- c("I","you","he") # 配列の中身は文字列でもいい。


> names [1] "I" "you" "he"


> length(names) #length(配列名)で、該当配列の要素数を返す。

[1] 3 # 配列namesの要素は、 "I" "you" "he"の3つ。


  • 変数や配列に何があるか調べる

ls()

  • 要素がいくつ入っているか調べる

length(配列名)





 1.4 Rで扱うデータの種類


ベクトル

  • プログラミングで言う「配列」
  • 「変数名」をつける
  • 要素が入っている
  • 変数名 <- c(要素をカンマで区切って並べる)
    • 例:国語と数学の得点
    • kokugo <- c(83, 45, 73, 50, 22, 67, 77, 89, 66, 90, 67, 76, 67, 89, 90, 95, 71, 60)
    • suugaku <- c(90, 55, 90, 43, 33, 55, 48, 98, 56, 75, 77, 80, 87, 76, 56, 81, 45, 70)
  • 要素は前から順番に位置が決まっている
  • 変数名をタイプすると内容が表示される
> kokugo
[1] 83 45 73 50 22 67 77 89 66 90 67 76 67 89 90 95 71 60

データフレーム

  • プログラミングで言う「多次元配列」
  • 行が項目
  • 列が測定値
  • 複数のベクトルを合わせてデータフレームを作ることもできる
  • 変数名 <- data.frame(ベクトル名をカンマで区切って並べる)
    • 例:期末試験の得点(国語と数学)
    • kimatsu <- data.frame(kokugo, suugaku)
  • 変数名をタイプすると内容が表示される
>kimatsu
   kokugo suugaku
1      83      90
2      45      55
3      73      90
4      50      43
5      22      33
6      67      55
7      77      48
8      89      98
9      66      56
10     90      75
11     67      77
12     76      80
13     67      87
14     89      76
15     90      56
16     95      81
17     71      45
18     60      70


  • 個々のベクトル(データの縦のカラム)を指定するときは $ を使う
    • 国語の得点 kimatsu$kokugo
    • 数学の得点 kimatsu$suugaku

  • データを取り出すこともできる
A <- classes$ClassA
B <- classes$ClassB


 1.5 データを見てみる

  • いくつ要素があるか見る
   length(x) 

  • 平均を出す
   mean(x) 

  • レンジ(範囲)を出す
   range(x) 

  • 標準偏差を出す
   sd(x) 

  • データの全体像を見る
   summary(x) 

グラフにしてみる


資料のちらばりを表す

  • 散布図 plot()
    • これだとバラバラなので、並べ替えてみる sort()
    • plot(sort())

    • 二次元 plot(x,y)




  • ヒストグラム hist()

  • stem()
    • stem(データ, 2) とオプション2を付けること
    • 縦棒の左側が10(以上)のけた、右側が1のけた

  • 箱ヒゲ図 boxplot()
    • ヒゲの長さは箱の1.5倍

図を順にかさねていくわざ



 1.6 事前にデータを作っておく

  • 表計算ソフトなどで、テキストファイル(タブ区切りやCSV)で保存しておく。
  • 一件一行
  • 一番上の行は、変数名
  • 欠損値は NA と記入しておく
  • ファイルの読み込み
    • データフレーム名 <- read.table(choose.files())
    • これでウインドウが開くのでどのファイルを読み込むか指定する

エクセルから「コピペ」することもできる

データフレーム名 <- read.table("clipboard", header=T)

  • カラムの見出し(ヘッダー)がない場合は、header=Tのオプションはつけない

  • コピペのタイミングに注意 ↓

  1. Rのコンソールで、読み込むコマンドを書いておくのだけれど、「Enter」キーを押さないでおく
    • 命令は書いてあるけど、まだ実行されていない状態
  1. エクセルの方で、該当するデータのエリアを選択して、コピーする(Ctrl+C)
    • これで「クリップボード」にデータが記憶された状態になる
  1. Rのコンソールに戻って、「Enter」キーを押す
    • これで命令が実行され、「クリップボード」内のデータが読み込まれる

 1.7 いろいろな統計処理


t検定(平均の差の検定)

   t.test(x,y) 
  • 「対応なし」がデフォルト
  • 「対応あり」は、オプションをつける。
   t.test(x,y, paired=T) 
   「平均は等しい」(帰無仮説)
   その起きる確率がどのくらいあるか?
   5%未満、、、平均が等しいとはえない(対立仮説) 

正規性の検定(Shapiro-Wilk 検定)

(「正規分布している」が帰無仮説。つまり p>0.05なら帰無仮説を捨てない)

   shapiro.test(x) 

等分散の検定(F test)


Wilcoxonの順位和検定(正規性のないデータ)

   wilcox.test(x,y) 

相関係数

   cor(x,y) 

相関係数の検定

   cor.test(x,y) 


χ自乗検定(χ二乗検定)

   chisq.test() 

   二次元のデータの場合、行列(matrix)でデータを読み込んでおく
      sample.data <- matrix(c(976, 89918, 916, 77713), ncol=2, nrow=2) 

G^2検定(対数尤度比検定)

  • 事前に青木先生のページより関数をsourceで読み込んでおく。
   source("http://aoki2.si.gunma-u.ac.jp/R/src/G2.R", encoding="euc-jp") 
   G2() 

回帰式をプロットする

   abline(lm(y~x)) 

 1.8 Rを使った処理の実例紹介


「学部の違う二つのクラスで同じ試験を実施した。学部によって成績に差があるか?

  1. エクセルにあるデータをタブ区切りのテキストで保存。(テキスト(タブ区切り)(*.txt))
  2. データを読み込む。
    • データフレーム名 <- read.table(choose.files(), header = T)
classes <- read.table(choose.files(), header = T)
  1. t検定
    • 差がないと仮定する(差がないことがあり得るか)
    • クラスごと別々の受講生のデータ(対応のないデータ独立したサンプル))
t.test(classes$ClassA, classes$ClassB)
      • "Welch Two Sample t-test" (等分散でなくてもよい)

「ある教材で学習したら成績が上がるか?:事前テストより事後テストの方が良い成績か?」


  1. エクセルにあるデータをタブ区切りのテキストで保存。(テキスト(タブ区切り))
  2. データを読み込む。
    • データフレーム名 <- read.table(choose.files(), header = T)
prepost <- read.table(choose.files(), header = T)
  1. t検定
    • 差がないと想定する(差がないことがあり得るか)
      • それぞれの学生ごとにデータがある(対応のあるデータ):t.test()
t.test(prepost$pre, prepost$post, paired=T)

 1.9 用意されたデータを使った演習(自分でやってみる)


サンプルデータ

  1. 学部別クラスデータtwo-classes.xlsx(451)
  2. 事前・事後テスト pre-post.xlsx(413)


7月9日の課題の提出:

  • 来週7月16日木曜日授業の初めに
  • A4用紙に印刷して提出
  • 1枚か2枚程度
  • 二種類のt検定を行い報告する。
    • なにを、どうして、どのようにしたか。
    • その結果はどうだったか。
    • それから何が考察できるか。
  • レポートを書くまでは、同級生や先輩に相談しても良いですが、レポートを書くときは自分一人で書いてください。



t検定のまとめ

t.test

2. R による統計分析例

R.intro2015b