我们的大学正在强迫我们使用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
提前致谢!
/马格努斯
答案 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;