参考文献:
[石如彬, 谢久书, 杨梦情, & 王瑞明. (2022). 语言和情境对具体概念感知运动仿真的影响. 心理学报, 54(6), 583–594. https://doi.org/10.3724/SP.J.1041.2022.00583]
2.2.4实验1。
演示效果
按下“上方向键”
按F或J
反馈信息:
实验步骤
实验包括中文和英文两个区组, 被试需要完成两个区组的实验,区组间的顺序在被试间进行了平衡(石如彬,谢久书,杨梦情,王瑞明,2022)。
实验中, 首先在白色屏幕中心呈现 500 ms 的红色注视点“+”, 让被试集中注意力。
注视点消失后, 在注视点上方和下方同时各呈现一个中文双字词(中文区组)或英文单词(英文区组), 要求被试判断词汇之间是否存在语义相关, 若存在相关按“J”键, 无关按“F”键。
“J”和“F”按键与是否语义相关的对应关系在被试间进行了平衡。
实验中要求被试又快又准的做出反应。
被试做出反应或无反应达到 3000 ms 后进入 800 ms的空屏, 空屏结束后自动进入下一个试次。
正式实验前被试接受练习实验, 给予被试正确与否的反馈,只有达到一定正确率才能进行正式实验。
为了保证试次的数量足够, 实验材料重复 3 遍, 每名被试完成 480 个试次, 中英文实验材料各半。
具体实验流程见图 1 (石如彬,谢久书,杨梦情,王瑞明,2022)。
引导语环节
1. 先去设置中将Input改为PsychToolbox(使用ioHub在Mac上运行会崩溃,暂时没有找到解决办法)。
2. 然后左上角File-New新建一个
3. 右键trial,rename改名
改成自己想要的名字即可,比如欢迎界面routine_welcome。
PS:使用长命名是为了避免写到后面发现页面和组件多时造成混乱的情况。
插入两个组件,每次点击组件都会弹出对话框,按需要进行填写:
配置Text
由于实验要求白底黑字,所以改一下设置,白底设置:
再把这一页的文字也改一下颜色,改成黑色:
添加键盘反应以进行下一步:
这个页面设计好后,可以运行试试。
PS:由于psychopy默认全屏运行,不方便截图,可以改小一点
点击顶部的绿色三角,即可运行。
运行结果如下:
实验环节
接下来编写第二个环节,也就是实验页面,由于实验页面需要循环展示,所以先制作要展示的数据,由于没有原始数据,所以我按照原文中的描述,自己编写了一点数据,如下:
text_word_up | text_word_down | corr_Ans | 空间关系 |
花瓶 | 玫瑰 | j | 一致 |
书籍 | 桌子 | j | 一致 |
玫瑰 | 花瓶 | j | 不一致 |
桌子 | 书籍 | j | 不一致 |
学生 | 校园 | j | NA |
校园 | 学生 | j | NA |
猫 | 汽车 | f | NA |
咖啡 | 狗 | f | NA |
(本文只是为了展示用法,数据暂不包含英文部分)
PS:这里我一开始用大写字母F和J,但是在后面发现键盘反馈无法读取大写字母,改成小写字母后,这里不对应会使trial_key_resp.corr这个值一直为0,所以只能全部改成小写,也许有更好的办法,但是目前还没找到。
根据原文,在屏幕中间上方和下方会各出现一个词,被试需要按J(语义相关)或F(语义无关),实验结束后,只分析“语义相关实验词”,而“语义相关填充词”(校园-学生)或“无关词”(猫-汽车)会被忽略,所以不需要标注空间关系。
有了数据以后,我们添加下一环
实验页面循环
在给这个环节添加模块之前,我们先给它创建一个循环。
然后分别在这个环节左右两边点上
此时会弹出一个选项框,让你填写循环条件
nReps: 所有条件重复出现的次数, 按照要求,实验材料重复3遍,所以这里填写3,而我的表格中有8行数据, 我们将做这个 trial 3×8=24 次。
loopType: 循环的随机方式. random 为在每一次 nReps 内, 即每一组重复出现的条件内进行循环. 例如, nReps为 2, 可能的图片顺序是 1 2 3 4 4 3 2 1. 注意在前四次和后四次1234都各出现了一次。
与之相对的是Full Random, 它可以跨nReps进行随机. 例如, 可能出现 1 1 2 2 3 3 4 4 的图片顺序。
循环条件写好后,就可以针对循环条件,写对应的展示页面。
实验页面
按照原文表述,首先在白色屏幕中心呈现 500 ms 的红色注视点“+”,然后呈现文字,并要求做出反应。
分别点击Text、Polygon和Keyboard,进行设置(每次点击都会弹框)
实验页面十字
先对十字进行设置,首先它需要呈现500ms
调整颜色和大小
然后我们点击绿色三角运行看看,效果如下:
按esc退出,
实验页面Text
我们接着操作Text部分,注视点消失后, 在注视点上方和下方同时各呈现一个中文双字词,这里我简单的使用python中的f-string,然后使用一个\n(换行)实现。
(注意倒数第二步如果是constant,就会报错NameError: name 'text_word_up' is not defined,因为该值需要每次都更新)
修改文字颜色:
修改字体:
运行效果:
实验页面键盘反馈
接下来要添加键盘反馈,也就是判断词汇之间是否存在语义相关, 若存在相关按“J”键, 无关按“F”键。
这里要注意,Allowed keys字母一定要用小写,使用大写将无法识别,而在实际测试中,键盘本身是否开启大写无所谓,甚至中文输入法下也是可以识别f键和j键的。
在这里勾选一下,存储结果,此时我们可以直接点击绿色三角运行一下,按实验流程走完,目的是为了获得csv文件
反馈环节
按流程走完后,去工程目录data下找到最新的csv文件,往右滑动,此时可以看到几个我们想要的数据,我们可以用来做按键反应后的反馈页面
按键以后需要做出反馈,因此在trial后面添加一个routine_feedback环节
原文中没有说明反馈页面呈现的时间,这里暂时定500ms好了(只在练习阶段出现),需要插入Text和Code组件
注意顺序,变量先在code中定义,然后才在text中使用。
Code组件中的代码:
if components_trial_key_resp.corr == 1:
feedback_text = '正确!用时=%.3f' % components_trial_key_resp.rt
feedback_text_color = 'green'
else:
print("components_trial_key_resp.rt=====", components_trial_key_resp.rt)
feedback_text = '错误!用时=%.3f' % (components_trial_key_resp.rt if components_trial_key_resp.rt else 3.0)
feedback_text_color = 'red'
如果没有按下按键,反应时会返回一个空list,所以我需要传入3s(超时的时间,后续数据处理时会把所有大于2s的数据都剔除)
Text组件配置:
调整文字颜色:
演示
运行一下看看:
按下“上方向键”
按F或J
反馈信息:
根据原文,做出反应或超时后,还需要添加一个800ms的空屏,这里没有说是包含了反馈时间还是不包含,而且我不知道空屏的组件是什么,所以选择了Text组件并删除了所有文字
实测可以达到效果,如果有更好的办法也可以进一步探讨。