#csv #table #condition #categorical #group #fisher #contingency

app csv_fish

CSV 分类数据分析器。根据指定的行/列分组条件生成2x2列联表,并应用Fisher精确检验。

4 个版本

0.2.4 2021年2月13日
0.2.3 2019年3月24日
0.2.2 2019年3月22日
0.2.0 2019年3月21日

数据库接口 中排名第 1746

每月下载量 36

GPL-3.0+

29KB
559

CSV Fish

CSV 分类数据分析器。根据指定的行/列分组条件生成2x2列联表,并应用Fisher精确检验。

安装

如果您不想自己构建程序(请参阅下面的说明),您可以通过Cargo工具获取它。首先 安装Cargo,然后运行

cargo install csv_fish

用法

要使用程序,指向数据、分组规范和所需的输出位置

csv-fish --data data.csv --groups groups.csv --output output.csv

请参阅 示例文件 了解文件内容的相关灵感,并在使用程序之前阅读以下输入/输出规范。

分组 CSV 文件包含在SQLite中执行的SQL查询。不要在您无法信任的输入文件上运行程序。

输入

  • 所有CSV输入都应使用分号分隔。

  • 数据 CSV -单个样本的分类变量值。

    • 第一行是标题 - 数据集中分类变量的名称。每一行后续表示一个样本。

    • 每一列代表一个分类变量。

    • 每个单元格代表给定样本的给定分类变量的值。

    • 在运行任何数据查询之前,所有单元格值都去除了前后空白,以防止意外不匹配。(不要使用前后空白作为数据中意图不同的区分器。)

    • 支持每个分类变量超过两个可能的值。

  • 分组 CSV -选择要测试的组的SQL。

    • 如果您不熟悉SQL,可以快速了解WHERE条件如何工作,以及您可以在其中使用的逻辑运算符

    • 第一行是标题,后续行表示组(选择组的条件)。

    • 条件是用于选择列联表的行、列,或同时选择行和列。

      • 当使用仅行和仅列条件时,程序将每个仅行条件与每个仅列条件(笛卡尔积)组合,以生成行和列条件,然后这些条件被用于生成列联表。

      • 当使用行和列条件时,分组 CSV 文件中的每一行都对应一个列联表。

      • 可以在单个“组CSV”文件中将行仅条件和列仅条件与行列条件结合起来。

      • 请参阅示例文件,它们可能比千言万语的描述更好。

    • “组CSV”的标题必须是

      condtype;filter;r1cond;r2cond;c1cond;c2cond
      
    • condtype - 必需 - 值可以是 rowcolrowcolrowcol 类型用于分别指定行和列的条件,而 rowcol 类型则同时指定这些条件。

    • filter - 可选 - 在执行Fisher精确检验之前,应用于所有数据的初始SQL WHERE条件。可用于在执行任何其他操作之前缩小样本集。

      • 如果你的数据包含一些分类变量未知(空单元格)的样本,你可能想添加筛选条件,这样使用该变量的查询就不会使用这些样本。 例如,my_var != ''。请参阅groups.csv示例。由于filter是SQL,因此如果需要引用多个列,可以在条件中使用运算符(如AND)。
    • r1cond - condtyperowrowcol时必需 - 选择第1行的SQL WHERE条件。

    • r2cond - 可选 - 选择第2行的SQL WHERE条件。如果为空,则使用r1cond的补码(结果仍受filter的限制)。

    • c1cond - condtypecolrowcol时必需 - 选择第1列的SQL WHERE条件。

    • c2cond - 可选 - 选择第2列的SQL WHERE条件。如果为空,则使用c1cond的补码(结果仍受filter的限制)。

    • 为了避免r1cond//r2cond或c1cond//c2cond之间的样本重叠,建议不要使用空的r2condc2cond,并在需要时使用filter预先选择一个更窄的样本集(例如,跳过具有未知值的样本),然后仅使用r1condc1cond进行行/列选择,使得第二行/列始终是第一行/列的补码。

输出

  • 结果CSV - Fisher精确检验结果。

    • 第一行是标题,随后的每一行代表一个Fisher精确检验。

    • 标题是

      filter;r1cond;r2cond;c1cond;c2cond;r1c1;r1c1;r2c1;r2c2;fisher_l;fisher_r;fisher_2t
      
    • 前5列中的值与输入的“组CSV”中的值相同。

    • r1c1,r1c2,r2c1,r2c2列中的值是列联表中满足相应条件的样本计数。

    • fisher_l,fisher_r,fisher_2t是Fisher精确检验的左侧、右侧和双尾p值。

构建

仅在Linux上进行测试。要构建二进制文件

make

要运行所有测试

make test

如果你愿意冒险,也可以为Windows交叉编译程序。这需要podman。在运行脚本之前,请务必阅读脚本。然后运行它

bash tools/compile-for-windows.sh

许可证

GNU GPL v3+

依赖项

~24MB
~434K SLoC