凝视数据R包跳视分析中的问题

问题描述 投票:0回答:1

我以x / y坐标和时间戳的形式获得了眼睛跟踪注视数据。

现在我想使用R包眼跳来绘制眼跳。不幸的是,它不起作用。我想这是一个数据格式错误的问题。

我的数据:

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)

所以我的数据结构一定有问题吗?什么意思?

我希望你们中的任何一个人都可以帮助我创建这个扫视场景,如附带的sceenshot

我是R初学者。

r eye-tracking
1个回答
0
投票

在尝试分析数据之前,必须将其可视化。这将帮助您查看数据是否实际上是您认为的数据,并定性地显示某些数据质量问题的程度。

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

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

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

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

提示:使用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')

© www.soinside.com 2019 - 2024. All rights reserved.