眼动数据 R 包扫视分析中的问题
Problems in the analysis of gaze data R package saccades
我得到了 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)
Error in detect.fixations(EUFKDCDL_Q09AS_saccades) :
No saccades were detected. Something went wrong.
根据 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初学者。
在您尝试分析数据之前,您必须将其可视化。这将帮助您了解数据是否真的如您所想,并定性地显示其程度一些数据质量问题。
如果您的数据实际上是一个注视数据时间序列,那么您可以像上面的示例一样将其可视化,只需将 x
绘制为 time
和 y
的函数即可time
的函数。 这不需要您先通过眼跳检测算法 运行 数据。您上面显示的图只是原始数据的可视化,眼跳检测叠加(灰线),但这是一个可选步骤。
现在是你的原始数据:如果你按照建议绘制它,我怀疑它不会是你想的那样。将其与您从 https://github.com/tmalsburg/saccades 发布的示例数据进行比较。该数据集显示了几个特征:
- 原始数据以亚像素精度给出(即精确到小数点后两位)。这是典型的校准眼睛数据,其中任何点的估计凝视信号是校准过程的输出,该校准过程通过连续函数将坐标从原始眼睛视频数据映射到观察到的图像坐标,该函数产生的插值似乎超过这些图像的分辨率。但是,您的数据由整数组成,这是不寻常的(但有可能)。
- 更重要的是,Github 示例数据还显示每个样本位置与其前一个位置的变化很小(例如
x
位置从 53.18
移动到 53.20
从一个样本到下一个)。这是注视期间典型的真实注视数据。在扫视期间,相邻样本当然会开始更快地变化,您通常可以通过向下滚动一列值并注意相邻值快速变化的位置来简单地直观地检测它们。将此与您的数据进行比较,这是完全不同的:值从一个样本到下一个样本不规则地上下反弹(例如,从 732
到 706
到 666
到 886
连续样本)。这 不是 典型的良好注视数据信号。 所以绘制你的时间序列,看看你在那里实际拥有什么。
我怀疑您的数据存在不连续性,这会导致任何扫视或注视检测算法失败。在尝试解析为眼跳和注视之前,尝试弄清楚您的数据实际代表什么,and/or 质量问题是什么。
提示:使用 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')
。
我得到了 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)
Error in detect.fixations(EUFKDCDL_Q09AS_saccades) : No saccades were detected. Something went wrong.
根据 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初学者。
在您尝试分析数据之前,您必须将其可视化。这将帮助您了解数据是否真的如您所想,并定性地显示其程度一些数据质量问题。
如果您的数据实际上是一个注视数据时间序列,那么您可以像上面的示例一样将其可视化,只需将 x
绘制为 time
和 y
的函数即可time
的函数。 这不需要您先通过眼跳检测算法 运行 数据。您上面显示的图只是原始数据的可视化,眼跳检测叠加(灰线),但这是一个可选步骤。
现在是你的原始数据:如果你按照建议绘制它,我怀疑它不会是你想的那样。将其与您从 https://github.com/tmalsburg/saccades 发布的示例数据进行比较。该数据集显示了几个特征:
- 原始数据以亚像素精度给出(即精确到小数点后两位)。这是典型的校准眼睛数据,其中任何点的估计凝视信号是校准过程的输出,该校准过程通过连续函数将坐标从原始眼睛视频数据映射到观察到的图像坐标,该函数产生的插值似乎超过这些图像的分辨率。但是,您的数据由整数组成,这是不寻常的(但有可能)。
- 更重要的是,Github 示例数据还显示每个样本位置与其前一个位置的变化很小(例如
x
位置从53.18
移动到53.20
从一个样本到下一个)。这是注视期间典型的真实注视数据。在扫视期间,相邻样本当然会开始更快地变化,您通常可以通过向下滚动一列值并注意相邻值快速变化的位置来简单地直观地检测它们。将此与您的数据进行比较,这是完全不同的:值从一个样本到下一个样本不规则地上下反弹(例如,从732
到706
到666
到886
连续样本)。这 不是 典型的良好注视数据信号。 所以绘制你的时间序列,看看你在那里实际拥有什么。
我怀疑您的数据存在不连续性,这会导致任何扫视或注视检测算法失败。在尝试解析为眼跳和注视之前,尝试弄清楚您的数据实际代表什么,and/or 质量问题是什么。
提示:使用 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')
。