Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

外国語教育研究におけるRを用いた統計処理入門

668 views

Published on

FLEAT VII ワークショップ「外国語教育研究におけるRを用いた統計処理入門」で使用するスライドです。

Published in: Education
  • ⇒ www.HelpWriting.net ⇐ is a good website if you’re looking to get your essay written for you. You can also request things like research papers or dissertations. It’s really convenient and helpful.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

外国語教育研究におけるRを用いた統計処理入門

  1. 1. 外国語教育研究における を用いた統計処理入門
  2. 2. 川口 勇作 愛知学院大学 教養部 ykawa@dpc.agu.ac.jp FLEAT VII ワークショップ@早稲田大学 2019/8/6
  3. 3. 自己紹介 • 川口 勇作 (KAWAGUCHI Yusaku) –所属: 愛知学院大学 教養部 • 教養科目の英語授業などを担当しています –専門: 外国語教育学 • コンピュータを用いた英語教育・学習 –Nagoya.R 主催 –R歴:約7年
  4. 4. この講習について • 目的 –Rを用いた、外国語教育研究における統計処理の手法を 習得すること • 内容 –R の(必要最小限の)操作方法の導入 –外国語教育研究においてよく用いられる分析方法の実 習
  5. 5. この講習で扱うもの・扱わないもの ○ 扱うもの • 最低限のRの仕様・操作 • 記述統計量の算出方法 • よく用いられる各種検定・分析の 実行方法と算出方法、結果の見方 – t 検定 – 分散分析 – 効果量の算出 – 相関分析 – 回帰分析 ❌ 扱わないもの • 細かいRの仕様・操作 • よく用いられる各種検定・分析の 詳細な説明 • 高度な統計分析 – ベイズ統計、一般化線形混合効果モ デル、構造方程式モデリング、項目 反応理論、などなど • 文字列処理・コーパス分析 • データハンドリング・管理
  6. 6. 導入編 • Rの基本操作 • 変数・関数 • ベクトルと行列 • データの読み込み • パッケージのインストール・読み込み
  7. 7. とは • 統計処理のためのプログラミング言語で、無償+ オープンソースのソフトウェア • 無償の追加機能(パッケージ)をインストールするこ とで、外国語教育研究で用いられる多くの統計処理 が可能
  8. 8. スクリプト編集画面 データ確認画面 コンソール コードを選択して F5キーを押すと コンソールで実行されます
  9. 9. Windows ユーザーの方へ • ユーザー名(ユーザーフォルダ名)に、2バイト文字 (漢字・ひらがな・カタカナ)が含まれていないか確認 –後々不具合が発生するおそれがある • 対策 –ユーザー名を英数字のみに変更する –R使用時専用の、名前が英数字のみのユーザーを新規作 成する
  10. 10. RStudio • Rのための統合開発環境(IDE) • Rがより使いやすくなります(詳細は割愛) • 特別な事情がない限りはぜひインストールを • https://www.rstudio.com/products/rstud io/download/
  11. 11. スクリプト編集画面 データ確認画面 コンソール 変数一覧 履歴 ファイル一覧 作図スペース パッケージ ヘルプ コードを選択して Shift + Enterを押すと コンソールで実行されます
  12. 12. の基本操作
  13. 13. 以下 > から始まる式を コンソールに 入力してください > は入力不要です #から始まる部分はコメント行なので、 入力不要です
  14. 14. R version 3.0.1 (2013-05-16) -- "Good Sport" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: i386-w64-mingw32/i386 (32-bit) R は、自由なソフトウェアであり、「完全に無保証」です。 一定の条件に従えば、自由にこれを再配布することができます。 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 R は多くの貢献者による共同プロジェクトです。 詳しくは 'contributors()' と入力してください。 また、R や R のパッケージを出版物で引用する際の形式については 'citation()' と入力してください。 'demo()' と入力すればデモをみることができます。 'help()' とすればオンラインヘルプが出ます。 'help.start()' で HTML ブラウザによるヘルプがみられます。 'q()' と入力すれば R を終了します。 >| ← ここから入力 入力している部分は赤く表示されます
  15. 15. 命令の入力方法 • 命令を入力して、 Enter を押す • 四則演算をしてみましょう > 3+5 > 10-3 > 2*3 > 100/20 8 7 6 5
  16. 16. 便利な機能 • 履歴機能 –矢印キーの上下(↑↓)を押すと、今まで入力した命令を 遡って呼び出すことができる • 補完機能 –関数や変数、パッケージ名(後述)の一部を入力してTab キーを押すと、一番それっぽいものを提案してくれる
  17. 17. R基本操作 まとめ • 命令を打ち込んでEnter、それだけ • 過去に入力したものは、履歴機能で呼び出すと楽 • 入力の途中でTabを押すと楽ができる(かも)
  18. 18. 変数を使う
  19. 19. 変数とは • 1つ以上のデータをまとめて入れておく「箱」のよう なもの • 変数に数値を入れることを「代入」という • 統計処理を行う際には、複数のデータをまとめて扱 うことが多いため、変数を用いてデータをまとめる ことが重要
  20. 20. 変数に データを 代入する • 変数の名前を書き、- と > で矢印を作る • 右辺には、変数に入れたいデータを記入する > # hakoという名の変数に 5 という数字を代入する > hako <- 5 > # hakoという名の変数の中身を確認 > hako [1] 5
  21. 21. 変数の名前 • どのような名前でもOK –2バイト文字も使用できるが、変換が面倒なので使わな い • 後で見返したときに、どんなデータが入っているか わかるような名前をつける • 既存の変数にデータを代入すると、 新しいデータで上書きされる > hako <- 5 > hako <- 10 > hako [1] 10
  22. 22. 変数に データを 代入する 1. 変数の名前を ”hako” とする 2. c関数で、値を1つにまとめる – このまとまりをベクトルと呼ぶ 3. まとめた値を ”hako” という変数に代入する <- は矢印を表現 4. 代入したら中身を確認する > hako <- c(1, 2, 3, 4, 5) > hako
  23. 23. 入力中に「+」が出たら • 入力途中に Enter キーを押すと、待機状態を示す 「+」が出る –そのまま入力を続けても問題ない –気になる人は、 ボタン、もしくは Escキーで入力を キャンセル > hako <- c( +
  24. 24. 関数を使う
  25. 25. 関数とは • 指定した値(引数)に対して、何らかの処理をして結 果を出すしくみ –引数は、関数名の後ろの()の中に入る –英語の文法に例えると、関数は他動詞、引数は目的語 –引数(目的語)を複数とる関数もある • 統計分析では必ず関数を使うため、使い方に慣れて おく必要がある
  26. 26. 平方根を算出 • sqrt という関数を使用 ( sqrt = square root ) > sqrt(2) 1.414214 > sqrt(144) 12 > sqrt(104976) 324
  27. 27. 平方根を一気に > hako <- c(1, 2, 3, 4, 5) > sqrt(hako) [1] 1.000000 1.414214 1.732051 2.000000 [5] 2.236068
  28. 28. 変数を使うとこんなに楽 使った場合 > sqrt(hako) 使わない場合 > sqrt(1) > sqrt(2) > sqrt(3) > sqrt(4) > sqrt(5)
  29. 29. 変数と関数 まとめ • 変数を使って、複数のデータをまとめて扱う • 関数で、変数の中の値を一気に処理 • 統計分析を行う際には、変数でデータをまとめて、統 計分析用の関数で処理
  30. 30. ベクトルと行列
  31. 31. ベクトルとは • 数値が一列に並べられたもの –全員の勉強時間 –全員のテスト得点 –全員の覚えている単語の数
  32. 32. 行列とは • ベクトルを縦横に並べたもの –全員の勉強時間とテストの得点 –全員の勉強時間と覚えている単語の数
  33. 33. 1 2 3 4 5 6 7 8 9
  34. 34. 1 2 3 4 5 6 7 8 9
  35. 35. 行列の要素を取り出す • 行列の中から、ベクトルとして取り出したい行や列を 指定 –行を取り出す:変数名[行番号,] –列を取り出す:変数名[,列番号] > #2列目を取り出す場合 > 変数名[,2] [1] 2 5 8 > #2行目を取り出す場合 > 変数名[2,] [1] 4 5 6
  36. 36. イメージ [,1] [,2] [,3] [,4] [,5] [1,] [2,] [3,] [4,] [5,]
  37. 37. ベクトルと行列 まとめ • ベクトル –数字や文字の列 • 行列 –ベクトルを縦横に並べたもの –横方向が行、縦方向が列 –行列から必要な要素を取り出すには、変数名[行番号,列 番号]
  38. 38. データの読み込み
  39. 39. データ読み込み • 下準備 –getwd関数で、現在の作業ディレクトリの場所を確認 • 作業ディレクトリ:データを読み込みたいファイルを置く場所 –その作業ディレクトリに、配布したcsvファイルを移動し てください > getwd() [1] "C:/Users/yusaku/Documents"
  40. 40. データ読み込み • read.csv関数 –データフレーム形式のカンマ区切りデータを読み込む –1つ目の引数を"ファイル名"とする • ファイル名には、拡張子(.csv)を含める > read.csv("ファイル名", header = T)
  41. 41. データ読み込み • read.csv関数 –2つ目の引数(header)で見出し行(1行目にある項目名 などの書かれた行)の有無を指定 • Tなら1行目を見出し行として読み込み • Fなら1行目をデータ行として読み込み > # 見出し行がある場合 > read.csv("ファイル名", header = T) > # 見出し行がない場合 > read.csv("ファイル名", header = F)
  42. 42. データ読み込み • 読み込んだデータを分析に使う場合は、必ず変数に 代入する –読み込むだけでは、コンソールにデータの中身が表示さ れるだけで、分析できる状態で残らない > # 読み込んだデータを、 datという変数に代入する > dat <- read.csv("ファイル名", header = T)
  43. 43. 演習 • 見出し行のあるテストのデータを、csvファイル (test.csv)から読み込んで、「dat」という名前の変 数に代入してみましょう > dat <- read.csv(“test.csv", header=T)
  44. 44. データ読み込み まとめ • Rにデータを読み込む際は、 –データはcsv形式で用意 • 管理もしやすい • 配布・公開もしやすい –作業ディレクトリにcsvファイルを移動したら、 read.csv関数で読み込み –見出し行の有無は、headerオプションで指定
  45. 45. パッケージを使う
  46. 46. パッケージとは • パッケージとは、便利な機能・関数がまとめられてい るもの • Rにデフォルトで入っているパッケージだけでも色々 できる • デフォルトで入っていない関数を使うためには、パッ ケージを追加する必要がある
  47. 47. パッケージのインストール • メニューを使ってインストールする –Rのメニューの中の「パッケージ」> 「パッケージのインス トール」> ほしいパッケージを選択 –簡単だが、複数のパッケージをインストールする場合、何 度もクリックする手間がかかる
  48. 48. パッケージのインストール • パッケージをインストールする関数 –install.packages("ほしいパッケージ名") • " "で囲むことを忘れないように • インストールできたらlibrary 関数で読み込む –library(読み込みたいパッケージ名) > install.packages("psych") > library(psych)
  49. 49. パッケージ まとめ • パッケージは、 –install.packages 関数でインストール –library関数で読み込み
  50. 50. 記述統計量の算出
  51. 51. 記述(要約)統計量とは • 標本の分布の特徴を要約して記述する値 • 標本の各変数について平均値・分散を求めたり、度 数分布を調べたり、2変数間の相関関係を示す散布 図を描いたりする。相関係数を求めたり、クロス集計 表を作成することもこれに含まれる (青木, 2002)
  52. 52. 記述統計量を算出する関数一覧 • データの個数 length • 最大値 max • 平均値 mean • 最小値 min • 中央値 median • 標準偏差 sd
  53. 53. 記述統計 • summary関数 –平均値・第1四分位・中央値・第3四分位・最小値を算出で きる • 事前テストの得点の記述統計をsummary関数で算 出してみましょう > summary(dat$pre)
  54. 54. 記述統計 • 歪度(skewness)・尖度(kurtosis) –分布の偏り具合・尖り具合 –デフォルトではこれらを算出できる関数が用意されてい ない –以下のパッケージ・関数を用いて、歪度・尖度を算出可能 • e1071パッケージのskewness関数・kurtosis関数 • psychパッケージのskew関数・kurt関数
  55. 55. 記述統計 • psychパッケージのdescribe関数を用いて記述統 計を一通り算出できる > install.packages(“psych”) > library(psych) > describe(dat)
  56. 56. 結果の見方
  57. 57. ヒストグラムの作成 • hist関数でヒストグラム(度数分布図)を描き、事前テス ト/事後テストの分布を観察する –さきほどの練習で作った変数 test のデータを使う > hist(dat[,1]) #事前テストのヒストグラム > hist(dat[,2]) #事後テストのヒストグラム
  58. 58. 2つのヒストグラム 事前テストの分布 事後テストの分布 Histogram of dat[, 1] dat[, 1] Frequency 30 40 50 60 70 80 90 0510152025 Histogram of dat[, 2] dat[, 2] Frequency 30 40 50 60 70 80 90 05101520
  59. 59. 箱ひげ図の作成 • boxplot関数で箱ひげ図(box plot)を作成 –事前テスト・事後テストの分布を、箱ひげ図を観察して比 較しましょう > boxplot(dat)
  60. 60. 箱ひげ図 最大値 中央値 最小値 第1四分位点 第3四分位点
  61. 61. 蜂群図を箱ひげ図に重ねる • 蜂群図(beeswarm plot)を箱ひげ図に重ね描きして、 一人ひとりのばらつきを把握する –beeswarmパッケージのbeeswarm関数を使用 –さっき描いた箱ひげ図はそのままで以下のコードを入力 > beeswarm(dat, add = T) # addは重ね描きをするオプション
  62. 62. と、その前に • beeswarm関数はそのままでは使えない –Rにはもともと入っていない関数だから –まず、beeswarm関数が含まれている、beeswarm パッケージをインストールし、読み込まないといけない > install.packages("beeswarm") > library(beeswarm) > beeswarm(dat, add = T) #addは重ね描きをするオプション
  63. 63. 箱ひげ図&蜂群図
  64. 64. t 検定 2つの変数の平均値の差をみる
  65. 65. こんなときに使う • それぞれ異なる学習方略で学習した、2つのグルー プのテストの平均得点の間に統計的に有意な差があ るか確かめたい →対応なし(繰り返しなし)のt 検定 • 学習者グループの、ある学習方略で学習する前と後 のテストの平均得点の間に、統計的に有意な差があ るか確かめたい →対応あり(繰り返しあり)のt 検定
  66. 66. その前に • 分析の前提条件を満たしているか確認(本日は割愛) – データが名義尺度ではないか – データが正規分布しているか – 標本サイズに偏りがないか • 記述統計量、特に平均、標準偏差、尖度・歪度は確認した か • ヒストグラムや箱ひげ図を確認したか • 最低限、これらを行ってから分析に移りましょう
  67. 67. やってみよう • 事前テストと事後テストの得点を比較する –同じ人が2回テストを受けている →対応ありt 検定 • t.test関数を使う –引数1:事前テストのデータ –引数2:事後テストのデータ –pairedオプションで対応あり/なしを選ぶ(T:あり) > t.test(dat$pre, dat$post, paired = T)
  68. 68. やってみよう • 事前テストと事後テストの間の効果量を算出する • t 検定の場合は、Cohen’s d と呼ばれる効果量を 用いる –effsizeパッケージのcohen.d関数でd が算出できる > install.packages(“effsize”) > library(effsize) > cohen.d(dat$pre, dat$post)
  69. 69. 結果の見方 • t 値、自由度(df )、p 値を読み取る • t 値の小数第3位以降は不要なので四捨五入 • p 値は紙面の許す限り、少数第2, 3位までの 正確な値を報告(APA, 2010) • .001を下回る場合はp < .001でよい • 効果量も後ろに付記する 本文中での報告例 t (62) = -5.29, p < .001, d = 0.91
  70. 70. 一元配置分散分析 3つ以上の変数の平均値の差をみる
  71. 71. こんなときに使う • それぞれ異なる学習方略で学習した、3つのグループの テストの平均得点の間に統計的に有意な差があるか確か めたい →被験者間計画(対応なし・繰り返しなし)の一元配置分散分析 • 学習者グループの、ある学習方略で学習する前と後、そ のさらに後の3つのテストの平均得点の間に、統計的に 有意な差があるか確かめたい →被験者内計画(対応あり・繰り返しあり)の一元配置分散分析
  72. 72. やってみよう • 事前テストと事後テストと遅延事後テストの得点を 比較する –同じ人が3回テストを受けている →被験者内計画 • ANOVA君を使う –井関龍太先生(大正大学)が作成された、分散分析用関数 –多重比較、効果量の算出も一度にでき、非常に便利 > source("anovakun_483.txt") > source("anovakun_483.txt", encoding = 'CP932') # Mac/Linuxの方はこちら
  73. 73. やってみよう • anovakun関数を使う – 引数1:データ – 引数2:要因計画 • “sA”:被験者内計画(今回はこれ) • “As”:被験者間計画 – 引数3:要因の水準数 • 今回は事前・事後・遅延の3水準 – holmオプションをTにし、多重比較の方法をHolm法に – etaオプションをTにし、効果量(イータ二乗)を算出 > anovakun(oneway, “sA”, 3, holm = T, eta = T)
  74. 74. 結果の見方
  75. 75. 結果の見方 • F 値、自由度(df )、p 値を読み取る • 自由度は、要因のもの(A)と誤差(s x A) のものをピックアップする • F 値の小数第3位以降は不要なので四捨五入 • 多重比較の結果を確認し、報告(t 検定と同様) 本文中での報告例 F (2, 98) = 43.64, p < .001, η2 = 0.39
  76. 76. 二元配置分散分析 2つの要因とその水準間の平均値の差をみる
  77. 77. こんなときに使う • 2種類の指導方法と2種類の教室環境で学習した4つの異なる 学習者グループのテストの平均得点の間に統計的に有意な差が あるか確かめたい →被験者間計画(対応なし・繰り返しなし)の二元配置分散分析 • 1つの学習者グループを、2種類の指導法で指導し、2種類の教 室環境で学習したとき、テストの平均得点の間に統計的に有意な 差があるか確かめたい →被験者内計画(対応あり・繰り返しあり)の二元配置分散分析 • 2つの学習者グループを、それぞれ異なる指導法で指導し、その 前と後の2つのテストの平均得点の間に、統計的に有意な差があ るか確かめたい →被験者内・被験者間混合計画の二元配置分散分析
  78. 78. やってみよう • 協同学習ベースと個別学習ベースの授業をおこなっ た2つの学習者グループの、事前テストと事後テスト の得点を比較する –同じ人が2回テストを受けている →被験者内計画 –学習方法(学習者グループ)は2つ →被験者間計画 • ANOVA君を使う > source("anovakun_483.txt") > source("anovakun_483.txt", encoding = 'CP932') # Mac/Linuxの方はこちら
  79. 79. やってみよう • anovakun関数を使う – 引数1:データ – 引数2:要因計画 • “sAB”:被験者内計画 • “AsB”:被験者内・被験者間混合計画(今回はこれ) • “ABs”:被験者間計画 – 引数3, 4:1つ目・2つ目の要因の水準数 • 今回は協同学習G・個別学習Gの2水準と事前・事後の2水準 – holmオプションをTにし、多重比較の方法をHolm法に – petaオプション(etaではない)をTにし、効果量(偏イータ二乗)を算出 > anovakun(twoway, “AsB”, 2, 2, holm = T, peta = T)
  80. 80. 結果の見方
  81. 81. 結果の見方 • 交互作用が有意 • 単純主効果の分析へ 本文中での報告例 F (1, 90) = 15.40, p < .001, η2 partial = 0.14
  82. 82. 結果の見方
  83. 83. 相関 2つの変数間の関係をみる
  84. 84. こんなときに使う • リーディングテストと語彙テストの得点との間に、ど のような関係(=片方が大きいとき、もう片方がどう変化するか) があるかを明らかにしたい • 動機づけの質問紙調査の結果(数値)と、学習方略の 質問紙調査の結果(数値)との間にどのような関係 があるかを明らかにしたい
  85. 85. 散布図 • 散布図を作成して、相関関係を観察 –csvファイル「toeic.csv」を読み込んで、「toeic」という 変数に代入 –plot関数で、散布図を描画して、TOEICスコアと英作文 の語数の相関関係を観察しましょう > toeic <- read.csv("toeic.csv", header=T) > plot(toeic$score, toeic$words)
  86. 86. 300 400 500 600 700 800 900 1000 150200250300350 toeic$score toeic$words
  87. 87. 相関係数 • 2つの変数の相関関係の強さを0~1の間で数量的 に表現 –ピアソンの積率相関係数 • データが正規分布していたり、間隔尺度以上のときに使用 –スピアマンの順位相関係数・ケンドールの順位相関係数 • データが正規分布していなかったり、順序尺度のときに使用
  88. 88. やってみよう • 変数「toeic」の中の、TOEICスコアと英作文の語数 とのピアソンの積率相関係数を算出する > # 相関係数の算出 > cor(toeic$score, toeic$words, method = “pearson") > # 相関係数、p値、信頼区間の算出 > cor.test(toeic, method = “pearson")
  89. 89. 回帰分析 ひとつの変数から、ひとつの変数を予測する
  90. 90. こんなときに使う • 語彙テストの得点からTOEICの得点を予測する →単回帰分析 –従属変数 = a + b × 独立変数 • 読解力・聴解力・語彙力のうち、TOEICの得点を もっとも予測するものはどれか明らかにする →重回帰分析 –従属変数 = a + b1 × 独立変数1 + b2 × 独立変数2 + b3 × 独立変数3 + ... + bn × 独立変数n +
  91. 91. やってみよう • 単回帰分析で、読解テストの得点からTOEICの得点 を予測する > res1 <- lm(kaiki$toeic ~ kaiki$read) > summary(res1)
  92. 92. 結果の見方 • 導かれる回帰式: TOEIC得点の予測値 = 149.12 + 4.81 × 読 解テストの得点 • 決定係数 0.24、自由度調整済み決定係数0.22 TOEIC得点の分散の22~24%が説明されてい る
  93. 93. やってみよう • 重回帰分析で、読解テストの得点、聴解テストの得点、 ごテストの得点のうち、最もTOEICの得点を予測す るものはどれかを明らかにする > res2 <- lm(kaiki$toeic ~ kaiki$read + kaiki$listen + kai ki$vocab) > summary(res2)
  94. 94. 結果の見方 • 導かれる回帰式: TOEIC得点の予測値 = 89.43 + 2.29 × 読 解テストの得点 + 3.14 × 聴解テストの得点 + 1.51 × 語彙テストの得点 • 偏回帰係数が有意だったのは聴解テストのみ →TOEIC得点を最も予測するものは聴解テスト • 決定係数 0.34、自由度調整済み決定係数0.31 TOEIC得点の分散の約30%が説明されている
  95. 95. より深くRを学びたくなった方へ • 日本全国にあるRコミュニティにどうぞ • Japan.R • Tokyo.R • SappoRo.R • Nagoya.R • Kobe.R • HiRoshima.R • Fukuoka.R
  96. 96. 外国語教育研究における を用いた統計処理入門 連絡先: 川口 勇作(愛知学院大学 教養部) ykawa@dpc.agu.ac.jp https://y-kawaguchi.com

×