自分用コピペ用メモ。随時更新。
教育学はまったく専門ではないが、講義をもっていると、半自動的にデータはたまっていくので、可能な範囲で活かそうか、ぐらいのノリのメモ。
- 分析の枠組み
- 0.データの事前処理
- 1.基本操作用
- 2.クラスごと、学年ごと、学部ごとの基礎統計量を出す。
- 3.学部ごと、学年ごとにデータフレームを分けて格納しておく
- 4.項目ごとで、比較検定用のデータフレームを作成(省略)
- 5.合計点についての差の検定(分散分析、ウェルチのt検定 )
- 6.重回帰式で「合計得点」に寄与している要素を確認する。
- 7.因子分析
- 8.パス分析(SEM)
- 9.傾向スコアマッチング
- 10.回帰不連続デザイン
- 11.差の差検定
- ・備考
- 関連研究
分析の枠組み
かなり、ベタなことをやるだけだが、一応の確認までに書いておく。
- 基本的に、自分の授業の「学習効果」の改善をするための基礎データを収集していきたい。
- そのためには、従属変数(dependent variable) は、学生のその回の成績(出席点除く)だということになる「成績に現れない部分も教育しているのだ」という話もあるだろうが、そういう話はここでは扱わない。教員によってはゼミなどの場合は、「学生の希望企業への就職率」などを従属変数にする人もいるだろう。
- 独立変数(independent variable)として、第一に重要なのは、「授業へのコミットメント度合い(出席率、時間外学習率、課題提出率、通常課題内容の質)」になるだろう。「授業に熱心にとりくむほど、成績がよくなる」という単純な因果が、単純に成り立っている授業であればあるほどよい、とここでは捉える。教員の授業内容がダメダメであれば、「熱心に授業を受けたが意味なかった」ということが成り立つ。つまり、授業へのコミットメントと、成績が無相関だということになる。
- しかし、「良いコミットメント→良い成績」という図式は、単純には成立せず、実際にはさまざまな別の要因がここに絡んでくると予想される。交絡要因となりうる因子(confounding variable、confounding factor)としては、(1)授業開始時点での学生の授業への意欲や、(2)基礎能力(英語、数学、PCスキルなど)(3)授業に時間を割きやすい生活環境(アルバイトに忙殺されていないなど、通学時間、実家住まいかなど)などが考えられる。能力と意欲の高い学生が、時間を割いてその授業に本腰を入れていれば、あたりまえのように成績は高くなる。他方で、基礎学力に難がある学生が、低いテンションで、アルバイトに忙殺されている学生が受講すれば、同じ授業で同じ出席率だったとしても、同じような成績にはならない。
- 教育社会学とかの人とかだったら、「親が大卒がどうか」とか「自宅にどのぐらいの本があるのか」とかといったことを、変数として加えたいと思う。
0.データの事前処理
授業における実施事項
- 第何回の授業でどのような工夫をしたのか
- その回の授業を受けたことの有無をチェックしておく
採点を終わらせるにあたって次の点数は分けて処理しておく
- 授業参加度1:出席率→できれば、回ごとのデータも分析用にとっておきたい。
- 授業参加度2:課題提出率→できれば、回ごとのデータも分析用にとっておきたい。
- テスト or レポート採点結果の項目別点数
- 合計点
事前の変数の収集:
- 授業の成績に関わるそうな変数を可能な範囲で収集しておく
- <例>学生の学習意欲(全般的学習意欲、その授業への意欲)、学生の事前の関連技能(数学、英語、ICTリテラシーなど)、社会的有利さ(通学時間、アルバイトの有無、可処分時間、実家か一人暮らしか)など。できれば、教育社会学系の人が使っている標準の尺度がないかをぐぐっておきたい。
参考になりそうな尺度・質問紙
<モチベーション関連の尺度>
Tuan*, H. L., Chin, C. C., & Shieh, S. H. (2005). The development of a questionnaire to measure students' motivation towards science learning. International journal of science education, 27(6), 639-654. → 理科系の授業のモチベーション調査の質問紙がついている。
Vallerand, R. J., Pelletier, L. G., Blais, M. R., Briere, N. M., Senecal, C., & Vallieres, E. F. (1992). The Academic Motivation Scale: A measure of intrinsic, extrinsic, and amotivation in education. Educational and psychological measurement, 52(4), 1003-1017
<SES>(social economic status)
福岡教育大学. (2017). 児童生徒や学校の社会経済的背景を分析するための調査の在り方に関する調査研究. 平成 28 年度文部科学省委託事業 「学力調査を活用した専門的課題分析に関する調査研究」 研究成果報告書.表2,pp39-41
https://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2017/11/28/1398296_1.pdf<2020年9月1日閲覧>
事後の変数の収集:
- 阿久津洋巳. (2014). 授業評価アンケートは何を評価しているのか.
- 私の授業の場合、「主観的な理解度」、「楽しさ」、「積極性」みたいなのは評価尺度としてはほしい
昨年データの読み込み、比較
- できれば、昨年データの読み込みや比較がやりやすいように、自前でDBつくっておいてもいいかも?
- 正直、RでSQL的なことやるのは、やっぱめんどくさい気がするし……
1.基本操作用
df <- read.csv("score.csv",header=T,row.names=1)
summary(df)
round(cor(df[3:10]))
write.csv(dfcor,file="dfcor.csv")
使い方は省略
あと、omitかなんかで、「採点対象外」の学生を除いておいてもよいかもしれない。
2.クラスごと、学年ごと、学部ごとの基礎統計量を出す。
library(psych)
describeBy(df$合計点,df$所属) #「所属」が学部ごとだとする
describeBy(df$合計点,df$回生) #「回生」が学年ごとだとする
※tapply関数なども使えるが、describeByは便利。
参考
Rでクラスごとの記述統計を効率的に算出するお話 | Takuro FUJITA@NIT, Fukui College
3.学部ごと、学年ごとにデータフレームを分けて格納しておく
※t検定などの下準備。「所属」の列に学部名、「回生」に学年が記載されているという想定
sansha <- df[df$所属=="産社",]
law <- df[df$所属=="法",]
lit<- df[df$所属=="文",]
Int <- df[df$所属=="国際",]
firstG <- df[df$回生=="1",]
secondG <- df[df$回生=="2",]
thirdG <- df[df$回生=="3",]
fourthG <- df[df$回生=="4",]
fifthG <- df[df$回生=="5",]
sixthG <- df[df$回生=="6",]
seventhG <- df[df$回生=="7",]
eighthG <- df[df$回生=="8",]
4.項目ごとで、比較検定用のデータフレームを作成(省略)
※仮に17行目が、合計点だとする
sansha17 <- df[df$所属=="産社",17]
law17 <- df[df$所属=="法",17]
lit17<- df[df$所属=="文",17]
Int17 <- df[df$所属=="国際",17]
df17 <- c(sansha17,law17,lit17,Int17)
5.合計点についての差の検定(分散分析、ウェルチのt検定 )
dftest <- list(sansha$合計点,law$合計点,lit$合計点,Int$合計点)
boxplot(dftest) #boxplotを確認
分散分析:あとで
学部ごと
t.test(x=sansha$合計点, y=law$合計点, conf.level=0.95, var.equal=F)
t.test(x=sansha$合計点, y=lit$合計点, conf.level=0.95, var.equal=F)
t.test(x=sansha$合計点, y=Int$合計点, conf.level=0.95, var.equal=F)
t.test(x=law$合計点, y=lit$合計点, conf.level=0.95, var.equal=F)
t.test(x=law$合計点, y=Int$合計点, conf.level=0.95, var.equal=F)
t.test(x=lit$合計点, y=Int$合計点, conf.level=0.95, var.equal=F)
学年ごと
t.test(x=firstG$合計点, y=secondG$合計点, conf.level=0.95, var.equal=F)
t.test(x=firstG$合計点, y=thirdG$合計点, conf.level=0.95, var.equal=F)
t.test(x=firstG$合計点, y=fourthG$合計点, conf.level=0.95, var.equal=F)
t.test(x=secondG$合計点, y=thirdG$合計点, conf.level=0.95, var.equal=F)
t.test(x=secondG$合計点, y=fourthG$合計点, conf.level=0.95, var.equal=F)
t.test(x=thirdG$合計点, y=fourthG$合計点, conf.level=0.95, var.equal=F)
6.重回帰式で「合計得点」に寄与している要素を確認する。
あとで。
毎回の作業なので、aicとかで、自動で変数しぼりこんでいく系の前提
7.因子分析
回ごとの出席、課題提出の有無等が効いているかどうかも確認しておきたい。
8.パス分析(SEM)
交絡要因ふくめて分析
そこまで余裕があれば………。
9.傾向スコアマッチング
(1)授業開始時点での学生の授業への意欲や、(2)基礎能力(英語、数学、PCスキルなど)(3)授業に時間を割きやすい生活環境(アルバイトに忙殺されていないなど)
あたり
参考:
https://gakkai.sfc.keio.ac.jp/journal_pdf/SFCJ14-1-09.pdf
10.回帰不連続デザイン
11.差の差検定
- 処置前後のデータがある
- 同じ授業の中で、別々の受講内容を選択した学生がいる
(ただし、自主選択で、受講内容が別々だと、RCTではない……)
・備考
特に50人以上の授業については、基本的に、この手の分析をルーチンで実施したい。ただ、教育学の人間でもないので、データを貯めたとして、どこに出すのかという問題はあるが……。まあ、先行研究をあさってアクディブラーニングとか、ゲーミフィケーション系の文脈とかで出せばいいのかな……。
関連研究
「自己調整学習(Sefl Regulated learning)」系の実証論文。パス解析をやっているあたりの解釈が難しくて面白い。