使用PROC FREQ在SAS中进行卡方检验

时间:2015-10-10 14:59:58

标签: sas

我们的大学正在强迫我们使用PROC FREQ进行旧学校卡方检验(我知道proc单变量的选项)。

我已经生成了一个Beta = 15的理论指数分布(并且费力地写下了这些值),并且我生成了10000个随机变量,这些变量具有指数分布,β= 15。

我尝试通过datalines命令首先输入我的随机变量的频率(在每个间隔中):

data expofaktiska;
    input number count;
    datalines;
    1 2910
    2 2040
    3 1400
    4 1020
    5 732
    6 531
    7 377
    8 305
    9 210
    10 144
    11 106
    12 66
    13 40
    14 45
    15 29
    16 16
    17 12
    18 8
    19 8
    20 3
    21 2
    22 0
    23 1
    24 2
    25 0
    26 2
;
run;

这似乎有效。

然后我尝试将这些值与理论值进行比较,使用proc freq中的卡方检验(我们应该使用的那个)

如下:

proc freq data=expofaktiska;
weight count;
tables number / testp=(0.28347 0.20311 0.14554 0.10428 0.07472 0.05354 0.03837 0.02749 0.01969 0.01412 0.01011 0.00724 0.0052 0.00372 0.00266 0.00191 0.00137 0.00098 0.00070 0.00051 0.00036 0.00026 0.00018 0.00013 0.00010 0.00007) chisq;
run;

我收到以下错误:

ERROR: The number of TESTP values does not equal the number of levels. For the table of number,
       there are 24 levels and 26 TESTP values.

这可能是因为两个间隔包含0个obervations。我真的没有办法解决这个问题。

另外,我没有在结果查看器中获得卡方检验,也没有“检验概率”,我只是随机变量的频率/累积频率。

我做错了什么?理论/实际分布是​​否需要具有相同的形式(概率/频率?)

我们正在使用SAS 9.4

提前致谢!

/马格努斯

1 个答案:

答案 0 :(得分:1)

您需要在WEIGHT声明中使用ZEROS选项。

data expofaktiska;
    input number count;
    datalines;
    1 2910
    2 2040
    3 1400
    4 1020
    5 732
    6 531
    7 377
    8 305
    9 210
    10 144
    11 106
    12 66
    13 40
    14 45
    15 29
    16 16
    17 12
    18 8
    19 8
    20 3
    21 2
    22 0
    23 1
    24 2
    25 0
    26 2
;
run;
proc freq data=expofaktiska;
weight count / zeros;
tables number / testp=(0.28347 0.20311 0.14554 0.10428 0.07472 0.05354 0.03837 0.02749 0.01969 0.01412 0.01011 0.00724 0.0052 0.00372 0.00266 0.00191 0.00137 0.00098 0.00070 0.00051 0.00036 0.00026 0.00018 0.00013 0.00010 0.00007) chisq;
run;