【发布时间】:2014-09-21 18:03:53
【问题描述】:
我已经学习 Gnuplot 大约一天了,我想使用 boxplot 快速发现数据集中的异常值。
假设我正在做一个实验:
- 10 个主题
- 我让 10 个受试者重复一项任务 100 次,以达到 3 个特定目标。
- 我收集了他们到达 Target1、Target2、Target3 的次数。
这些结果收集在文件 data_File_new.dat 中,如下所述:
Name Target1 Target2 Target3
subject1 10 30 50
subject2 11 31 51
subject3 9 29 49
subject4 12 32 52
subject5 8 28 48
subject6 13 33 53
subject7 7 27 47
subject8 50 34 54
subject9 6 50 46
subject10 15 35 20
现在我根据这些数据创建一个箱线图
file = 'data_File_new.dat'
header = system('head -1 '.file);
N=words(header)
set title 'BoxPlot Subject Success'
set ylabel 'Number Of Success'
set xtics border in scale 0,0 nomirror norotate offset character 0, 0, 0 autojustify
set xtics norangelimit
set xtics rotate -45
set xtics ('' 2)
set for [i=2:N] xtics add (word(header, i) i)
set style data boxplot
plot for [i=2:N] file using (i):i
所以结果是一个箱线图,其中异常值被绘制为实心点(我想发布图片,但我需要 10 个声望才能发布图片)。它告诉我是否存在异常值。 但是我想知道更多我想知道谁是异常值,即:
- 主题 8 是目标 1 的异常值
- 主题 9 是目标 2 的异常值
- 主题 10 是目标 3 的异常值
由于 Gnuplot 知道这些点是异常值,我希望 Gnuplot 将它们存储在某种列表中。我想告诉 Gnuplot '绘制异常值并用对应于它们所属行的第一列(subjectx)的单词标记它们'。
然后当我打开箱线图时,我一眼就能识别出不仅有异常值,而且还有他们是谁。
有人知道怎么做吗?我在论坛上看到有人在 R 中这样做,但在 Gnuplot 中却没有。
【问题讨论】:
-
不,您不能自动标记这些异常值。统计计算在内部完成,您不能将标签“附加”到任何结果。如果您知道这些值,则只能稍后使用
labels绘图样式进行一些标签。 -
谢谢。我将在 R 中寻找解决方案。
-
@Christoph 如果您有兴趣,我已经发布了解决方案。
-
它有效。非常感谢您的专业知识,Tom,非常有帮助。
标签: gnuplot