我以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初学者。
在尝试分析数据之前,必须将其可视化。这将帮助您查看数据是否实际上是您认为的数据,并定性地显示某些数据质量问题的程度。
如果您的数据实际上是凝视数据时间序列,那么您可以将上面的示例中的x
绘制为time
和y
的函数,将其可视化为time
的函数。这不需要您首先通过扫视检测算法运行数据。您在上面显示的图表只是原始数据的可视化,叠加了扫视检测(灰线),但这是一个可选步骤。
现在你的原始数据:如果你按照建议绘制它,我怀疑它不会是你认为的那样。将它与您从https://github.com/tmalsburg/saccades发布的示例数据进行比较。该数据集显示了几个特征:
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')
。