眼动数据R包扫视分析中的问题
Posted
技术标签:
【中文标题】眼动数据R包扫视分析中的问题【英文标题】:Problems in the analysis of gaze data R package saccades 【发布时间】:2019-07-26 14:37:27 【问题描述】:我获得了 x/y 坐标和时间戳形式的眼动追踪注视数据。
现在我想使用 R 包 saccades 绘制 saccades。不幸的是,它不起作用。我猜这是数据格式错误的问题。
我的数据:
head(EUFKDCDL_Q09AS_saccades)
# A tibble: 6 x 4
time x y trial
<dbl> <dbl> <dbl> <dbl>
1 1550093577941 732 391 1
2 1550093577962 706 320 1
3 1550093577980 666 352 1
4 1550093578000 886 288 1
5 1550093578017 787 221 1
6 1550093578037 729 302 1
无效的代码:
fixations <- detect.fixations(EUFKDCDL_Q09AS_saccades)
detect.fixations(EUFKDCDL_Q09AS_saccades) 中的错误: 没有检测到扫视。出了点问题。
应该根据 github (https://github.com/tmalsburg/saccades) 工作的完整代码:
library(saccades)
data(samples)
head(samples)
time x y trial
1 0 53.18 375.73 1
2 4 53.20 375.79 1
3 8 53.35 376.14 1
4 12 53.92 376.39 1
5 16 54.14 376.52 1
6 20 54.46 376.74 1
fixations <- detect.fixations(samples)
head(fixations[c(1,4,5,10)])
trial x y dur
0 1 53.81296 377.40741 71
1 1 39.68156 379.58711 184
2 1 59.99267 379.92467 79
3 1 18.97898 56.94046 147
4 1 40.28365 39.03599 980
5 1 47.36547 35.39441 1310
diagnostic.plot(samples, fixations)
所以我猜我的数据结构一定有问题?什么意思?
我希望你们中的任何人都可以帮助我创建这个扫视图,如所附的截图所示
我是 R 初学者。
【问题讨论】:
我不认为这是数据格式的问题,因为我不是这个工作领域的专家,我相信这个问题是你在该领域的专业知识可以帮助你的,因为示例:您确定您的数据具有可被此包中使用的算法检测到的注视点吗? 函数的文档说:This function uses a velocity-based detection algorithm for saccades proposed by Engbert and Kliegl. Anything between two saccades is considered to be a fixation. Thus, the algorithm is not suitable for data sets containing episodes of smooth pursuit eye movements.
请参阅下面的答案,但您确实应该指定数据的来源。例如眼动仪模型、采样率、值代表什么(可能是像素而不是视角等)、数据是如何导出的。
【参考方案1】:
在您尝试分析您的数据之前,您必须将其可视化。这将帮助您了解数据是否真的如您所想,并定性地显示某些数据质量问题的程度.
如果您的数据实际上是一个注视数据时间序列,那么您可以像上面的示例一样将其可视化,只需将x
绘制为time
的函数,将y
绘制为time
的函数。 这不需要您首先通过扫视检测算法运行数据。您上面显示的图只是原始数据的可视化,其中叠加了扫视检测(灰线),但是是可选步骤。
现在看看你的原始数据:如果你按照建议绘制它,我怀疑它不会是你想象的那样。将其与您从https://github.com/tmalsburg/saccades 发布的示例数据进行比较。该数据集显示了几个特征:
原始数据以亚像素精度(即小数点后 2 位)给出。这是典型的校准眼睛数据,其中任何点的估计凝视信号是校准过程的输出,该过程通过一个连续函数将坐标从原始眼睛视频数据映射到观察的图像坐标,该连续函数产生似乎超过的插值这些图像的分辨率。但是,您的数据由整数组成,这是不寻常的(但可能)。 更重要的是,Github 示例数据还表明,每个样本位置与其前一个样本位置变化很小(例如,x
位置从一个样本到下一个样本从 53.18
移动到 53.20
)。这是注视期间真实注视数据的典型特征。在扫视期间,相邻样本的变化当然要快得多,您通常可以通过向下滚动一列值并注意相邻值快速变化的位置来直观地检测到它们。将此与您的数据进行比较,这是完全不同的:值从一个样本到下一个样本不规则地上下反弹(例如,在连续样本中从 732
到 706
到 666
到 886
)。这不是典型的良好注视数据信号。 所以绘制你的时间序列,看看你实际上有什么。
我怀疑您的数据中存在不连续性,这将导致任何扫视或注视检测算法失败。在尝试解析为扫视和注视之前,请尝试弄清楚您的数据实际代表什么,和/或质量问题是什么。
提示:使用ggplot2
库来可视化您的数据:
library(ggplot2)
ggplot(data = EUFKDCDL_Q09AS_saccades,
aes(x = time)) + # define time series x axis
geom_line(aes(y = x), colour = 'red') + # plot horizontal data
geom_line(aes(y = y), colour = 'yellow') # plot vertical time series too
如果没有安装ggplot2
,请先致电install.packages('ggplot2')
。
【讨论】:
这个评论太棒了,对我帮助很大!感谢您抽出宝贵的时间和建议!这简直太棒了……你是我的英雄!以上是关于眼动数据R包扫视分析中的问题的主要内容,如果未能解决你的问题,请参考以下文章