r - 为响应时间数据创建异常值函数

标签 r outliers

我正在分析实验中的响应时间 (RT) 数据。在这些实验中,每个人完成一定数量的各种试验类型的试验。仅使用来自正确试验的 RT 数据;因此,每个受试者的每种试验类型要分析的 RT 数量有所不同。 我正在尝试创建一个离群值函数,该函数应用标准差截止值,该截止值取决于要分析的试验数量(Van Selst & Jolicoeur,1994)。例如,如果第一个受试者有 100 次试验类型 A 的试验,我想计算该受试者 A 试验的平均值和标准差,然后应用标准差截止值(例如,试验大于平均值加或减的绝对值)所指示的标准偏差数得分​​为 0)。

下面列出了我想要使用的标准差截止值:

#n = # of trials
if n < 4 then SDout=3
if n == 4 then SDout=1.458
if n == 5 then SDout =1.68
if n == 6 then SDout=1.841
if n == 7 then SDout=1.961
if n == 8 then SDout=2.050
if n == 9 then SDout=2.12
if n == 10 then SDout=2.173
if n == 11 then SDout=2.22
if n == 12 then SDout=2.246
if n == 13 then SDout=2.274
if n == 14 the SDout=2.31
if n >= 15 & if n < 20 then SDout=2.326
if n >= 20 &if n < 25 then SDout=2.391
if n >= 25 & if n < 30 then SDout=2.41
if n >= 30 & if n < 35 then SDout=2.4305
if n >= 35 & if n < 50 then SDout=2.45  
if n >= 50 & if n < 100 then SDout=2.48
if n >= 100 then SDout=2.5

我的数据有 3 列:id(受试者标识符)、ttype(试验类型)和 RT。

本质上,我需要这个函数做的是:获取每个试验类型的每个受试者的 RT 平均值、SD 和试验次数,然后根据 SDout 乘以 SD 并添加所得值测试 RT到平均 RT。最后,我希望该函数创建一个新列,其中外围试验的得分为 0,“良好”的试验的得分为 1。

我认为实现此目的的一种方法是使用嵌套循环,并将试验类型嵌套在主题内。然而,编写这个函数超出了我的技能水平,所以我寻求帮助来创建它。如果有人有建议或技巧,或者非循环的方法来实现这一点,我将非常感激。

谢谢

最佳答案

因此,您希望进行 Van Selst 和 Jolicoeur (1994) 类型的异常值检查。从那时起,关于 RT 的工作已经开展了很多,从强有力的论据认为任何此类异常值拒绝都是站不住脚的(例如 Ulrich & Miller,1994),到如何以其他方式(如转换分布)纠正问题的建议。此外,一些人建议分析前高斯假设下的分布,并对分布的正态部分和指数部分发生的情况赋予不同的含义。

一般来说,您收集的任何类型的数据的值都会不时超出几个标准差。而且你看到的它们的数量在像RT这样的倾斜分布中会被夸大。通常,像您尝试的异常值删除会删除 3% 的值。大约 3% 是关于具有这些 SD 截止值的 RT 的预期(我认为这是 Miller 的一篇论文表明了这一点)。因此,您实际上并没有删除异常值,而是删除了响应分布中的真实数据。

我建议你不要这样做。 RT 有两个问题。一是你可能会遇到真正有问题的异常值。另一个是分布是倾斜的(由于 CLT,在具有足够大的 RT/受试者数量的平均 RT 中将其删除)。通过异常值拒绝来纠正后者会导致很多问题。纠正前者需要异常值拒绝技术来帮助识别真正的异常值。

通常您还会有准确性测量。给定 react 时间的准确度函数具有特征模式。 RT 的准确度通常会很快上升,然后保持这种状态一段时间,然后在稍后的时间点下降(即使刺激始终可用)。您可以使用此函数的分析来消除本身不是异常值但不反射(reflect)您希望分析的内容的 RT。低于特定准确度阈值的早期 RT 实际上不会是对刺激的响应。它们将是猜测和预期。后面的 RT 高于准确度阈值,但在准确度开始下降之后,不会反射(reflect)对刺激开始的 react ,而是反射(reflect)稍后做出的决定。通常,这两者都是少量 RT(尽管对象识别具有令人惊讶的模式)。

(当然,在很多情况下,您必须改变这些类型的评估。如果是响应兼容性任务,早期 RT 可能是唯一插入效果的因素。如果任务具有非常大的效果,例如在搜索功能中,这样的分析可能是站不住脚的。当然,如果你没有准确度测量,那就很困难。在不同的情况下考虑不同的方法。但不要因为 RT 的 z 分数很大而盲目地抛弃它。 )

关于r - 为响应时间数据创建异常值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021641/

相关文章:

r - R中一行的相关系数

从 LIST 中的字符串中删除数字

r - 使用正则表达式修改特定列名

r - 如何检测数据框列中的异常值?在 R

python - 隔离林

r - 在 R 中将 NA 设置为 0

r - 来自 Stata 的 xtpcse - 如何在 R 中重写

r - 从数据框中提取具有最高值和最低值的行

python - 从 matplotlib : boxplot 中查找离群点

hadoop - 大数据中的EDA