You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SAS中创建2×2表格执行Fisher精确检验结果异常,如何修正?

修正SAS中2×2列联表的Fisher检验数据创建问题

你当前的代码错误在于数据输入逻辑:input var1 var2 @@会把1 6 7 2解析为两个独立观测,即(var1=1, var2=6)和(var1=7, var2=2)。Proc Freq处理时会将这两个组合各计1次,其余单元格计0,最终生成的列联表自然是0、1、1、0,完全偏离了你需要的1、6、7、2的2×2表格结构。

以下是两种正确的修正方案:

方案1:单元格频数输入(推荐)

直接定义行、列、频数三列,通过weight语句指定频数变量,适合大频数场景,效率更高:

data my_table;
  input row col count;
  datalines;
1 1 1
1 2 6
2 1 7
2 2 2
;

proc freq data=my_table;
  tables row*col / fisher;
  weight count; /* 告诉SAS用count列作为单元格频数 */
run;

方案2:原始观测堆叠输入

将每个单元格的频数展开为对应数量的重复观测,适合小频数场景:

data my_table;
  input var1 var2 @@;
  datalines;
1 1
1 2 1 2 1 2 1 2 1 2 1 2
2 1 2 1 2 1 2 1 2 1 2 1 2 1
2 2 2 2
;

proc freq data=my_table;
  tables var1*var2 / fisher;
run;

执行任意一种方案后,Proc Freq都会生成正确的2×2列联表,并输出对应的Fisher精确检验结果。

内容的提问来源于stack exchange,提问作者Dave Twickenham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:26:06