草薙の研究ログ

英語の先生をやってます。

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つ数字を使わないといけない。

 

  1. HIts (信号のあるものに信号あると判断した回数)
  2. MIsses(信号のあるものを見逃した回数)
  3. False Alarm(信号のないものを信号あると判断した回数)
  4. 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

(横尾知子さん)

 

そもそも外国語教育の分野で応用できるかは微妙かも。

試行数が少なすぎるし。…いろいろ。

でも,まあ。