/Fittslaw-Analyzer

Analyze results from fitts law experiment (HCI-THU)

Primary LanguagePythonMIT LicenseMIT

Fittslaw-Analyzer

Fitts law是人机交互领域很重要的定理之一,由保罗·费茨(Paul M. Fitts)博士受信息论启发提出。该定律主要研究使用指定设备到达并点击一个目标的时间,与当前设备位置和目标距离(A)以及目标大小(W)的关系。Fitts定律用公式表述为:t = a + b log2(A/W + 1)。

Fitts law实验主要有以下步骤:

  1. 针对不同用户和不同使用设备(如鼠标、触摸板、手机等)在实验平台(Tsinghua人机交互):http://39.97.170.246/fitts/ 进行实验,采集不同宽度、不同距离的目标下用户的点击时间。
  2. 对收集到的数据进行处理,并做回归分析和anova方差分析。

轮子介绍

这个轮子是在做人机交互作业的时候顺手写的,有问题的地方欢迎指正~

一般功能

  • 对收集到的数据,生成其散点分布图。
  • 对收集到的数据,针对每一种设备(device),对不同用户以及整体数据进行线性回归分析,确定Fitts law中a,b的值以及相关系数。这样可以方便用户对于不同设备直观比较他们的a,b值。
  • 线性回归结果将以markdown表格的形式在命令行中打印,可直接粘贴到markdown编辑器中;同时将在根目录下生成不同设备的拟合直线图表。
  • 对收集到的数据,可针对指定变量进行anova方差分析,从而确定某变量是否直接影响用户的点击时间。

说明

  • 此工具对于同一用户同一设备,将相同A和W的数据取平均,并作为一个数据点存储。
  • 丢弃了所有time=0的数据点,认为这些点为离群数据。
  • 此工具采用的是log2(A/W + 1)作为ID值,而不是log2(2A/W)。

安装和使用

安装依赖

pip install -r requirements.txt

使用

把所有数据(.csv)放在一个路径下,比如./data,这里只需要保证每个.csv文件是合法格式即可(比如从实验平台上直接copy的结果),工具会在给定目录及其子目录下查找所有.csv文件并自动进行解析。

运行demo.py即可:

python demo.py ./data [-r] [-a] [-g] [-p]

-h查看帮助;

-g在demo.py同目录下生成散点分布图;

-r可进行回归分析,回归分析的结果将在命令行中以markdown表格格式打印(可直接复制),并同时绘制拟合直线存于demo.py同目录下;生成结果包括各个设备所有被试者的拟合直线、最终拟合结果。

-a可进行anova方差分析,默认是分析“用户(name)”和“设备(device)”两个因素对时间的影响,如果需要更改可以在-a后加入,比如要分析device和width:

python demo.py ./data -a device width

可供分析的变量有:namedevicewidthdistance

关于anova方差分析

使用工具中的方差分析会得到如下一张表:

df sum_sq mean_sq F PR(>F)
factor_1
factor_2
Residual

这是一张多因素方差分析表,是anova_lm生成的分析结果。第一列factor_1factor_2表示参与分析的因素,Residual表示误差。第一行df表示自由度,sum_sq表示离差平方和,mean_sq表示均方离差,F表示F值,PR(>F)表示F值所对应的显著水平α。

实验中一般用PR或者F值判断某个因素对结果的影响程度,PR<0.05认为有影响,否则不能拒绝0假设(认为不同组数据其实是同分布)。

联系作者

项目作者为:@pptrick(Pan Chuanyu) all rights reserved

有任何问题可以邮件联系:pancy17@mails.tsinghua.edu.cn

更新信息

  • 2021/2/3更新:拟合的最终结果需要对所有用户,相同A/W数据取平均作为一个拟合的数据点,而不是将所有原始数据点一起拟合;这样做是因为不同用户间的偶然(离群)误差不应该影响拟合,如果不取平均线性系数会非常小,这一点没注意的话HCI作业会被扣分。因此建议使用该工具时重点突出最终的拟合结果,而不是所有用户单独拟合的结果。

    注意,这样处理过后,如果数据中只有一个用户,是有可能出现该用户拟合直线和拟合结果不一样的情况的,因为后者对A/W相同的取了平均。