Psychopy | 第4期:实验数据的收集与处理

本文介绍了如何使用Psychopy收集和处理实验数据,包括被试信息录入、反应时和正确率记录。通过gui收集被试信息,利用Window的flip()方法计算反应时,并记录正确与否。完整代码展示了flanker范式的实验流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

img
img
Hello,
这里是行上行下,我是喵君姐姐~

最近在家实在无聊,所以只好安安心心学习啦。你最近在家干什么呢?

今天,继续邀请阿槑给你带来Psychopy系列教程,带来实验数据的收集与处理,希望你会继续喜欢并且一直支持哟~

1 相关概念的简单引入

在前几期,我们已经学习了Psychopy入门数据类型与运算符条件与循环flanker范式的完整编程

但是,在心理学实验中,除了要在屏幕上呈现想要的刺激,我们还希望计算机能够帮助我们收集被试基本信息、反应时以及正确率等指标。

那么如何达到这一目的呢?

2 被试信息录入

对于被试信息,我们将使用 psychopy 中的 gui 来进行收集,所谓 gui ,就是一个被试可以在其中填写信息的对话框,如图:
img
在导入 gui 后,我们使用 gui 中的 DlgFromDict 来进行功能的实现:

from psychopy import core, gui #导入  
info = {
   
   'observer':'01_xxx','gender':['m','f'],'age':18}  
dlg = gui.DlgFromDict(info, title='flanker', order=['observer','gender','age']) #设置gui  
if dlg.OK: #单击 OK 后的操作      
	pass #占位符  
else:      
	core.quit()  

可以看到,我们先定义了一个字典来储存需要填写信息的标题以及对应的默认内容,之后我们使用 DlgFromDict 将字典导入 gui 并设置 gui 的标题(title)以及内容顺序(order)。

最后用一个 if 函数来控制 OK 按键使其继续后面的操作,或者 Cancel 按键退出整个程序。因为这里的退出需要使用 core,因此同样需要在开头进行导入。

下一步,我们需要确定一下我们最终记录的数据文档的输出路径及文件名。

首先,我们在程序所在路径,也就是我们程序脚本所在的位置建立一个 data 文件夹用于存放数据。

之后,我们先以字符串的形式定义文件名,为了防止文件重复,将会通过 time 获取当前系统时间并添加到文件名中。

import time  
date = time.strftime("_20%y_%m_%d_%H%M", time.localtime()) #获取当前时间  
file = 'data/'+info['observer']+'_'+info['gender']+'_'+str(info['age'])+date #文档名(含路径)  

这里的 ‘%y’ , ‘%m’, ‘%d’, ‘%H%M’ 被称为占位符。所谓占位符,可以理解为先占据一个位置,以便之后添加需要填进去的内容。当需要填入的内容过长或需要进行实时获取时,我们常用占位符来暂时补齐位置。

不同性质的内容需要不同的占位符,常见的占位符包括 ‘%s’ 字符串,’%d’ 整数,’%f’ 浮点数。

当我们获得了文件名以后,使用 with open…as… 进行相应的文档操作。

with open("%s.csv"%(file),'a') as D: #写入表头      
	D.write('flanker'+','+'center'+','+'RT'+','+'accuracy'+'\n') 

简要分析如下:
img
一般来讲,实验过程中所输出的数据均写入 csv 文档中,csv 文档可以使用 excel 打开并比我们平时用的 xls 要更加简单。在 csv 文档中,不同单元格之间仅仅以逗号作为分隔符来进行分隔。

该段代码的输出效果如下:
img
除了所介绍的这种简便的方法,对于文件夹、文档的操作还可以使用 python 中的 os 来进行操作,但是 os 对于含有中文的路径不是特别友好,因此这里将不再介绍。

当我们准备好文档后,就可以使用 with open…as… 不断地对文档内容进行写入,只需要与表头相对应即可。

对于我们的例子 flanker 范式来说,我们所要收集的是被试的每次反应的反应时以及正确与否。

3 反应时记录

在 psychopy 的 Window 中,flip() 方法正好含有该方法运行时距离整个程序开始时的时间,因此我们只需要找到反应屏的 flip() 时间与前一个屏的 flip() 时间做差,就可以得到被试的反应时间。

from psychopy 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

壹脑云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值