【问题标题】:Suppressing Fisher's exact test for 2x2 table in proc freq在 proc freq 中抑制 Fisher 对 2x2 表的精确检验
【发布时间】:2016-01-04 17:56:57
【问题描述】:

规格:旧 Solaris 安装上的 SAS 9.3。在手机上发表评论;如果我的格式有问题,我很抱歉。

我有一些较大的数据集(n~=30k 患者),我想运行一些 2x2 表并为它们获取卡方 p 值。不幸的是,当您询问 2x2 表的卡方统计数据时,SAS 以其无限的智慧决定将 Fisher 精确检验作为默认输出的一部分。由于样本量大,SAS 在尝试 Fisher 精确检验时会抛出警告:

“警告:对于此样本量,无法以足够的精度计算 Fisher 精确检验。”

(如果 SAS 研究所的任何人正在阅读:朋友们,我没有要求进行该测试是有原因的!)

我需要这个警告不要发生,因为我将这个 SAS 调用嵌入到一个 GNU make 脚本中,并且 make 将在出现警告时停止。我很确定 NOWARN 只会抑制“卡方可能不准确,单元格大小这么小”警告,而不是这个警告。在这种情况下,有没有办法抑制费舍尔的精确测试本身?我也尝试过手动计算卡方,但我需要一个包含整体 N 的输出数据集,并且我不能使用不需要除 N 之外的任何统计数据的 OUTPUT 语句。

编辑:这是一个导致问题的表,{Nij} 向上取整。

var1,var2: N
-------------------
P,X: 10000
P,Y: 3600
Q,X: 13000
Q,Y: 1000

【问题讨论】:

  • 你能发布你的代码吗?当我要求进行 CHISQ 时,我也没有得到 Fisher 测试,所以我想知道您是如何要求进行 CHISQ 测试的。
  • @Reeza 实际上,它会产生它 - 但据我所知,仅适用于 2x2 正方形。
  • 我相信这是基于单元格的数量,而不是样本量。如果它足够聪明地键入样本量,我希望它不会在我的情况下这样做。
  • @ErinMcJ 是的 - 在我发布评论(并在您制作评论时进行编辑)之后,我意识到这一点。
  • @ErinMcJ 您能否发布您的 proc freq 表,以便我们生成示例数据来复制您的问题。我无法生成 1000000 样本大小的警告,但我记得之前也遇到过 20K 样本大小的警告。

标签: sas


【解决方案1】:

假设您谈论的是表本身中的警告(而不是日志中的警告),您可以使用 ODS (dest.) EXCLUDE 排除该部分。

假设 HTML 是您的目的地(否则将该部分修改为 LISTING 或 PDF 之类的):

ods html exclude fishersexact;
proc freq data=sashelp.snacks;
  tables advertised*holiday/chisq;
run;
ods html exclude none;

【讨论】:

  • 或者根本不指定目的地,ODS exclude fishersexact;
  • 唉,我实际上需要一个干净的日志。
  • 警告是否出现在日志中? (即使样本大小与您的相似,我也无法向我显示警告。)
  • 是的,确实如此。我认为将其称为“样本大小”实际上是对真正问题的误导性简写……我认为单元格的相对大小也是一个因素。由于该测试涉及将表枚举为极端或更极端,因此某些观察到的组合需要比其他组合更多的枚举。对于上下文,这是更大问题空间的一个子集;我对同一组患者进行了 80 次测量,其中只有 3 次产生了这个错误。
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
相关资源
最近更新 更多