ミュラーリヤー実験
>>>練習する(角度2条件の上昇・下降系列1回ずつ、計4回です)
>>>実験を実施する(角度5条件 x 上昇・下降 x 2回反復で20回です)
教示修正版(長い方を選ぶ)。
>>>練習する(角度2条件の上昇・下降系列1回ずつ、計4回です)
>>>実験を実施する(角度5条件 x 上昇・下降 x 2回反復で20回です)
背景
- 錯視とは・・・
- 知覚と物理的な性質の乖離。
- さまざまな幾何学錯視がある。
- ミューラリヤー錯視の紹介
- 先の両端の矢羽によって長さが変わる。
- 内向きの場合は短く、外向きの場合は長く見える。
- 実験の目的
- ミュラーリヤー錯視における矢羽の角度の効果を追試。
方法
- 標準刺激(矢羽付き横棒)と比較刺激(横棒)の長さを比較して、比較刺激が標準刺激に比べて長いか短いかを判断する、という実験です。
- 標準刺激は左側、比較刺激は右側に出でてきます。
手続き
1要因の被験者内計画です。
- 矢羽の角度 (5水準)
- 60, 120, 180, 240, 300°
- それぞれの条件に対して、上昇系列と下降系列を2回ずつ繰り替えします。
- 全部で20系列の閾値測定を行います。
測定法
- 極限法(上下法・2択)
- 上昇系列:比較刺激は最初は短く、だんだん長くなります。「長い」反応が出現したら系列終了です。
- 下降系列:比較刺激は最初は長く、だんだん短くなります。「短い」反応が出現したら系列終了です。
分析
サンプルデータ
- sampleData.xlsx を置いておきます。
- 内容は以下のとおりです。
データ定義
- rt: 反応時間。この実験では無視してOK
- sequence_index: 系列のインデクス(0-indexed)
- response_index: 系列内の反応のインデクスです(0-indexed)
- std_angle: 比較刺激の矢場の角度。
- up_down: 上昇系列 or 下降系列
- comp_len: 比較刺激の長さ。
- response: 反応。
分析方法
- 見てわかるとおり、上昇系列では”long”、下降系列では”short”の反応が出たら系列終了です。
- 各系列のPSEは、各系列の最後の長さと、最後から2番目の長さの平均を取ればいいです。
- 各系列のPSEを算出したあとに、条件ごとのPSEの平均を計算します。
- これが、各被験者の代表値なので、これを提出してもらうのが良さそうです。
- この計算を行うRのコードを載せておきます。
- 結果をエクセルに貼り付けて、
sampleData.xlsx
というファイル名(これは任意)で保存してあるとします。
- 結果をエクセルに貼り付けて、
library(readxl) # エクセルファイルの読み込みに使う。
= read_excel("sampleData.xlsx") # 読み込む
dt head(dt) # データの構造を確認しましょう。
## # A tibble: 6 × 7
## rt sequence_index response_index std_angle up_down comp_len response
## <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <chr>
## 1 1388. 0 0 300 down 230 long
## 2 45.1 0 1 300 down 220 long
## 3 295. 0 2 300 down 210 long
## 4 891. 0 3 300 down 200 long
## 5 1257. 0 4 300 down 190 long
## 6 455. 0 5 300 down 180 short
str(dt) # データの構造を確認しましょう。
## tibble [165 × 7] (S3: tbl_df/tbl/data.frame)
## $ rt : num [1:165] 1388.2 45.1 294.5 891.1 1256.6 ...
## $ sequence_index: num [1:165] 0 0 0 0 0 0 1 1 1 1 ...
## $ response_index: num [1:165] 0 1 2 3 4 5 0 1 2 3 ...
## $ std_angle : num [1:165] 300 300 300 300 300 300 60 60 60 60 ...
## $ up_down : chr [1:165] "down" "down" "down" "down" ...
## $ comp_len : num [1:165] 230 220 210 200 190 180 100 110 120 130 ...
## $ response : chr [1:165] "long" "long" "long" "long" ...
summary(dt) # データの要約に変なところがないか確認しましょう。
## rt sequence_index response_index std_angle
## Min. : 45.15 Min. : 0.00 Min. : 0.000 Min. : 60.0
## 1st Qu.: 211.60 1st Qu.: 5.00 1st Qu.: 2.000 1st Qu.:120.0
## Median : 454.75 Median :11.00 Median : 4.000 Median :180.0
## Mean : 581.47 Mean :10.13 Mean : 3.897 Mean :181.1
## 3rd Qu.: 807.63 3rd Qu.:15.00 3rd Qu.: 6.000 3rd Qu.:240.0
## Max. :2663.86 Max. :19.00 Max. :11.000 Max. :300.0
## up_down comp_len response
## Length:165 Min. :100 Length:165
## Class :character 1st Qu.:130 Class :character
## Mode :character Median :160 Mode :character
## Mean :164
## 3rd Qu.:190
## Max. :230
# 各系列のPSEを抽出します。
# ホントは1行で書けますが、あえてtidyverseは使わずbase functionで行きます。
= c()
PSE for (si in unique(dt$sequence_index)) {
= subset(dt, sequence_index == si)
tmp = mean(tail(tmp, 2)$comp_len) # 最後の2行のcomp_lenの平均
pse = rbind(PSE, data.frame(std_angle = tmp$std_angle[1], pse = pse))
PSE
}
::kable(PSE) # データの構造を確認しましょう knitr
std_angle | pse |
---|---|
300 | 185 |
60 | 135 |
120 | 145 |
240 | 175 |
240 | 175 |
300 | 175 |
120 | 145 |
240 | 175 |
180 | 145 |
120 | 135 |
60 | 135 |
60 | 145 |
180 | 145 |
60 | 125 |
300 | 185 |
300 | 195 |
120 | 145 |
180 | 155 |
240 | 155 |
180 | 155 |
# 各条件ごとの平均値を計算します。
= aggregate(pse ~ std_angle, data = PSE, FUN = mean)
result ::kable(result) knitr
std_angle | pse |
---|---|
60 | 135.0 |
120 | 142.5 |
180 | 150.0 |
240 | 170.0 |
300 | 185.0 |
# 図示
library(ggplot2)
ggplot(result, aes(std_angle, pse)) +
geom_hline(yintercept = 150, colour = "gray", linetype = "dashed")+
geom_point() + geom_line() +
theme_classic()
以上が、各被験者の集計です。
- 実際の授業では、
result
の中身(条件ごとのPSEの平均)を提出してもらって、複数の人のデータを使ってHADで1要因Repeated Measures ANOVAで解析するのが一般的だと思います。
考察のポイント
後でかく
引用文献
さまざまな閾値測定
内向(60°)と外向(300°)の2条件について、さまざまな閾値測定法での実験です。
- 最初に教示画面が出てきます。
- スペースキーを押すと、実験が始まります。
- 実験終了後、データファイル(csvファイル)が自動的にダウンロードされます。ダウンロードされない場合は、同じ内容が画面に表示されるので、その内容をコピペして保存してください。
全実験に共通のパラメータ
- 背景領域
- 色:グレイ
- 大きさ:600 x 600 px
- 標準刺激(左側):矢羽あり
- 矢羽の角度:内向(60°)と外向(300°)
- 主線(横線)の長さ:150 px
- 矢羽の長さ:50 px
- 中心の横位置:背景領域中心から左に150 px
- 中心の縦位置:背景領域上部から100 px
- 色:黒
- 線の太さ:3 px
- 比較刺激(右側):矢羽なし
- 中心の横位置:背景領域中心から右に150 px
- 中心の縦位置:背景領域上部から200 px
- 色:黒
- 線の太さ:3 px
恒常法
比較刺激(右側)がランダムな長さで提示されます。 比較刺激が標準刺激より長いか短いか判断します。
- 比較刺激の方が長い:右矢印キー
- 比較刺激の方が短い:左矢印キー
読み替えると「左右の刺激のうち長い方を選んで左右矢印キーで回答する」ということです。こちらの方が反応のための認知的負荷が低いように思います。
パラメータなど
- 比較刺激の長さ:14段階(90 px から 220 px まで10 px刻み)。
- 繰り返し:各条件10回(総試行数:2 x 14 x 10 = 280)
- ITI(反応から次の刺激が出るまで):100 ms
- 反応するまで刺激を提示。
- データファイル名:
ML-constant.csv
データ
1試行=1行形式で、281行(1行目はタイトル行) x 4列のcsvファイルです。
- rt: 反応時間
- response: 反応(左右矢印のいずれか)
- std_angle: 60なら内向図形、300なら外向図形
- comp_len: 比較刺激の長さ
恒常法(角度4条件)
上の恒常法と同じですが、角度条件の水準が増えています(60, 120, 240, 300)。
2x2の2要因計画となります。
向き
- 内向(60, 120)
- 外向(240, 300)
主線との角度の大きさ
- 小(60, 300 = 60°)
- 大(120, 240 = 120°)
極限法
比較刺激(右側)の長さが徐々に変化します。 標準刺激と比較刺激の長さが同じになったと思ったらスペースキーを押します。 長い→短いに変化する下降系列と短い→長いに変化する上昇系列があります。
パラメータなど
- 比較刺激の変化量:10 px
- 比較刺激の変化のタイミング:2秒ごとに、上昇系列なら長く、下降系列なら短くなります。
- 比較刺激の初期値:50 px (上昇系列)/ 250 px(下降系列)
- 繰り返し:上昇系列、下降系列それぞれ4回(総試行数:2 x 2 x 4 = 16)
- ITI(反応から次の刺激が出るまで):250 ms
- データファイル名:
ML-limit.csv
データ
1試行=1行形式で、17行(1行目はタイトル行) x 4列のcsvファイルです。
- rt: 反応時間
- std_angle: 60なら内向図形、300なら外向図形
- up_down: 上昇系列か下降系列か
- comp_len: 反応時の比較刺激の長さ(=PSE)
調整法
比較刺激(右側)の長さが標準刺激の長さと同じくらいに見えるように、上下矢印キーで比較刺激の長さを変化させて、スペースキーで回答します。 最初に長めの刺激がでる場合と、最初に短めの刺激が出る場合があります。
パラメータなど
- 比較刺激の変化量:10 px
- 比較刺激の初期値:半分の試行は50 px、残り半分は250 px(順番はランダム)
- 繰り返し:外向図形、内向図形それぞれ10試行(総試行数:2 x 10 = 20)
- ITI(反応から次の刺激が出るまで):250 ms
- データファイル名:
ML-adjustment.csv
データ
1試行=1行形式で、21行(1行目はタイトル行) x 4列のcsvファイルです。
- rt: 反応時間
- std_angle: 60なら内向図形、300なら外向図形
- up_down: 上昇系列か下降系列か
- comp_len: 反応時の比較刺激の長さ(=PSE)
マグニチュード推定法
比較刺激と標準刺激を見比べて、比較刺激(右側)を100とした時の標準刺激の長さを回答します。上下矢印キーで数字を調整して、スペースキーで回答します。
パラメータなど
- 繰り返し:外向図形、内向図形それぞれ1試行(総試行数:2)
- データファイル名:
ML-magest.csv
データ
1試行=1行形式で、3行(1行目はタイトル行) x 3列のcsvファイルです。
- rt: 反応時間
- std_angle: 60なら内向図形、300なら外向図形
- comp_len_resp: 回答した数字