Rとエクセルで信号検出理論:"psyphy"パッケージ,簡単なRの関数,エクセルシート
信号検出理論(Signal Detection Theory)っていうのがあって。
普通,被験者の正答率(cf. 古典的テスト理論)というデータを扱うんだけど,信号検出理論では,検出力(弁別力,敏感さ,etc.; ungrammaticalityやanomaliesなどに対する)と判断基準(被験者ごとのバイアス)を別々に求めることができる。
バイアス(なんでもyesって反応する)とか,そういう傾向がないとしたときに,本当に検出する力とか,yesって反応しがちだとか,そういうデータを対象にできる。
詳しくはいろいろ調べたらすぐでてくる。
Macmillan, N. A., & Creelman, C.D. (2004). Detection Theory-A User s Guide. Lawrence Erlbaum Associates.
だいたい,
弁別力として,d',判断基準としてβやCというのを用いる。
これを簡単に計算するツールが欲しい。
これらの指標の計算は難しくないけど,1人あたり4つ数字を使わないといけない。
- HIts (信号のあるものに信号あると判断した回数)
- MIsses(信号のあるものを見逃した回数)
- False Alarm(信号のないものを信号あると判断した回数)
- Correct Rejection(信号のないものを信号ないと判断した回数)
これら。これらからH(hit ratio,基本はhits/(hits+misses)),FA(false alarm ration, 基本はfalses alam/(false alarm+correct rejection))を計算する。ただHitsがFAが0だと計算出来ないのでちょっと工夫する(分子にあるHitsから-0.5とか)。
それで大量なデータ(100人とか),そういうときめんどいからツール欲しい。
あった。
まずRには,"psyphy"パッケージという専門のがあった。便利そう。
http://cran.r-project.org/web/packages/psyphy/psyphy.pdf
dprime.ABX関数とかあるのね。
あと,自作の関数があるみたい。
Computing discriminability and bias with the R software
http://www.pallier.org/ressources/aprime/aprime.pdf
dprime <- function(hit,fa) {
qnorm(hit) - qnorm(fa)
}
beta <- function(hit,fa) {
zhr <- qnorm(hit)
zfar <- qnorm(fa)
exp(-zhr*zhr/2+zfar*zfar/2)
}
#ノンパラメトリックなA'な場合
aprime <-function(hit,fa) {
a<-1/2+((hit-fa)*(1+hit-fa) /
(4*hit*(1-fa)))
b<-1/2-((fa-hit)*(1+fa-hit) /
(4*fa*(1-hit)))
a[fa>hit]<-b[fa>hit]a[fa==hit]<-.5
a
}
(Pallier, 2002, p.3より)
これもめんどくさいってときのために,エクセルシートもつくった。
ダウンロードできる。4つの種類の反応の数を入力すると出る。
これらの計算式はMacmillan and Creelman (2004)によるもので,
こちらの資料でも解説していらっしゃる。
http://kyoumu.educ.kyoto-u.ac.jp/cogpsy/personal/Kusumi/datasem06/yokoo.pdf
(横尾知子さん)
そもそも外国語教育の分野で応用できるかは微妙かも。
試行数が少なすぎるし。…いろいろ。
でも,まあ。