0

我得到了 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 初学者。

4

1 回答 1

0

在尝试分析数据之前,您必须将其可视化。这将帮助您了解数据是否真的如您所想,并定性地显示某些数据质量问题的程度。

如果您的数据实际上是一个注视数据时间序列,那么您可以像上面的示例中一样将其可视化,只需将其绘制x为 的函数timey的函数即可time这不需要您首先通过扫视检测算法运行数据。您在上面显示的图只是原始数据的可视化,其中叠加了扫视检测(灰线),但这是一个可选步骤。

现在到你的原始数据:如果你按照建议绘制它,我怀疑它不会是你想象的那样。将其与您从https://github.com/tmalsburg/saccades发布的示例数据进行比较。该数据集显示了几个特征:

  • 原始数据以亚像素精度(即小数点后 2 位)给出。这是典型的校准眼睛数据,其中任何点的估计凝视信号是校准过程的输出,该过程通过一个连续函数将坐标从原始眼睛视频数据映射到观察的图像坐标,该连续函数产生似乎超过的插值这些图像的分辨率。但是,您的数据由整数组成,这是不寻常的(但可能)。
  • 更重要的是,Github 示例数据还显示,每个样本位置与其前一个样本位置变化很小(例如,从一个样本到下一个样本的位置移动)x。这是注视期间真实注视数据的典型特征。当然,在扫视期间,相邻样本开始变化得更快,您通常可以通过向下滚动一列值并注意相邻值快速变化的位置来直观地检测到它们。将此与您的数据进行比较,这是完全不同的:值从一个样本到下一个样本不规则地上下反弹(例如,连续样本中的从到到到)。这不是典型的良好注视数据信号。53.1853.20732706666886所以绘制你的时间序列,看看你实际上有什么。

我怀疑您的数据中存在不连续性,这将导致任何扫视或注视检测算法失败。在尝试解析为扫视和注视之前,请尝试弄清楚您的数据实际代表什么,和/或质量问题是什么。

提示:使用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')请先致电。

于 2019-03-06T05:19:02.053 回答